我一直在研究太空模拟游戏。起初,我使用自己的 3d 引擎和软件光栅化器。
但是当实现纹理的时间到期时,我放弃了。现在我在一段时间后重新开始,现在我使用 Opengl(带有 SDL)来渲染 3d 模型。
但现在我撞到了另一堵砖墙。
我不知道如何进行适当的旋转。作为一个太空模拟器,我想要与飞行模拟类似的控制
使用
glRotatef(angleX, 1.0f, 0.0f, 0.0f);
glRotatef(angleY, 0.0f, 1.0f, 0.0f);
glRotatef(angleZ, 0.0f, 0.0f, 1.0f);
或类似的,
如果我先将模型(宇宙飞船)向左旋转 90 度然后将其“向上”旋转,则无法正常工作。相反,它滚动。
这是说明我的问题的图像。
我尝试了几种技巧来尝试解决这个问题,但不知何故我觉得我错过了一些东西。几乎不可能找到模拟器风格的旋转示例也无济于事。
所以我正在寻找示例、链接和旋转 3d 模型(如宇宙飞船、飞机)的理论。
我是否应该使用 3 个向量(左、上、前)作为方向,因为我还必须计算诸如推进器的加速度之类的东西,这些东西会随着旋转(方向?)和模型中的视角点而改变像火箭发动机一样的方向。
我对数学不是很好,试图想象一个解决方案只是让人头疼