Использование 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 работает для меня.

Другие вопросы по тегам