glm 旋转和平移

Posted

技术标签:

【中文标题】glm 旋转和平移【英文标题】:glm rotate and translation 【发布时间】:2018-09-02 23:07:28 【问题描述】:

我有一个名为modelmat4。我希望我的立方体围绕一个位置运行。我可以很好地调用glm::rotate(mat4, angle, vec3) 并让它在原点旋转。

void Object::Update(unsigned int dt)

  angle += dt * M_PI/1000;
  model = glm::rotate(glm::mat4(1.0f), (angle), glm::vec3(0.0, 1.0, 0.0));
  model = glm::translate(glm::mat4(1.0f), glm::vec3(0.5f, -0.5f, 0.0f));

不幸的是,当我在旋转后添加glm::translate 调用时,我的立方体被冻结了。我缺少一些基本的东西吗?

【问题讨论】:

【参考方案1】:

您必须将旋转结果作为初始矩阵传递给它:model = glm::translate(model, glm::vec3(0.5f, -0.5f, 0.0f));。否则,您将重置和转换身份矩阵,这将完全覆盖您的旋转。

【讨论】:

以上是关于glm 旋转和平移的主要内容,如果未能解决你的问题,请参考以下文章

glm - 将 mat4 分解为平移和旋转?

如何使用现代 OpenGL 的 GLM 或 JOML 矩阵正确转换(平移、旋转、缩放)对象

GLM 中的模型矩阵

LookAt (glm) 返回错误的平移 z 值

如何使用 glm::lookAt() 旋转对象?

相机 旋转