GLTF Как должны быть рассчитаны матрицы анимации?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 GLTF Как должны быть рассчитаны матрицы анимации?

Сообщение Anonymous »

Я пытаюсь заставить анимацию для работы для сложных моделей GLTF Я пробую сфальсифицированную фигура.

Код: Выделить всё

std::vector GetGlobalJointMatrices(
const std::vector& local_matrices,
const std::vector& animation_matrices,
const std::map& skeleton,
const int start_joint)
{
std::vector skeleton_matrices(skeleton.size());
skeleton_matrices[0] = Eigen::Matrix4f::Identity();

for(auto [child, parent]: skeleton)
{
skeleton_matrices[child - start_joint] = skeleton_matrices[parent - start_joint] *
local_matrices[child - start_joint] * animation_matrices[child - start_joint];
}

return skeleton_matrices;
}
< /code>
здесь local_matrices относится к локальному преобразованию каждого узла в скелете, как описано в массиве узлов. < /p>
animation_matrices
- это только анимации, которые нацелены на узлы в коже. Я подтвердил, что анимации загружаются правильно и в правильном порядке. < /P>
Это результат выполнения: < /p>

Код: Выделить всё

skeleton_matrices[child - start_joint] = skeleton_matrices[parent - start_joint] *
local_matrices[child - start_joint];

Если я пытаюсь применить анимационные матрицы вместо этого i get:

Код: Выделить всё

animation targetting node:10
rotation: 0.0245355 -0.319997    0.9446 0.0687827
translation: -0.00234646  -0.0661734   0.0278567
scales: 1 1 1
node 6:
animation targetting node:6
rotation: -0.0341418  -0.319178   0.946171 -0.0414678
translation: -0.00145852  -0.0661988   0.0278567
Я пошел и подтвердил, что эти значения верны вручную, они есть.
Я не понимаю, что не так.

Подробнее здесь: https://stackoverflow.com/questions/649 ... e-computed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»