【发布时间】:2019-08-30 04:05:37
【问题描述】:
我正在尝试围绕 opengl 中的原点旋转一个对象(一组顶点)。
对象是摩天轮中的马车,在旋转过程中不得保持直立。到目前为止,我所得到的只是以下转换,它可以旋转马车但不会保持直立。这使用以 72 度角围绕原点的基本旋转变换。模型矩阵看起来像这样:
g_modelMatrix[i] = glm::mat4(1.0f) * glm::rotate(glm::radians(-72.0f), glm::vec3(0.0f, 0.0f, 1.0f));
其中 glm::mat4(1.0f) 是一个单位矩阵
【问题讨论】:
-
在翻译前先将笔架反向旋转?
-
您的意思是逆时针旋转 (72deg) 然后平移 (x,y) 使其回到原始位置,然后再次顺时针旋转 (72deg )?
-
是的,我是这个意思。
-
但是对于每次转换,我如何计算出 x 和 y 呢?
-
如果轮子的中心不在原点,则先将轮子平移到原点,然后旋转,再平移回来。这仅适用于车轮;其余对象需要不同的视图矩阵(另一个渲染调用)。