OpenGL - 旋转后获取对象的真实世界坐标

时间:2014-12-10 06:09:56

标签: c opengl

我必须修改一个模拟太阳系的C程序,以便在X行星中设置“眼睛”(“相机”,“视口”,等等......)。该程序使用OpenGL。行星围绕太阳运行,这是主要问题。我读了所有这些,但似乎任何人都这样做:旋转后得到物体的真实位置。

首先,我测试了获取ModelView Matrix。

glGetFloatv(GL_MODELVIEW_MATRIX,jupiter_matrix);

大多数人说,在矩阵的12,13和14位置,你在每个时刻都拥有物体的真实世界位置(即使你进行了变换),但这不是真的,因为那个坐标使用gluLookAt()更改视口时更改;所以我不能用它。

其次,使用我的计算机图形学知识我想知道使用旋转矩阵(https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations)并将其乘以对象的原始位置(bc我知道每帧中的角度旋转)。在那之后,我认为我最终得到了每个帧中物体的位置,但这不是真的,我的坐标比真实的生长得快,因此相机的动画比物体旋转更快。读到这个,我发现OpenGL使用其他矩阵(https://www.opengl.org/sdk/docs/man2/xhtml/glRotate.xml),我不知道它到底是什么。

项目的github回购:https://github.com/delor34n/nemesis_v2/tree/dev

0 个答案:

没有答案