Libgdx rotate ModelInstance

心不动则不痛 提交于 2019-12-05 06:29:14

问题


I am developing my first libgdx 3D game. Until now i can move arround in a maze-like (hardcoded) world, collision detection works. Also i have some enemies with working A* Pathfinding. I also loded my first (pretty ugly) Blender model, using FBX-Conv to get a .g3db file. For some reason the model lise on the floor instead of standing. Maybe i had some wrong settings when i exported it as .fbx. For that i tryed to rotate() him arround the z-Axis by 90 degrees by calling: modelInstance.transform.rotate(Vector3.Z, 90) in the show() method of my Screen, after loading the Model and instantiating my ModelInstance (at a given position). For some reason it did not rotate. Then i put the rotate method in the render(delta), thinking, that it would now rotate 90 degrees every render loop. But instead it was standing still, like it should. Okay, but now i want the modelInstance to rotate to where it actually looks, meaning it should rotate, depending on my enemies Vector3 direction. I am allready setting his position with modelInstance.transform.setTotranslation(enemie.getPosition()) which works perfect. So i thought i can also use modelInstance.transform.setToRotation(Vector3 v1, Vector3 vs), with v1 = enemie.getPosition() and v2 = enemie.getPosition().add(enemie.getDirection). Note, that the position Vector is not used directly, as it would change its values inside the add() method. Doing this, i don't see the object anymore, meaning also its position is wrong.

Why is this happening? And how can i rotate my modelInstance by using the direction vector?

Thanks a lot.


回答1:


I solved this with @Xoppas help. The problem was:

  1. i used setToTranslation to move my Model to a given position, but this als resets the rotation
  2. I missunderstood the setToRotation(Vector3, Vector3) method.

So the solution was to to the setToTranslation first, and then use setToRotation(Vector3 direction, Vector3 face), where direction is the direction, in which my Model is looking and face is the face, which should look in this direction, in my case the Vector3.X.

Hope it helps someone else.




回答2:


Worse case scenario, you could modify the transformation matrix using:

ModelInstance.transform.rotate()


来源:https://stackoverflow.com/questions/22380807/libgdx-rotate-modelinstance

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!