Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

упрощение экспорта анимаций #122

Closed
PavelBlend opened this issue Dec 19, 2016 · 16 comments · Fixed by #131
Closed

упрощение экспорта анимаций #122

PavelBlend opened this issue Dec 19, 2016 · 16 comments · Fixed by #131
Assignees
Labels
enhancement Запрос нового функционала

Comments

@PavelBlend
Copy link
Owner

Нужно придумать и реализовать улучшенный метод экспорта скелетных анимаций.
Вот файл для примера:
https://yadi.sk/d/6Y7sv2zt345Jk4

В нём сохранена модель рук и оружия с анимациями. Анимации сделаны с использованием дополнительных костей (эти кости экспортировать в object не нужно) для инверсной кинематики и различных constraints. Правильнее сделать костям галочку, которая будет указывать, является ли данная кость экспортируемой или нет. Те кости, у которых установлена галочка, попадут в object, а те, у которых не установлена, не попадут.

В данной версии плагина, чтобы экспортировать подобные анимации, нужно их запечь, удалить вспомогательные кости, удалить ключи в анимациях для удалённых костей.
Приходится постоянно для одной модели иметь сразу 2 blend файла: первый с исходными анимациями, второй с запечёнными. Нужно, чтобы плагин умел экспортировать анимации из исходных вариантов (без ручной переделки).

@igelbox
Copy link
Collaborator

igelbox commented Dec 20, 2016

