Sum*_*mit 1 c++ opengl glm-math
我正在构建一个相机课程,并从构建该课程的在线教程中获得了帮助。
现在我想在相机中添加滚动条,但找不到任何阅读材料来解释如何在相机中添加滚动条。
Camera(glm::vec3 position = glm::vec3(0.0f, 0.0f, 500.0f), glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f), float yaw = YAW, float pitch = PITCH) : Front(glm::vec3(0.0f, 0.0f, -1.0f)), Zoom(ZOOM)
{
Position = position;
WorldUp = up;
Yaw = yaw;
Pitch = pitch;
updateCameraVectors();
}
glm::mat4 GetViewMatrix()
{
return glm::lookAt(Position, Position + Front , Up);
}
void updateCameraVectors()
{
glm::vec3 front;
front.x = cos(glm::radians(Yaw - 90)) * cos(glm::radians(Pitch));
front.y = sin(glm::radians(Pitch));
front.z = sin(glm::radians(Yaw - 90)) * cos(glm::radians(Pitch)) ;
Front = glm::normalize(front);
Right = glm::normalize(glm::cross(Front, WorldUp));
Up = glm::normalize(glm::cross(Right, Front));
}
Run Code Online (Sandbox Code Playgroud)
如果有人能解释如何在本课程中添加 ROll 或指导我阅读一些阅读材料,我将不胜感激。
要滚动视图,您需要Up
围绕视线 ( ) 旋转向上矢量 ( Front
)。
Front
围绕定义旋转矩阵Roll
:
glm::mat4 roll_mat = glm::rotate(glm::mat4(1.0f), glm::radians(Roll), Front);
Run Code Online (Sandbox Code Playgroud)
Up
通过矩阵变换向量:
Up = glm::mat3(roll_mat) * Up;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1815 次 |
最近记录: |