如何在相机类中添加滚动
Posted
技术标签:
【中文标题】如何在相机类中添加滚动【英文标题】:How to add roll in camera class 【发布时间】:2020-06-21 02:24:01 【问题描述】:我正在构建一个相机类,并从在线教程中获得了构建该类的帮助。
现在我想在相机中添加滚动,但找不到任何可以解释如何在相机中添加滚动的阅读材料。
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));
如果有人能解释如何在本课程中添加 ROll 或指导我阅读一些材料,我将不胜感激。
【问题讨论】:
【参考方案1】:对于roll 视图,您已围绕视线 (Front
) 旋转向上矢量 (Up
)。
通过Roll
定义一个围绕Front
的旋转矩阵:
glm::mat4 roll_mat = glm::rotate(glm::mat4(1.0f), glm::radians(Roll), Front);
用矩阵变换Up
向量:
Up = glm::mat3(roll_mat) * Up;
【讨论】:
谢谢,我确实尝试将旋转矩阵乘以 Front 向量,但从未想过将该矩阵应用于 Roll。 感谢帮助:)以上是关于如何在相机类中添加滚动的主要内容,如果未能解决你的问题,请参考以下文章