-
ASE Animation [ *NODE_TM ]GamePrograming/Direct3D 2009. 3. 26. 11:45
*NODE_NAME 의 경우 부모의 값을 받아올 일이 생길때 필요하므로, 가지고 있어야한다.
*TM_ROW0 0.0000 -0.9537 -0.3007
*TM_ROW1 1.0000 0.0000 0.0000
*TM_ROW2 0.0000 -0.3007 0.9537
*TM_ROW3 0.0299 -0.0258 0.5602
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
0.0000 -0.9537 -0.3007 0.0000
1.0000 0.0000 0.0000 0.0000
0.0000 -0.3007 0.9537 0.0000
0.0299 -0.0258 0.5602 1.0000
*빨간색은 생략된 부분
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
MAX는 오른손 좌표계 다이렉트는 왼손 좌표계를 사용하므로 y,z값을 변경,
그리고 ROW1과 ROW2의 값을 변경해주면 된다,
*Y Z값 변경
0.0000 -0.3007 -0.9537 0.0000
1.0000 0.0000 0.0000 0.0000
0.0000 0.9537 -0.3007 0.0000
0.0299 0.5602 -0.0258 1.0000
*ROW1 ROW2 값 변경
0.0000 -0.3007 -0.9537 0.0000
0.0000 0.9537 -0.3007 0.0000
1.0000 0.0000 0.0000 0.0000
0.0299 0.5602 -0.0258 1.0000
------------------------------------------------------------------------------
필자의 구조체는 이런식으로 정의해놓았다.
Inherit이나, 나누어진 값은 무시해도 된다.
중요한 값은,
자기 이름을 저장할 : CHAR NodeName[256];
위에 정보를 저장할 : D3DXMATRIX TM_Node;
부모값과 곱해진 Local : D3DXMATRIX TM_Local;
부모의 주소를 가지고있을 변수 : struct _SNodeTM* Parent;
Local TM = Node TM * Parent Node TM -1 이다.
ASE 파일의 경우 부모부터 나오고 자식이 그다음 순서로 나오기때문에 정렬은 필요없다,
필자의 경우 컨테이너 맵을 이용하여, 구조체들의 주소를 저장후 , 이름으로 검색하여,
부모의 주소값을 넣어줬다.
이렇게 되면!! GEOMOBJECT의 LOCAL 메트릭스 구하기는 끝이난다.!