c++ - 使用角度 vector 进行高效 3D 旋转

标签 c++ opengl game-engine glm-math

我想知道是否有更好的方法来实现以下目标:

ModelMatrix = glm::rotate(ModelMatrix, glm::radians(rotationVec.x), glm::vec3(1.0f, 0.0f, 0.0f));
ModelMatrix = glm::rotate(ModelMatrix, glm::radians(rotationVec.y), glm::vec3(0.0f, 1.0f, 0.0f));
ModelMatrix = glm::rotate(ModelMatrix, glm::radians(rotationVec.z), glm::vec3(0.0f, 0.0f, 1.0f));

是否有更有效的方法可以通过单个函数调用来实现相同的计算? rotationVec 是一个角度 vector ,类似于 Unity 引擎如何进行游戏对象旋转。

最佳答案

感谢@meowgoesthedog 这可以通过以下方式实现。

ModelMatrix = ModelMatrix * glm::eulerAngleXYZ(glm::radians(rotation.x), glm::radians(rotationVec.y), glm::radians(rotationVec.z));

关于c++ - 使用角度 vector 进行高效 3D 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57991636/

相关文章:

java - JFrame 中的游戏逻辑

c++ - Visual Studio-在单步执行时查看堆栈大小增长的方法?

opengl - 只执行一次 GLSL 函数

java - 阻止 btKinematicCharacterController 从斜坡上滑下

c# - 如何重构此代码(C#,类型)

c++ - 如何定义始终与摄影机平行的平面的顶点?

c++ - 为什么使用 QVector(Qt) 而不是 std::vector

c++ - 琐碎与标准布局与 POD

c++ - Arduino C++ 计算触发点

java - OpenGL 纹理绘制在一起时出现在错误的位置