과정 : 모델링-리깅-키 애니메이션
모델링을 완성한 후 애니메이션을 위해 버텍스나 폴리곤을 직접 조작하는 것은 효율이 안좋기 때문에, 모델링이 완성된 Mesh에 Bone을 리깅하여 애니매이션 시 Bone만 조작하는 방식
이 때, 부드러운 피부 표현을 위해 1개의 Mesh Vertex에 다수의 Bone과 Weight를 이용하여 Vertex의 위치를 계산하는 것을 Skinning이라 함
FBX Mesh의 Vertex는 기본적으로 World Coordinate로 잡혀있기 때문에 Bone에 의한 애니메이션을 계산할 때에는 Bone 좌표계로 변환한 후 수행해야 함
또한, FBX Mesh의 Vertex와 Bone의 좌표가 일치한다고 보장힐 수 없으므로 FBX Mesh의 World Coordinate와 Bone의 World Coordinate를 일치시켜줘야 한다
FbxAMatrix linkMatrix;
cluster->GetTransformLinkMatrix(linkMatrix); // Bone World Matrix
FbxAMatrix adjustMatrix;
cluster->GetTransformMatrix(adjustMatrix); // FBX Mesh와 Bone의 오차 조정
// Mesh World Coordinate를 Bone Space로 변환한 후, Mesh와 Bone의 오차를 조정하는 Matrix
FbxAMatrix fbxBoneSpaceMatrix = linkMatrix.Inverse() * adjustMatrix;
HMatrix44 toBoneSpaceMatrix = Convert(fbxBoneSpaceMatrix);
object->SetBoneSpaceTransformMatrix(boneIndex, toBoneSpaceMatrix);