Я не знаком с различными форматами файлов захвата движения и с тем, что именно они содержат, но я проделал некоторую работу над анимацией скелетов форм жизни, поэтому вот мое мнение по этому поводу.
Когда вы рисуете что-то, используя скелет для анимации, вы начинаете с «корневой» кости, которая, очевидно, будет иметь положение, как показано на этом рисунке. пример файла walk.asf:
root
Следующий root -> hips -> hips1 -> chest
section defines all the bones:
chest
Затем существует иерархия костей, начинающаяся с этой корневой кости:
begin
root hips
hips hips1 hips2 hips3
hips1 chest
chest chest1 chest2 chest3
chest1 neck
# ...
hips2 leftupleg
# ...
hips3 rightupleg
end
(кстати, именно такую информацию я просил в своих комментариях, и вам следовало бы задать более четкий вопрос.)
Каждая «дочерняя» кость соединена с конечной точкой своего родителя и определяет свою собственную ориентацию относительно этого родителя. Эта картинка помогает (взято из Документ Autodesk Motionbuilder)
Чтобы расположить любую кость, вам нужно подняться вверх по иерархии костей до корневой кости и объединить все их матрицы преобразования вместе. Например, чтобы расположить кость :bonedata
begin
id 1
name hips
direction 0.000000 1.000000 0.000000
length 0.000000
axis 0.00000 0.00000 0.00000 XYZ
dof rx ry rz
limits (-180.0 180.0)
(-180.0 180.0)
(-180.0 180.0)
end
# other bone definitions follow
, the following sequence is used: bonedata
. Каждая из этих костей имеет собственную трансформацию (вращение, растяжение) на основе данных захвата движения, которая влияет на положение ее дочерних элементов. :root
axis XYZ
order TX TY TZ RZ RY RX
position 0.0 0.0 0.0
orientation 0.0 0.0 0.0
bone is a special case that has no parents and represents the position and orientation of the whole model.
Данные захвата движения не могут содержать только положения костей, поскольку вращение по оси кости не может быть выражено иначе. Наконец, имеет смысл иметь данные захвата движения с точки зрения вращения и растяжения, потому что эти значения легче интерполировать, чем положение, и именно они в любом случае используются для рендеринга скелета.