我正试图在没有滚动效果的情况下旋转相机。
我积累了0到359.9度的3个角度。然后我用累积的角度(一半)用全局轴向矢量制作3个四元数(glm :: quat)并将它们乘以1个四元数。然后我将此四元数转换为旋转矩阵。至少我将这个3x3矩阵插入4x4视图变换矩阵(到[0] [0]角)。
void View::rotate(const float& angleX, const float& angleY, const float& angleZ)
{
float rad = 3.14159265359/180.0;
pitchAngle += angleX;
degree360(pitchAngle);
yawAngle += angleY;
degree360(yawAngle);
rollAngle += angleZ;
degree360(rollAngle);
float angle_x = pitchAngle*rad/2;
float angle_y = yawAngle*rad/2;
float angle_z = rollAngle*rad/2;
glm::quat qX = glm::quat(angle_x, glm::vec3(1.0, 0.0, 0.0));
glm::quat qY = glm::quat(angle_y, glm::vec3(0.0, 1.0, 0.0));
glm::quat qZ = glm::quat(angle_z, glm::vec3(0.0, 0.0, -1.0));
glm::quat q = qZ * qX * qY;
glm::mat4 spin_mat = glm::mat4_cast(q);
matrix[0][0] = spin_mat[0][0];
matrix[0][1] = spin_mat[0][1];
matrix[0][2] = spin_mat[0][2];
matrix[1][0] = spin_mat[1][0];
matrix[1][1] = spin_mat[1][1];
matrix[1][2] = spin_mat[1][2];
matrix[2][0] = spin_mat[2][0];
matrix[2][1] = spin_mat[2][1];
matrix[2][2] = spin_mat[2][2];
}
我无法理解我做错了什么。这个功能以奇怪的方向和角度旋转。