我想要一个直接放在相机前面的物体(例如一个球体)(让我们说" 5cm"在前面)。移动相机时,物体应始终跟随相机的移动。
在我的渲染循环中,我使用视图矩阵的倒数来计算相机在世界空间中的位置:
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);
现在,我不想"坐着"在球体内部,我宁愿将球体定位在相机前面的几个单元中。我似乎无法弄清楚我必须如何正确地平移球体,以便它始终与相机的方向矢量对齐。
答案 0 :(得分:3)
将偏移矢量添加到相机正在查看方向的位置:
sphere->TranslateModel(cameraPositionWorldSpace+camera->LookingDirection().normalized()*5);