Libgdx贴花围绕自定义轴旋转

5
我正在开发一个使用Libgdx引擎和3D空间中贴花的应用程序。 现在我需要围绕X、Y、Z轴旋转贴花,但是围绕自定义的枢轴点,在3D空间中。 我发现贴花有transformationOffset字段,它可以通过一些计算工作,但只能使用Vector2。这意味着我只能在X和Y轴上移动枢轴点。 当围绕Y轴旋转贴花时,无论枢轴在哪里,结果都是相同的。
decal.transformationOffset = new Vector2(0, -5);

decal.rotateX(newValues[0]);
decal.rotateY(newValues[1]);
decal.rotateZ(newValues[2]);

我也需要在Z轴上移动枢轴。
这个问题有什么解决方法吗?
谢谢!
编辑:
我已经成功地将贴花旋转到了3D空间中的枢轴点,但前提是枢轴和贴花的Z位置相同。如果它们不同,我就无法得到我想要的效果。
以下是适用于具有相同Z值的枢轴的代码:
decal.transformationOffset = new Vector2(pivotPosition.x - decal.getPosition().x, pivotPosition.y - decal.getPosition().y);
Tween.to(decal, DecalTween.XYZ_ROTATION, 5f).target(0, 360, 0).repeatYoyo(Tween.INFINITY, 0f).start(tweenManager);

这句话的意思是:在这之间,我会做这件事:
target.setRotationX(0);
target.setRotationY(0);
target.setRotationZ(0);
target.rotateX(newValues[0]);
target.rotateY(newValues[1]);
target.rotateZ(newValues[2]);

如何将其扩展以使用枢轴的Z值。我正在尝试添加平移动画,以实现旋转,但结果很奇怪。
Tween.to(decal, DecalTween.MOVE_XYZ, 2.5f).target(decal.getPosition().x, decal.getPosition().y, pivotPosition.z - decal.getPosition().z).repeatYoyo(Tween.INFINITY, 0f).start(tweenManager);
    decal.transformationOffset = new Vector2(pivotPosition.x - decal.getPosition().x, pivotPosition.y - decal.getPosition().y);
Tween.to(decal, DecalTween.XYZ_ROTATION, 5f).target(0, 360, 0).repeatYoyo(Tween.INFINITY, 0f).start(tweenManager);

有没有想法如何将翻译和旋转动画组合起来,以使标记沿着圆形路径绕中心点旋转?
1个回答

5
我想我会回答自己的问题。
我扩展了Decal类,将transformationOffset改为Vector3。
然后在transformVertices中,我添加了tz值,就像tx和ty一样。并在计算顶点位置时添加tz。
就这么简单。
如果有人知道为什么原生libgdx支持中没有包含这个,请告诉我。
干杯。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接