Opengl 计算模型的上方向向量
计算上方向向量 这是我的密码:Opengl 计算模型的上方向向量,opengl,Opengl,计算上方向向量 这是我的密码: Vector3f CameraUpVector() const { Vector3f cameraDirection = m_cameraTarget - m_cameraPosition; cameraDirection = cameraDirection.Normalize(); //////////// Vector3f cameraUp = cameraDirection.Cross(Vector3f(1.0f, 0.0f, 0.0f)); return
Vector3f CameraUpVector() const
{
Vector3f cameraDirection = m_cameraTarget - m_cameraPosition;
cameraDirection = cameraDirection.Normalize();
////////////
Vector3f cameraUp = cameraDirection.Cross(Vector3f(1.0f, 0.0f, 0.0f));
return cameraUp;
}
//////////
Vector3f cameraUp = CameraUpVector();
///////////////
p.SetCamera(m_cameraPosition , m_cameraTarget , cameraUp);
这个计算可以吗
如果没有,我如何更改它?否,您将发现相机围绕其前向矢量旋转。我将对您的代码进行如下修改(假设右手坐标系和世界上方向向量为(0,1,0)):
请注意,您应该处理相机目标位于相机位置正上方或正下方的特殊情况(通过防止发生这种情况或记录最后一个有效的相机上方向向量,并在这种情况下使用它而不是世界上方向向量)现在我的目标是(0,0,0),camrea位置是(0500,0)上方向向量是(0,1),我什么也看不见。我会试试这个函数。我的目标是从上到下转换模型。这是可能的与此功能您更正或我应该改变其他东西吗?非常感谢!!!这就是我提到的“特例”。我在回答中确实做了一些假设。在你们的世界里,一般的“向上”向量是什么?如果Y向上,而你正好在目标上方,那么就没有一个“正确”的答案。你可以在Y=0的平面上拾取任何向量。我的向量up是:Vector3f up(0.0,1.0f,0.0f);在这之后,我按照我写的和p.SetCamera(m_cameraPosition,m_cameraTarget,cameraUp)设置位置和目标;但我还是什么也看不见问题是上方向向量与相机航向是共线的。你需要使用一个垂直于航向的矢量-在你的例子中(1,0,0),(0,0,1),或者任何y=0且单位长度的矢量都可以。你的意思是将矢量3f向上更改(1.0,0.0f,0.0f)?用你写的函数?
Vector3f CameraUpVector() const
{
Vector3f cameraDirection = m_cameraTarget - m_cameraPosition;
Vector3f cameraRight = cameraDirection.Cross(Vector3f(0.0f, 1.0f, 0.0f));
Vector3f cameraUp = cameraRight.Cross(cameraDirection );
return cameraUp.Normalize();
}