3D 공간에서 Libgdx 엔진과 데칼을 사용하는 앱을 사용하고 있습니다. 이제 X, Y, Z 축을 중심으로 데칼을 회전해야하지만 3D 공간의 어딘가에있는 사용자 정의 피벗 점을 중심으로 회전해야합니다.맞춤 축을 중심으로 한 Libgdx 데칼 회전
데칼에는 transformationOffset 필드가 있지만 일부 계산에서는 작동하지만 Vector2에만 해당합니다. 즉, X 축과 Y 축에서만 피벗 점을 움직일 수 있습니다. 그리고 Y 축 위에 데칼을 회전시킬 때, 피벗이 어디에 있든 그 결과는 같습니다.
decal.transformationOffset = new Vector2(0, -5);
decal.rotateX(newValues[0]);
decal.rotateY(newValues[1]);
decal.rotateZ(newValues[2]);
Z 축을 중심으로 피벗을 움직여야합니다.
이 문제의 해결 방법이 있습니까?
Tnx!
편집 :
내가하지만, 피봇의 데칼의 Z 위치가 같은 경우에만, 3 차원 공간에서의 피벗 포인트 이상 데칼을 회전 succeded했다. 그들이 그렇지 않다면 나는 내가 예상 한 것을 얻지 못한다.
이
는 같은 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);
그리고 트윈에서 나는이 작업을 수행 :이 사용하는 확장하고 피벗에 대한 Z 값 방법
target.setRotationX(0);
target.setRotationY(0);
target.setRotationZ(0);
target.rotateX(newValues[0]);
target.rotateY(newValues[1]);
target.rotateZ(newValues[2]);
. 이 애니메이션을 추가하려면 회전 옆에 번역 애니메이션을 추가하려하지만 결과는 이상합니다.
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);
피벗 포인트를 기준으로 원호 경로에서 데칼 회전을 얻기 위해 애니메이션을 변환하고 회전하는 방법에 대한 아이디어가 있으십니까?