Код: Выделить всё
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>
Код: Выделить всё
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
Мобильная версия