Jump to content
Sign in to follow this  
chip35

Подскажите по 3ds max про TrackView

Recommended Posts

Подскажите такую непонятицу

Hidden Content

    Give reaction or reply to this topic to see the hidden content.

загружаю модель, атачу к ней анимацию, видим позу и анимацию.

по шкале времени видно тучу кей-фреймов, вся анимация задана ротацией кватернионов.

открываю окно TrackView - нет ротаций, ничего нет - как так?

если запустить анимацию - она работает, ротация модели есть, персонаж движется и дышит.

 

еще 2 вопрос - если детально присмотреться то видно что модель связана с анимацией как бы на изнанку.

как можно вывернуть модель наизнанку?

поворачивать кости не выйдет, поза показывается верно, нужно именно вывернуть.

Share this post


Link to post
Share on other sites

Надо правой кнопкой кликнуть по ротейшену и выбрать assign controller, в появившемся окне выбрать Euler XYZ, тогда появятся кривые, которыми можно управлять в редакторе.
Не понятно, почему сразу не в эйлере. Может быть импортер такой кривой. И тут ничего не поделаешь. Надо думается мне скрипт писать, который будет перебирать все выбранные кости и переназначать контроллер.
То же само с масштабом. А вот наизнанку фиг знает. Это вообще откуда и куда.

так для простоты скрипт типа

a=getcurrentSelection()
for i=1 to a.count do
(
    a.pos.controller = Position_xyz()
    a.rotation.controller = Euler_xyz()
    a.scale.controller = Bezier_scale()
)

можно на кнопку повесить, и для всех выделенных объектов будут изменены контроллеры на стандартные, которые в редакторе кривых можно редактировать

Edited by Майк
  • Like 1

Share this post


Link to post
Share on other sites

Биггггг спасибо. Асинг дает то что хотел. Зачет!

если сравнивать с Блендром, то блендер всегда показывает графики анимации, но блин блендер неправильно связывает анимацию движка унреал.

еще бы для красоты вывернуть модель.

Share this post


Link to post
Share on other sites

Вылезла проблема по максу:

При воспроизведении анимации выходит момент в определенном кадре когда угол поворота идет от -20 до 10, в момент перехода 0  весь меш как бы разворачивается на 180градусов, только в момент перехода. Когда уже угол стал больше - анимация идет нормально, потом опять угол переходит 0 в отрицательную сторону и опять в этом переходе меш выворачивает.
Похоже на gimbal lock  в углах эйлера, решил не применять assign controller , остался в TCB rotation, строю подобную анимацию когда вектор должен отклоняться по подобной схеме - и опять в момент якобы перехода 0 (эльеровского) идет выворачивание меша, но я же сейчас работаю с кватернионом.
Может 3ds max при поворотах все равно преобразует через систему эйлера?
Что делать чтоб избежать выворачивание при переходе 0 ?

Share this post


Link to post
Share on other sites

Эксперименты показали что 3ds max при редактировании скорей всего применяет расчеты в ейлерах, а не кватернионе.

Беру только один фрейм поворачиваю кость на с 10град на -20 чтоб поворот перешел 0, записываю показатели кватерниона из окна свойств. Потом для проверки рассчитываю поворот этой кости вокруг оси на те же градусы но программно - создаю кватернион из углов ейлера, умножаю текущую кость - и вуаля получаю точно такой же кватернион как в максе, но это НЕВЕРНО!

В этом виде повороты вырождаются пересекая 0 и 180 град, и это вызывает вывернутый кватернион.

Я считаю что в системе TCB rotation  ВСЕ операции должны происходить только в кватернионе.

Решения пока нет - либо я нуб в максе и не знаю где включить расчет только через кватернион везде при любых операциях, либо макс неправильно считает повороты которые вырождаются.

Share this post


Link to post
Share on other sites

какова цель и условия? от того и прыгать

пример на ютуб, чтоб не гадать что там куда перескакивает, не бывает гимбла с -20 на 10 если только у других осей значения не около +/-180

 

