Использование assimp для загрузки данных анимации fbx
Недавно я только что прочитал " Введение в программирование трехмерных игр с помощью Directx 11" и пытался использовать пример из главы 25 для загрузки своей собственной модели. Поэтому после создания скина модели и экспорта данных в формате.fbx я пытаюсь загрузить кости и анимацию. данные и получить неправильные результаты.
1. Я просто копирую матрицу смещения в свою собственную структуру и транспонирую ее, это нормально?
for (auto & s: names)
{
auto index = maps[s];
auto m = matrixmaps[s];
memcpy(offset.float1d, m, sizeof(float)* 16);
TransposeMatrix(offset);
Offsets[index] = offset;
}
2. Я обнаружил, что корневая кость (Bip001) имеет нулевой ключевой кадр, поэтому я проверяю иерархию узлов загруженных данных, и замечаю, что иерархия костей такая же, как показано ниже:
|_RootNode
|_Bip001_$AssimpFbx$_Translation
|_Bip001_$AssimpFbx$_PreRotation
|_Bip001_$AssimpFbx$_Rotation
|_Bip001_$AssimpFbx$_Scaling
|_Bip001
|_Bip001 Footsteps
|_Bip001 Pelvis
|_Bip001 Spine
|_Bip001 Spine1
| |_Bip001 Spine2
| |_Bip001 Spine3
| |_Bip001 Neck
| |_Bip001 L Clavicle
| | |_Bip001 L UpperArm
| | |_Bip001 L Forearm
| | |_Bip001 L Hand
| | |_Bip001 L Finger0
| | |_Bip001 L Finger0Nub
| |_Bip001 R Clavicle
| | |_Bip001 R UpperArm
| | |_Bip001 R Forearm
| | |_Bip001 R Hand
| | |_Bip001 R Finger0
| | |_Bip001 R Finger0Nub
| |_Bip001 Head
| |_Bip001 HeadNub
|_Bip001 L Thigh
| |_Bip001 L Calf
| |_Bip001 L Foot
| |_Bip001 L Toe0
| |_Bip001 L Toe01
| |_Bip001 L Toe02
| |_Bip001 L Toe0Nub
|_Bip001 R Thigh
|_Bip001 R Calf
|_Bip001 R Foot
|_Bip001 R Toe0
|_Bip001 R Toe01
|_Bip001 R Toe02
|_Bip001 R Toe0Nub
Как мне поступить с родителем узла Bip001, если я скопирую клавиши позиционирования, клавиши поворота и клавиши масштабирования из этих узлов в Bip001? Пожалуйста, помогите мне разобраться. Большое спасибо.
1 ответ
Для второй проблемы, установка AI_CONFIG_IMPORT_FBX_PRESERVE_PIVOTS в false работает для меня.