2010-03-29 4 views
1

노드의 로컬 위치를 주어진 세계 위치와 일치하도록 설정하려고하는 중대한 두통이 있습니다.3D 세계에서 로컬로 변환

내가 솔루션을 제공했지만, AFAICS, 그것은 단지 계정 방향을위치 만에 소요

를 확장하지 :

node_new_local_position = node_parent.derivedOrientation().Inverse() * (world_position_to_match - node_parent.derivedPosition()); 

이 문제의 노드가 node_parent의 자식; 노드 위치가 인 로컬 속성 (방향, 위치 및 크기 조정)은 물론 전체 행렬 변환으로 알려져 있습니다.

모든 위치는 입니다. 3d 벡터; 오리엔테이션은 쿼터니언입니다. 전체 변환은 4x4 행렬입니다.

누군가가 노드 계층 구조에서 확장을 지원하는 솔루션을 수정하는 데 도움을 줄 수 있습니까? 사전에

많은 감사,

답변

1

나는 ogre3d에는 전문가를 해요하지만 난 당신이 같은 필요 같아요 _getFullTransform().inverse()node_parents의 전체 4 x 4 역입니다

node_new_local_position = node_parent._getFullTransform().inverse() * world_position_to_match; 

을 변환.

편집 : 정확하게 달성하려는 작업을 수행하는 _setDerivedPosition을 사용해야합니다.

+0

나는 그것이 그렇게 단순 할 것이라고 상상하지 못했습니다! 감사! –

+0

@Bill 가끔 운이 좋을 때도 있습니다.) –

관련 문제