我正在建立一个相机类(class),并从在线类(class)中获得了帮助来建立该类(class)。
现在,我想在相机中添加胶卷,但找不到任何可以解释如何在相机中添加胶卷的阅读 Material 。

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或指导我阅读一些 Material ,我将不胜感激。

最佳答案

要用roll View ,您已经绕视线(Up)旋转了向上 vector (Front)。
通过Front围绕Roll定义旋转矩阵:

glm::mat4 roll_mat = glm::rotate(glm::mat4(1.0f), glm::radians(Roll), Front);
通过矩阵转换Up vector :
Up = glm::mat3(roll_mat) * Up;

关于c++ - 如何在相机类中添加胶卷,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62493770/

10-11 23:16
查看更多