2014-09-12 3 views
4

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); 

피벗 포인트를 기준으로 원호 경로에서 데칼 회전을 얻기 위해 애니메이션을 변환하고 회전하는 방법에 대한 아이디어가 있으십니까?

답변

3

나는 내 자신의 질문에 답할 것입니다.

데칼 클래스를 확장했으며 transformationOffset을 Vector3으로 변경했습니다.

그런 다음 transformVertices에서 이미 tx와 ty처럼 tz 값을 추가했습니다. 정점 위치 계산을 위해 tz를 추가하십시오.

간단합니다.

왜 원시 libgdx 지원이 허용되지 않는지 알고있는 사람은 알려 주시기 바랍니다.

건배.

관련 문제