libGDX设置旋转点3D

Jak*_*era 3 java 3d libgdx

我有两个物体基地和武器,我需要设置武器的旋转点到基地的位置.

public Test(){
position1 = new Vector3(0,0,0);
baseModel = modelLoader.loadModel(Gdx.files.getFileHandle("data/models/tower/bases/base1.g3db", FileType.Internal));
        base = new Base(baseModel, position1);

        position2 = new Vector3(3,10,5);

        weaponModel = modelLoader.loadModel(Gdx.files.getFileHandle("data/models/tower/weapons/weapon2.g3db", FileType.Internal));
        weapon = new Weapon(weaponModel, position2);
}
Run Code Online (Sandbox Code Playgroud)

这是更新方法

public void update(float delta){

        weapon.transform.rotate(0, 1, 0, 45*(delta/2));
        base.transform.rotate(0, 1, 0, 45*(delta/2));
}
Run Code Online (Sandbox Code Playgroud)

一只忙碌的猫

谢谢你的答案

Jak*_*era 6

围绕点的旋转与平移到该点,旋转然后平移.
所以这个过程包括3个步骤:

  1. 翻译成rotationPoint,例如translate(3, 0, 0)
  2. 例如,围绕中心(现在是rotationPoint)旋转rotate(0,1,0, 45*delta)
  3. 例如,向后平移(平移相对于旋转) translate(-3, 0, 0);

在这种情况下,代码看起来像这样:

weapon.transform.translate(3, 0, 0).rotate(0,1,0, 45*delta).translate(-3, 0, 0); 
Run Code Online (Sandbox Code Playgroud)