Render.ru

Создание анимаций для игрового движка и вопрос контроллеров/пивота

Прокси

Пользователь сайта
Рейтинг
2
#1
Привет Рендер!

Я недавно в 3д анимации, и уже успела несколько раз кардинально сломать мозг :)
Сейчас я делаю анимации четвероногого персонажа для экспорта в юнити. Все вполне стандартно: он бегает, прыгает, бьет лапкой и меняет направление. Риг стандартный advanced skeleton c IK на лапах, корневой костью в районе таза, и Main-контроллером, двигающим все это дело в пространстве сцены.

Внимание, вопрос: Как, в случаях с прыжками и разворотами, должен вести себя Main контроллер?

Поясню: сначала я сделала анимацию прыжка не обращая на него внимания (изи). Потом задумалась: наверно не дело будет, если перс запрыгнет на возвышение, а контроллер при этом остается где-то там... Тем более, что надо как-то зацикливаться обратно на походку/айдл, а если мейн останется внизу, перс мой, что, при смене анимации тоже телепортнется вниз, внутрь препятствия?? Не, не дело.
Не додумав эту мысль, но знатно вдохновившись, начала переделывать все это так, чтобы Main оставался на земле, пока перс касался ее пятками задних лап, и далее двигался вместе с ними. Однако получилась какая-то фигня. Да, конечно можно через много любви и костылей скомпенсировать и добиться гладких движений и так, но нафига нужны IK на лапах, если их все сдвигает с места перемещение мейна?
Сейчас думаю о том, что можно, наверно, откатится на предыдущую версию, с игнором Main-а в принципе, настроить пивот в юньке куда-нибудь в другое место, и тупо переходить с анимации с мейном "вдалеке" (конец запрыгивания наверх), на нормальный айдл, где он прямо под ногами/лапами. Но тогда о смузингах и какой-либо динамике можно забыть, да и могут появится внезапные баги. Я, конечно, не имею ничего против костылей, но может есть какие-нибудь более приятные решения?

Буду очень благодарна любому опыту, советам, или просто сочувствию х'D

____________________________

Спасибо, что вы есть =)
 

Annuran

Активный участник
Рейтинг
14
#2
Привет. Все зависит от движка и от программистов которые туда пишут.

Если тебе поможет, то в одном из проектов я делал так (мне так было проще и быстрее):

Создается анимация например прыжка на что то, а потом анимация по вертикали обнуляется. Таким образом перс как бы остается там где он был, но в движке он запрыгивает туда куда нужно.

Создается анимация поворота, а потом вращение обнуляется. Таким образом перс как бы топчется на месте, ну или еще чего. В движке все происходит плавно и программно...

Как то так...
 

Annuran

Активный участник
Рейтинг
14
#3
Главное внимательно с группами.... должна быть группа которая специально отвечает за обнуление.... чтобы не испортить анимацию.... а основная анимация происходит в основной группе.
 

Прокси

Пользователь сайта
Рейтинг
2
#4
Спасибо за ответ!

Главное внимательно с группами.... должна быть группа которая специально отвечает за обнуление.... чтобы не испортить анимацию.... а основная анимация происходит в основной группе.
Не совсем поняла. Изначально создается группа, с помощью которой во время прыжка задается изменения высоты объекта(персонажа), а потом ее ключи по вертикали просто убираются? Или группа движется в обратную стороны как бы "обнуляя" смещение объекта по вертикали?
 

Прокси

Пользователь сайта
Рейтинг
2
#5
Создается анимация например прыжка на что то, а потом анимация по вертикали обнуляется. Таким образом перс как бы остается там где он был, но в движке он запрыгивает туда куда нужно.