-все расчеты во всех программах унутре происходят в кватернионах, так проще математикам

-потом для удобства юзера предоставляют результат в редактированном виде, с соответствующими багами, когда назначаешь контроллер - выбираешь тип багов, которые получишь ))

-TCB это сплайн базед, на базе безье кривых, то есть вместо кривых безье с тангентами используется кривые с Tension, Continuity, Bias (натяжение, преемственность , смещение, хотя перевод можно трактовать и немного иначе), то бишь это не совсем кватернион как бы

-настоящий кват это smooth

Share this post


Link to post
Share on other sites

Цель анимация персонажа движка унреал, вся анимация состоит из кватернионов для каждой кости.

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

При загрузке анимации в свойствах Rotation этой кости я вижу time  и 3 флоат числа и angle  (которые соответствуют кватерниону). В окне TrackView написано TCB rotation которые без графиков т.к. кватернион не может быть показан (как выяснилось выше).

При попытке изменить TrackView в режиме контроллера ейлера - получаем выворачивание в момент перехода 0.
Теперь главный прикол - загружаю все с нуля, НЕ трогаю TrackView и контроллеры, выбираю нужную кость и в 3д виде поворачиваю так чтоб поворот перешел 0 (который видели в системе ейлера) - смотрю окно свойств и вижу 3 флоат числа которые вывернуты НЕправильно. Это значит что max пересчитал мой поворот в 3д окне НЕ в кватернионе, а по своему неправильному методу.

Теперь правильное исполнение поворота:
let vector = new Vector(0, 0, 1);  -ось вокруг который будем вращать

let vQ = new Quaternion(vector, angle);  -получаем кватернион вращения на нужный угол, в моем случае -30 для перехода 0

let newQ = Frames[time].Q.dot(vQ).normalize();   -вычисляем поворот кости в режиме кватерниона

результат я просто в шоке - кость ПЛАВНО переходит 0 просто идеально, без выворачивания!

Вопрос как сделать редактирование анимации в максе так чтоб все расчеты велись именно в кватернионе?

Share this post


Link to post
Share on other sites

Ну риг-то какой? Чистые кости что ль? И снова, что там в координатах чайл-парент? Это может быть в мировых координатах поворот на 30 градусов, а относительно родителя 100500 градусов

Возьми бипед/кат и анимируй. Бипед точно в кватернионе по умолчанию. Кат в ейлере, но ИК/ФК решит проблему.

И зачем именно кватернион-то? Можно и в эйлере делать, есть в редакторе кривых трек вью утилиты, там есть эйлер фильтер который в большинстве случаев выправит прокрут, но  минус в том, что он выправит текущую кость, а следующая в иерархии останется с той же анимацией относительно родителя, а это вывернет ее относительно мира.

Share this post


Link to post
Share on other sites

Hidden Content

    Give reaction or reply to this topic to see the hidden content.

Чистая загрузка анимации, в контроллерах видно rotation Tcb, снизу видим положение этой кости в данном фрейме локально родительской кости, все как положено. Анимация работает правильно, экспорт в игру происходит правильно.

Теперь смотрите на скрине показал как поворачиваю кость в этом фрейме. Контроллеры не меняю, если поворачиваю кость вверх на 10град или вниз хоть на 90 - проблем нет, работает правильно.
НО  если повернуть кость вверх, как на скрине, например на 20град, чем самым мы пересекаем 0 (если судить по системе ейлера) - то кватернион выворачивается. 
В максе визуально смотрится правильно, но на деле при анимации время идет:
3.1 -4.0  = правильно,
4.1  - 5.0   кватернион выворачивается наизнанку,
5.0 положение как в максе, визуально нормальное
5.1-6.0 выворачивается обратно, переходя 0 град (если судить по системе ейлера).

 

Набросал свой скрипт, который поворачивает эту же кость но чисто через кватернион - работает четко, плавно, идеально.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

By using this site, you agree to our Terms of Use.