【问题标题】:Libgdx rotate ModelInstanceLibgdx 旋转模型实例
【发布时间】:2014-03-13 13:54:55
【问题描述】:

我正在开发我的第一个 libgdx 3D 游戏。到目前为止,我可以在迷宫般的(硬编码)世界中移动,碰撞检测有效。我也有一些工作 A* 寻路的敌人。 我还加载了我的第一个(非常丑陋的)Blender 模型,使用FBX-Conv 获取.g3db 文件。出于某种原因,该模型躺在地板上而不是站立。当我将它导出为.fbx 时,我可能有一些错误的设置。 为此,我尝试通过以下方式将rotate() 环绕z-Axis 90 度数: modelInstance.transform.rotate(Vector3.Z, 90) 在我的Screenshow() 方法中,在加载Model 并实例化我的ModelInstance(在给定位置)之后。由于某种原因,它没有旋转。然后我将rotate 方法放在render(delta) 中,认为它现在每个渲染循环都会旋转90 度。但相反,它静止不动,就像它应该的那样。 好的,但现在我想要 modelInstancerotate 到它实际看起来的位置,这意味着它应该旋转,这取决于我的 enemies Vector3 direction。 我已经用modelInstance.transform.setTotranslation(enemie.getPosition()) 设置他的位置,效果很好。所以我想我也可以使用modelInstance.transform.setToRotation(Vector3 v1, Vector3 vs)v1 = enemie.getPosition()v2 = enemie.getPosition().add(enemie.getDirection)。请注意,position 向量不直接使用,因为它会在add() 方法中更改其值。 这样做,我再也看不到对象了,这也意味着它的位置是错误的。

为什么会这样? 以及如何使用direction 向量旋转我的modelInstance

非常感谢。

【问题讨论】:

  • Matrix4#rotate 会旋转(后乘)矩阵。因此,您可能希望包含一些代码来显示问题。您可能还想在 X 轴(不是 Z 轴)上旋转 -90 度,或者最好在建模应用程序中检查导出到 FBX 设置,另请参阅:github.com/libgdx/libgdx/wiki/… 使用 Matrix4#setToRotation(Vector3, Vector3) 或旋转(Vector3, Vector3) 使用一个方向旋转,其中一个向量是方向,另一个是模型的面侧(例如 Vector3.Z)。
  • @Xoppa 好的,再次感谢我将尝试使用 2 Vecotr3s。我想我误解了它们,因为我想,一个Vector3 是对象位置,一个是目标位置(pos.add(direction))。如果它不起作用,我将发布代码。谢谢
  • @Xoppa 我认为它现在可以工作了。我没有看到,Matrix4.setToTranslation() 不仅设置了ModelInstanceposition,而且还首先将其设置为单位矩阵。目前我的ModelInstances 只看前、后、左、右,所以我不确定它是否真的有效,但我认为它确实有效。我很快就会再做一次测试。谢谢

标签: java matrix 3d rotation libgdx


【解决方案1】:

我在@Xoppas 的帮助下解决了这个问题。问题是:

  1. 我使用setToTranslation 将我的Model 移动到给定位置,但这也重置了rotation
  2. 我误解了setToRotation(Vector3, Vector3) 方法。

所以解决方案是先到setToTranslation,然后使用setToRotation(Vector3 direction, Vector3 face),其中direction 是方向,我的Model 正在寻找方向,faceface,应该朝这个方向看,在我的例子中是Vector3.X

希望对其他人有所帮助。

【讨论】:

    【解决方案2】:

    更糟糕的情况,您可以使用以下方法修改转换矩阵:

    ModelInstance.transform.rotate()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 2015-08-21
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多