【发布时间】:2012-07-01 09:56:03
【问题描述】:
我正在使用glm::rotate 为场景中的立方体旋转变换矩阵。
"cube->t = glm::rotate(cube->t, stepTime * 50.f, glm::vec3(0.f, 1.f, 0.f));" 每帧调用一次,其中cube->t 是相关矩阵。
奇怪的是,在 20 分钟的过程中(如果我旋转 stepTime * 5000.f 而不是 stepTime * 50.f,则为两分钟),立方体在 X 和 Z 轴上明显缩放,这两个轴上的缩放始终相同(立方体的高度从不改变,但宽度和深度的变化量完全相同)。在5000.f 的情况下,变小,而在普通50.f 或100.f 的情况下,变大。
我认为这可能是舍入错误的问题,但除此之外我不知道是什么原因造成的。这是舍入错误吗?我可以通过定期标准化矩阵来解决它吗? glm 有没有标准化矩阵的功能,还是我必须自己写一个?
【问题讨论】:
-
您提出了一个有趣的问题,揭示了数学分析和迭代数值结果之间的实际差异。我怀疑你对矩阵进行归一化是正确的。
-
听起来像舍入错误,但我还没有接触过 OpenGL 的 yonks - 标准化矩阵听起来像是一个想法。您是否尝试过更改旋转参数,看看它是否会因不同的旋转向量而产生不同的影响?
-
我没有尝试过不同的向量。测试后我会告诉你会发生什么。
-
是的,当我在 Z 轴上旋转立方体时,它似乎只在 X 和 Y 轴上缩放。所以它的反应是一样的
标签: c++ opengl matrix rotation scenegraph