Howli 13 Опубликовано 6 марта, 2018 В общем застрял на редактировании анимации. Опишу что у меня выходит на данный момент: Выгружаю скелетал в psk - загружаю в blender - проблем нет. Скелет правильный, кости работают. Разбираю пакет например FFighter_anim.MeshAnimation.Moves.walk_1HS_FFighter Получаю последовательность struct Track{ float4 Orientation; float3 Position; float Time; } четко по элементу на каждую кость на каждый фрейм анимации. Выходит структура psa - файла, выгружаю его. И тут вылазит проблема - Blender загружаю скелетал - нормально, загружаю анимацию - каша. Поэкспериментировав, например, создаем в Блендер кость на чистом листе, делаем простую анимацию поворота - выгружаем - загружаем - каша. Похоже проблема именно в блендере, он неправильно воспринимает анимацию psa. Решил пойти другим путем, взял формат collada, по документации имеем блок анимации <animation id="{name}_pose_matrix"> <source id="{name}_pose_matrix-input"> <float_array id="{name}_pose_matrix-input-array" count="{frames}">{times}</float_array> <technique_common> <accessor source="#{name}_pose_matrix-input-array" count="{frames}" stride="1"> <param name="TIME" type="float"/> </accessor> </technique_common> </source> <source id="{name}_pose_matrix-output"> <float_array id="{name}_pose_matrix-output-array" count="{ntransform}">{transform}</float_array> <technique_common> <accessor source="#{name}_pose_matrix-output-array" count="{frames}" stride="16"> <param name="TRANSFORM" type="float4x4"/> </accessor> </technique_common> </source> <source id="{name}_pose_matrix-interpolation"> <Name_array id="{name}_pose_matrix-interpolation-array" count="{frames}">{interpolation}</Name_array> <technique_common> <accessor source="#{name}_pose_matrix-interpolation-array" count="{frames}" stride="1"> <param name="INTERPOLATION" type="name"/> </accessor> </technique_common> </source> <sampler id="{name}_pose_matrix-sampler"> <input semantic="INPUT" source="#{name}_pose_matrix-input"/> <input semantic="OUTPUT" source="#{name}_pose_matrix-output"/> <input semantic="INTERPOLATION" source="#{name}_pose_matrix-interpolation"/> </sampler> <channel source="#{name}_pose_matrix-sampler" target="{name}/transform"/> </animation> по 1 блоку на каждую кость, внутри в float_array нужно разместить все матрицы трансформации данной кости по всем феймам. Но непонятно какие именно матрицы? Относительно системы? или общая трансформация кости в данный момент времени? или может относительно чего-то.... непонятно.... Попытался по аналогии с форматом psa - полная ориентация кости в данным момент времени - конвертнул кватернион в матрицу и создал collada файл. Его открываю в Блендер, вижу скелет нормальный, но только включаю анимацию - кости начинают плясать кашу. Пробовал вариант перестановки матрицы к виду OpengGl ( когда строки и столбцы меняются) - та же самая каша при анимации. Может у вас будут идеи как выполнить редактирование анимации? Либо может кто знает какие это матрицы в коладе... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты