gpt4 book ai didi

c++ - 在 OpenGL 中渲染相机前面的对象

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:31 25 4
gpt4 key购买 nike

我想要一个直接放在相机前面的物体(例如球体)(比如前面的“5cm”)。移动相机时,物体应始终跟随相机移动。

在我的渲染循环中,我使用 View 矩阵的逆矩阵计算相机在世界空间中的位置:

glm::mat4 viewMatrixInverse = glm::inverse(camera->GetViewMatrix());
glm::vec3 cameraPositionWorldSpace = glm::vec3(viewMatrixInverse[3][0], viewMatrixInverse[3][1], viewMatrixInverse[3][2]);

这似乎工作正常,当我向世界原点移动时,相机位置也接近 (0,0,0)。现在,当我尝试在相机位置渲染球体时,效果非常好,相机始终位于球体的中心。

渲染部分是这样的:

sphere->ResetModelMatrix();
sphere->TranslateModel(cameraPositionWorldSpace);
sphere->Render(GL_TRIANGLES);

现在,我不想“坐在”球体内部,我宁愿将球体放置在相机前面几个单位的位置。我似乎无法弄清楚我必须如何正确地平移球体,以便它始终与相机的方向 vector 对齐。

最佳答案

在相机注视方向的位置添加一个偏移 vector :

sphere->TranslateModel(cameraPositionWorldSpace+camera->LookingDirection().normalized()*5);

关于c++ - 在 OpenGL 中渲染相机前面的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com