Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Libgdx旋转模型实例_Java_Matrix_3d_Rotation_Libgdx - Fatal编程技术网

Java Libgdx旋转模型实例

Java Libgdx旋转模型实例,java,matrix,3d,rotation,libgdx,Java,Matrix,3d,Rotation,Libgdx,我正在开发我的第一款libgdx 3D游戏。到目前为止,我可以在一个迷宫般的硬编码世界中四处走动,碰撞检测工作正常。我也有一些敌人在寻找路径。 我还提出了我的第一个非常丑陋的搅拌机模型,使用FBX Conv获得一个.g3db文件。由于某种原因,模特儿躺在地板上而不是站着。当我将它导出为.fbx时,可能我有一些错误的设置。 为此,我试着让他绕z轴旋转90度,方法是: 加载模型并在给定位置实例化modelInstance后,在我的屏幕的show方法中显示modelInstance.transform

我正在开发我的第一款libgdx 3D游戏。到目前为止,我可以在一个迷宫般的硬编码世界中四处走动,碰撞检测工作正常。我也有一些敌人在寻找路径。 我还提出了我的第一个非常丑陋的搅拌机模型,使用FBX Conv获得一个.g3db文件。由于某种原因,模特儿躺在地板上而不是站着。当我将它导出为.fbx时,可能我有一些错误的设置。 为此,我试着让他绕z轴旋转90度,方法是: 加载模型并在给定位置实例化modelInstance后,在我的屏幕的show方法中显示modelInstance.transform.rotateVector3.Z,90。由于某种原因,它没有旋转。然后我把旋转方法放在renderdelta中,我想它现在可以在每个渲染循环中旋转90度。但它却像它应该的那样站着不动。 好的,但现在我希望modelInstance旋转到它实际看起来的位置,这意味着它应该旋转,这取决于我的敌人矢量3的方向。 我已经准备好用modelInstance.transform.SetToTranslationElemie.getPosition来设置他的位置,这非常好用。因此,我认为我还可以使用modelInstance.transform.setToRotationVector3 v1,Vector3 vs,v1=enemie.getPosition和v2=enemie.getPosition.addenemie.getDirection。请注意,不会直接使用位置向量,因为它会在add方法中更改其值。 这样做,我再也看不到对象了,这意味着它的位置是错误的

为什么会这样? 如何使用方向向量旋转modelInstance


非常感谢。

我通过@Xoppas帮助解决了这个问题。问题是:

我使用setToTranslation将模型移动到给定位置,但这会重置旋转 我误解了setToRotationVector3,Vector3方法。 所以解决方案是先设置转换,然后使用setToRotationVector3 direction,Vector3 face,其中direction是方向,我的模型是朝这个方向看的,face是朝这个方向看的,在我的例子中是Vector3.X


希望它能帮助其他人。

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

ModelInstance.transform.rotate()

Matrix4rotate不旋转后乘以矩阵。因此,您可能希望包含一些代码来显示问题。您可能还希望在X轴而不是Z轴上旋转-90度,或者更好地检查建模应用程序中的导出到FBX设置,另请参见:使用Matrix4setToRotationVector3、Vector3或RotativeVector3、Vector3使用方向旋转,其中一个向量是方向,另一个是模型的正面,例如Vector3.Z.@Xoppa好的,再次感谢,我将尝试使用2个Vector3。我想我误解了它们,因为我认为,一个矢量3是物体的位置,一个是目标位置方向。如果它不工作,我会张贴代码。Thanks@Xoppa我想现在可以了。我没有看到,Matrix4.setToTranslation不仅设置ModelInstance的位置,而且首先将其设置为一个单位矩阵。目前,我的模型实例只看前面、后面、左边、右边,所以我不确定它是否真的有效,但我认为它确实有效。我很快会再做一次测试。谢谢