Я наконец-то разобрался с ответом, для тех, кому это может быть интересно.
Узел visual_scene от collada даст вам позу для ваших суставов.
Итак, я собираюсь загрузить координаты visual_scene в структуре:
Примерно так:
struct Pose
{
vec3 translation,
orientation,
rotation,
scale;
};
Pose bind_pose;
Затем я собираюсь создать еще один экземпляр структуры "Pose", с конструктором, который принимает Pose в качестве параметра:
Pose anim_pose(bind_pose);
Итак, после построения bind_pose из visual_scene и anim_pose совпадают.
Затем я собираюсь перебрать все узлы анимации в library_animations, найти канал и поинтересоваться:
Это говорит нам (и вот где я немного растерялся), что мы собираемся ЗАМЕНИТЬ целевое значение исходным значением.
Если исходные данные найдены в канальном узле, совпадают с целевыми данными, т.е. :
bind_pose.translation.x имеет -3.0 в качестве значения после загрузки данных visual_scene и
<source id="joint1-translate.X-output">
<float_array id="joint1-translate.X-output-array" count="1">-3.000000</float_array>
Я ничего не делаю.
Если исходные данные отличаются от целевых данных, я просто заменяю в anim_pose хорошим значением.
И это почти все, что вам нужно сделать, чтобы правильно загрузить анимированные суставы из коллады.
Если вы видите здесь что-то не так, пожалуйста, скажите мне.
Надеюсь, это поможет.