Создается анимация поворота, а потом вращение обнуляется. Таким образом перс как бы топчется на месте, ну или еще чего. В движке все происходит плавно и программно...
Ага, с поворотом так и сделала в итоге. А вот с прыжком сложнее ибо четырехлапые очень долго вытягиваются вверх, касаясь лапами земли, и тут уже надо думать, какую часть анимации связать програмно с вертикальным перемещением в движке, чтобы, например, задние лапы не уходили вниз сквозь землю, но и антисипейт не был дольше самого прыжка...
На крайний случай, думаю можно вообще ничего не задавать програмно, а привязать колайдер к самой анимации (чтобы он прыгал вместе с ней ней), юнити вроде умеет так.
 

Annuran

Активный участник
Рейтинг
14
#6
Сорри. Долго другой работой занимаюсь, под растерял жаргончик. У меня за это дело отвечала совершенно бесполезная (как бы) кость в начале иерархии. И обнулял я все там. Но опять же скажу: мне так было удобнее. Группы не надо делать.
 

Annuran

Активный участник
Рейтинг
14
#7
т.е. Когда делаеш анимацию прыжка - то основной подьем делается этой костью а вся остальная анимация делается основным скелетом. Потом обнуляеш анимацию по высоте. Главное следить чтоб персонаж в пол не нырнул при основной анимации.
 

Annuran

Активный участник
Рейтинг
14
#8
Ага, с поворотом так и сделала в итоге. А вот с прыжком сложнее ибо четырехлапые очень долго вытягиваются вверх, касаясь лапами земли, и тут уже надо думать, какую часть анимации связать програмно с вертикальным перемещением в движке, чтобы, например, задние лапы не уходили вниз сквозь землю, но и антисипейт не был дольше самого прыжка...
На крайний случай, думаю можно вообще ничего не задавать програмно, а привязать колайдер к самой анимации (чтобы он прыгал вместе с ней ней), юнити вроде умеет так.
Ну разбить на две анимации: толчек - полет - лезет вверх (несколько цыклов). Плюс в том что несколько полетов можно сделать. Или задержка: перемещение вверх начинается с задержкой на этот самый толчек (это по простому).
 

Прокси

Пользователь сайта
Рейтинг
2
#9
Сорри. Долго другой работой занимаюсь, под растерял жаргончик. У меня за это дело отвечала совершенно бесполезная (как бы) кость в начале иерархии. И обнулял я все там. Но опять же скажу: мне так было удобнее. Группы не надо делать.
Да не суть, я в общем поняла, что ты имел ввиду. :)


Ну разбить на две анимации: толчек - полет - лезет вверх (несколько цыклов). Плюс в том что несколько полетов можно сделать. Или задержка: перемещение вверх начинается с задержкой на этот самый толчек (это по простому).
О! Слушай, а задержка - это вполне приличная идея. С ней можно оставить максимальную подвижность для балансировки внутри движка: можно ускорять и замедлять весь кусок анимации целиком (не подгоняя каждый раз раз переход между толчком и полетом), и просто менять длительность задержки.

Класс! Спасибо, люблю такие идеи :) В одиночку такое и не придумаешь.
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#10
господи. зачем такие сложности. мейн контрол нужен лишь только для того, чтоб поставить перса в нужное место. анимировать его не нужно.. у нас например это считается крайне нежелательным.
далее тут говорили мол, компенсировать и тд.. есть такая штука. mute. выбираешь в ченел бокс нужный канал, правой кнопкой и мют селесктион. и все.. ключи игнорируются.
 

Прокси

Пользователь сайта
Рейтинг
2
#11
у нас например это считается крайне нежелательным.
О, пасиб, учту.


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

Annuran

Активный участник
Рейтинг
14
#12
господи. зачем такие сложности. мейн контрол нужен лишь только для того, чтоб поставить перса в нужное место. анимировать его не нужно.. у нас например это считается крайне нежелательным.
далее тут говорили мол, компенсировать и тд.. есть такая штука. mute. выбираешь в ченел бокс нужный канал, правой кнопкой и мют селесктион. и все.. ключи игнорируются.
ну да правильно... ноя вообще про другое написал... мейн вообще трогать нельзя и у нас .... бо потом проблемы вылазят ...согласен полностью
 
Сверху