【问题标题】:How to move/rotate an object in OpenGL according to it's local position / rotation如何根据对象的本地位置/旋转在 OpenGL 中移动/旋转对象
【发布时间】:2015-04-23 16:56:00
【问题描述】:

进入 C++ 和 OpenGL,来自 Python 背景,你有 applyMovementapplyRotation(当然还有 worldPosition,worldOrientation) 我觉得我缺少 OpenGL 的一些东西。基本上,我有一个播放器,一个立方体。

我希望立方体使用向上/向下箭头键来回移动,始终位于面对的位置。然后,使用左/右箭头,我希望玩家围绕它的 自己的 原点旋转。所以我最终会得到一个旧的生化危机风格的控制方案(坦克控制)

现在,glTransposeglRotate 可以工作,但取决于我 first 中的哪一个,它似乎朝着正确的方向移动,但会旋转来自世界各地。

它围绕自己的轴旋转,但运动总是根据世界轴。

我不想移动/旋转世界或世界+相机,因为我想做第三人称固定相机游戏。基本上,我希望做的事情与 Python 中的 applyMovement/applyRotation 完全相同。但我对如何实现这一点持开放态度。

【问题讨论】:

    标签: python c++ opengl


    【解决方案1】:

    由于您使用立即模式进行渲染,您首先需要 glTranslate 对象中心的负向量,应用旋转,然后 glTranslate 回到它的位置。有效:

    glTranslate( -center.x, -center.y, -center.z );
    glRotate( ... );
    glTranslate( center.x, center.y, center.z );
    

    现在这仅适用于渲染部分。对于移动,您需要跟踪立方体旋转的角度,并使用正弦和余弦将其向前或向后移动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-02
      • 2018-12-17
      • 2020-11-12
      • 2021-07-18
      • 2017-08-24
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多