我正在开发一个使用Libgdx引擎和3D空间中贴花的应用程序。
现在我需要围绕X、Y、Z轴旋转贴花,但是围绕自定义的枢轴点,在3D空间中。
我发现贴花有transformationOffset字段,它可以通过一些计算工作,但只能使用Vector2。这意味着我只能在X和Y轴上移动枢轴点。
当围绕Y轴旋转贴花时,无论枢轴在哪里,结果都是相同的。
我也需要在Z轴上移动枢轴。
这个问题有什么解决方法吗?
谢谢!
编辑:
我已经成功地将贴花旋转到了3D空间中的枢轴点,但前提是枢轴和贴花的Z位置相同。如果它们不同,我就无法得到我想要的效果。
以下是适用于具有相同Z值的枢轴的代码:
这句话的意思是:在这之间,我会做这件事:
如何将其扩展以使用枢轴的Z值。我正在尝试添加平移动画,以实现旋转,但结果很奇怪。
有没有想法如何将翻译和旋转动画组合起来,以使标记沿着圆形路径绕中心点旋转?
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);
有没有想法如何将翻译和旋转动画组合起来,以使标记沿着圆形路径绕中心点旋转?