我试图实现一个摄像机跟踪一个移动的物体。我实现了以下功能:
void Camera::espheric_yaw(float degrees, glm::vec3 center_point)
{
float lim_yaw = glm::radians(89.0f);
float radians = glm::radians(degrees);
absoluteYaw += radians;
... clamp absoluteYaw
float radius = 10.0f;
float camX = cos(absoluteYaw) * cos(absoluteRoll) * radius;
float camY = sin(absoluteRoll)* radius;
float camZ = sin(absoluteYaw) * cos(absoluteRoll) * radius;
eyes.x = camX;
eyes.y = camY;
eyes.z = camZ;
lookAt = center_point;
view = glm::normalize(lookAt - eyes);
up = glm::vec3(0, 1, 0);
right = glm::normalize(glm::cross(view, up));
}我想使用这个功能(和音高版本)的相机,跟随一个移动的三维模型。现在,当center_point是(0,1,0)时,它就能工作了。我认为我得到了正确的位置,但是向上向量显然不是总是(0,1,0)。
我怎样才能获得相机的上、视图和右矢量?然后,如果我这样更新相机的眼睛位置,当另一个物体(以center_position参数为中心)移动时,我的相机将如何移动?
这样做的目的是在每次我用centered_value =移动对象的中心进行鼠标输入时更新它。然后使用gluLookAt与视图,眼睛和我的相机上的值(和lookAt,这将是eyes+view)。
发布于 2019-05-15 22:59:01
https://stackoverflow.com/questions/56158278
复制相似问题