Похоже на фейковые кости (см. #69).
С "галочкой" согласен.

@igelbox igelbox added the enhancement Запрос нового функционала label Dec 20, 2016
@igelbox igelbox self-assigned this Feb 5, 2017
@PavelBlend
Copy link
Owner Author

А у тебя получилось экспортировать анимацию из примера выше?

@igelbox
Copy link
Collaborator

igelbox commented Feb 7, 2017

Да, на ней и тестировал. Только пришлось снять галки у 4-х костей.
А у тебя не получается? Как экспортируешь? Как потом проверяешь (или сразу ошибка при экспорте)?

@PavelBlend
Copy link
Owner Author

Экспорт проходит нормально. Но AE не открывает object. Пишет:

FATAL ERROR
[error]Expression    : assertion failed
[error]Function      : S:\sources\xrEngine\motion.cpp
[error]File          : S:\sources\xrEngine\motion.cpp
[error]Line          : 464
[error]Description   : BM
 
stack trace:

Потом импортирую этот object опять в блендер (чтобы проверить), и анимации не такие, как у исходной модели (руки прямые, не сгибаются):
export_anim_bug

@igelbox
Copy link
Collaborator

igelbox commented Feb 8, 2017

Чёт я упустил: про ошибки текущей реализации (pull-request-а) надо писать в комментарии к пулл-реквесту. А здесь, только про саму проблему/хотелку.

Насчёт этой задачи, я кажется понял, нам надо сделать как бы "запекание" ключей во время экспорта, так ведь? Выложи, в эту ишью, пожалуйста, blend-файл с запечёнными ключами.

@PavelBlend
Copy link
Owner Author

PavelBlend commented Feb 8, 2017

надо сделать как бы "запекание" ключей во время экспорта, так ведь?

Да. Вообще, суть такова, чтобы делать меньше работы для экспорта анимаций. Я в первом сообщении писал, что сейчас делать экспорт анимаций долго. Так как перед экспортом нужно запечь все анимации, потом удалить constraint'ы и удалить вспомогательные кости (для ик и прочие). И только потом делать экспорт.
Нужно как-то вычислить положения и повороты костей в анимациях при влиянии констрейнтов.

Вот запечённые анимации:
https://yadi.sk/d/gguQcNXv3Da8xe

@igelbox
Copy link
Collaborator

igelbox commented Feb 8, 2017

Интересно у тебя получилось (ключевые кадры не в каждом кадре проставлены). Чем/как запекал анимации? Может скрипт какой для этого используешь?

@PavelBlend
Copy link
Owner Author

Я в режиме pose mode выбрал меню Pose > Animation > Bake Action...
Ключевые кадры не установились там, где значение не меняется.

@igelbox
Copy link
Collaborator

igelbox commented Feb 9, 2017

Похоже на автогенерацию ключевых кадров по констрейнтам (#71).

А ты каждый раз задаёшь "Start Frame" и "End Frame"? Или оно как-то может автоматом их определять?

@PavelBlend
Copy link
Owner Author

Каждый раз вручную для каждой анимации задаю.

@igelbox
Copy link
Collaborator

igelbox commented Feb 20, 2017

Я понял, из-за чего был assertion failed в AE: в object-файлах анимация должна быть у каждой кости (хотя бы один ключевой кадр), а я её выгружал, если только крисые есть. Поправлю.

И с запеканием получилось. Только вот сильно медленнее работает (экспорт твоего файла старым-добрым алгоритмом занимает 2.1 сек, а новым - 5.5 сек). Я профайлил - основное время тратится на запекание. Теперь думаю, надо галочку делать, чтоб включать запекатель по-требованию. Только вот в чьи свойства её поместить: action-а, кости или armature? Может ли такое быть, что часть action-ов анимируется констрейнтами, а часть - кривыми?

@PavelBlend
Copy link
Owner Author

Только вот в чьи свойства её поместить: action-а, кости или armature?

в свойства арматуры.

Может ли такое быть, что часть action-ов анимируется констрейнтами, а часть - кривыми?

ну теоретически может. Например, influence констрейнта установить в 0. Или анимировать параметр включения/выключения констрейна. В реальных анимациях у меня пока такого не было.

Можно ещё выводить предупреждение, если пользователь пытается экспортировать анимации с констрейнами без запекания. Или сделать так, чтобы плагин запекал автоматом без указания галочек. Например, если кости арматуры имеют констрейны, то плагин будет запекать анимации. Если ни одна кость не имеет констрейнов, то запекания не будет. Это избавит плагин от большого количества галочек при экспорте.

@igelbox
Copy link
Collaborator

igelbox commented Feb 21, 2017

Это избавит плагин от большого количества галочек при экспорте.

Так там, кроме констрейнов, могжет быть ещё и IK (или она тоже констрейнами делается?), а может и ещё что-то.

В реальных анимациях у меня пока такого не было.

А может быть иак, что ты импортировал модельку с анимациями (которые импортировались кривыми). И потом добавляешь/изменяешь пару анимаций (и делаешь это с использованием IK и constraints). Тогда эффективнее будет запекать только новые/исправленные анимации. А для этого надо делать галочку в свойства каждого action-а. Что скажешь?

@PavelBlend
Copy link
Owner Author

Так там, кроме констрейнов, могжет быть ещё и IK (или она тоже констрейнами делается?)

я всегда ик делаю констрейнами. Есть галочка Auto IK. Но она не управляемая. Нельзя задать количество костей в цепи и т.д. В более-менее сложных анимациях используется констрейнт ик.

а может и ещё что-то.

я пока не знаю, что ещё, кроме констрейнтов, может влиять на анимации.

И потом добавляешь/изменяешь пару анимаций (и делаешь это с использованием IK и constraints).

Если добавить разные констрейнты и ик к костям, то старые анимации испортятся. Нужно будет в старых анимациях влияние этих констрейнтов менять на 0.

Тогда эффективнее будет запекать только новые/исправленные анимации. А для этого надо делать галочку в свойства каждого action-а.

Может сделать так, чтобы плагин не запекал те анимации, у которых значение Influence констрейнта установлено в 0?

@igelbox igelbox added bug Что-то не работает enhancement Запрос нового функционала and removed enhancement Запрос нового функционала bug Что-то не работает labels Feb 21, 2017
@PavelBlend
Copy link
Owner Author

И с запеканием получилось. Только вот сильно медленнее работает (экспорт твоего файла старым-добрым алгоритмом занимает 2.1 сек, а новым - 5.5 сек). Я профайлил - основное время тратится на запекание.

А в блендере есть возможность вычислить фактические положение и поворот костей, которые являются результатом работы констрейнтов? Чтобы не использовать запекание.

@igelbox
Copy link
Collaborator

igelbox commented Feb 25, 2017

Я не знаю. Если б было, то почему тогда стандартный "Bake Action" этот хитрый трюк не использует.
Вообщем, если и есть что-то такое, то это уже отдельная ишью. Эта и так уже очень затянулась.

Нужно, чтобы плагин умел экспортировать анимации из исходных вариантов (без ручной переделки).

Теперь работает.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Запрос нового функционала
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants