【发布时间】:2015-10-17 06:18:30
【问题描述】:
所以我想取三个变量
glm::vec3 Translation;
glm::vec3 Rotation; //Euler angles
glm::vec3 Scale;
并制作一个模型视图矩阵,这样每次这三个向量之一发生变化时,我都可以向着色器传递一个新的模型视图矩阵。
我的问题是我只知道如何告诉 glm 如何一次翻译/旋转一个参数。这不仅可能降低处理器效率,而且我怀疑我的欧拉角会遇到万向节锁。
我想知道你是否可以帮助我在 glm 中创建一个函数,该函数创建一个模型矩阵,准备好进入着色器。这有点像我认为的样子。顺便说一句,我在 C++ 中。
glm::vec3 Translation;
glm::vec3 Rotation; //Euler angles
glm::vec3 Scale;
glm::mat4 ModelMatrix
void UpdateModelMatrix()
{
ModelMatrix = glm::mat4(); //set it to an identity matrix
//Code stuffs
//At this point the mat4 will reflect the scale rotation and translations above
}
我尝试过使用一些四元数数学,但没有成功。
非常感谢!
【问题讨论】:
-
为什么不创建一个 X、一个 Y 和一个 Z 旋转并将它们连接(相乘)起来。类似 rX * rY * rZ * rS * rT。