【发布时间】:2012-11-16 13:38:45
【问题描述】:
我一直在研究这个问题一段时间,但我找不到解决方案。 现在我的相机正确地跟随玩家的位置,但是相机的旋转出错了。如果我只使用一次旋转,它会正确运行,比如我只沿 x 轴旋转,那么它可以正常工作。但第二次我添加另一个旋转时说“y”出了问题,相机开始朝错误的方向看。
现在我的相机只有一个位置和一个旋转。
这是一些代码。
glm::vec4 cameraPosition;
//This gives the camera the distance it keaps from the player.
cameraPosition.x = 0.0;
cameraPosition.y = 0.0;
cameraPosition.z = 20.0;
cameraPosition.w = 0.0;
// mStartingModel is the rotation matrix of the player.
glm::vec4 result = mStartingModel * cameraPosition;
//here I set the camera's position and rotation. The z rotation is given a extra 180 degrees so the camera is behind the player.
CameraHandler::getSingleton().getDefaultCamera()->setPosition(Vector3f(-player->mPosition.x + result.x, -player->mPosition.y + result.y, -player->mPosition.z + result.z), Vector3f(-(player->mRotation.x + 180), -player->mRotation.y, -player->mRotation.z) );
还知道我使用的是 opengl、c++ 和 glm。
【问题讨论】:
标签: c++ opengl camera rotation glm-math