iGameExport로 애니메이션 정보를 뽑을 때 주의할 점이 있습니다. 버그인지 원래 그런건지 몰라도 회전 정보가 반전되서 나오는 것 입니다. 이거때문에 상당히 삽질을 하며 시간을 까먹었었습니다.

void DumpTrack( IGameNode * pChild )
{
	int fps = 5;
	IGameKeyTab SampleKey;
	IGameControl *pGameControl = pChild->GetIGameControl();
	pGameControl->GetFullSampledKeys(SampleKey, fps, IGameControlType(IGAME_TM));

	int iCount = SampleKey.Count();
	for(int i=0; i < iCount; i++)
	{
		DumpMatrix( SampleKey[i].sampleKey.gval.ExtractMatrix3() );
	}
}
위와 같은 식으로 애니메이션 샘플 키를 추출 하는데 decomp 함수를 이용해 이동/회전/크기 정보를 추출해냅니다. 이 정보를 토대로 애니메이션을 구현하는 거죠. 여기서 회전 정보를 쿼터니언 Quaternion 값으로 변환하는데, 이게 반전된 값으로 뽑힙니다. 그래서 실제로 값을 사용하기 전에 D3DXQuaternionInverse 함수를 통해 한번 반전 시켜줘야 됩니다.

이 것을 알지 못해 자꾸 애니메이션이 이상하게 출력되어 몇 일을 끙끙 맸는데 다행히 검색을 통해 저와 같은 상황을 겪은 분의 경험담을 듣고, 회전 값에 반전 한번 먹이니 한방에 해결 됐네요.

+ Recent posts