Assimp Skeletal Анимация преобразования матрицы Проблемы

Я пытаюсь разработать скелетную анимацию, используя Assimp (Open Asset Import Library). Прямо сейчас я могу успешно загрузить модель .dae и визуализировать ее с анимацией, но в процессе этого модель не работает.

http://i.imgur.com/O7YzK8o.png

Левая модель не установлена ​​и не загружена должным образом. Модель справа сфальсифицирована и принимает правильную позу из анимации, но странным образом искажается (плоская фигурка ~).

Я полагаю, что я, вероятно, что-то делаю не так, умножая костный матрикс

окончательные матрицы (назовем их M) рассчитываются следующим образом:

M[i] = transform_matrix[i] * scene->mRootNode->mTransformation * offset_matrix[i]

где offset_matrix[i] является комбинированной матрицей смещения от конкатенации aiBone->mOffsetMatrix, а также transform_matrix[i] является комбинированной матрицей преобразования из конкатенации матриц из aiNodeAnim ТРС.

Соответствующие конкатенации выполняются снизу вверх и до корня.

while(node!=NULL){
mOffset = loadRelativeOffset(node, scene) * mOffset
node = node->mParent;
}
offset_matrix.push_back(mOffset);

loadRelativeOffset(node, scene) будет проходить через scene->mMeshes[0]->mNumBones и вернуть матрицу соответствия aiBone, Если кость не найдена, будет возвращена идентификационная матрица. Таким образом, конечным результатом будет объединение всех костных матриц, игнорируя арматура и корневой узел.

Загрузка матрицы преобразования выполняется аналогичным образом, но с aiNodeAnim в mNumChannels вместо aiBones в mNumBones,

Я представляю, что конечный результат выглядит примерно так:

M = Arm * Hand * Finger * RootNode * Offset_Arm * Offset_Hand * Offset_Finger;

Я не знаю, почему существует матрица RootNode, но если ее там нет, все выглядит чепухой.

Любая идея, что вызывает это, или что я могу сделать?

1

Решение

Я решил это. Проблема была очень простой — матрицы смещения кости в aiBone уже Глобальный / комбинированный, поэтому не было причин для объединения.

2

Другие решения


По вопросам рекламы [email protected]