Плавное изменение положений "кости" в анимации (решено))

Программирование на Юнити.

Плавное изменение положений "кости" в анимации (решено))

Сообщение Shi 16 дек 2010, 15:31

Ситуация - два положения тела (в данном случае - "кости"), не связанные между собой (к примеру, "нога поднята" и "нога опущена"). Как реализовать "плавное" перетекание одного положения в другого (т.е. что то вроде как в конструкторе анимаций - указал крайние положения, остальные просчитались сами)?
Подскажите пожалуйста.
[curved_hands]
Последний раз редактировалось Shi 22 дек 2010, 15:51, всего редактировалось 1 раз.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение bgeyts667 16 дек 2010, 16:54

В юнити есть встроенный редактор анимации - просто сохраните это движение и проигрывайте, когда заблагорассудится. :)
_bgeyts667@gmail.com
Аватара пользователя
bgeyts667
UNITрон
 
Сообщения: 175
Зарегистрирован: 25 авг 2010, 08:30
  • ICQ

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение Shi 16 дек 2010, 17:20

Спасибо, я в курсе, просто как раз хотелось бы узнать, как скриптом (желательно C#, но не обязательно) получить этот эффект.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение bgeyts667 16 дек 2010, 17:27

Проигрывайте с помощью animation.Play("anim_name"), animation.CrossFade("anim_name") созданную заранее анимацию в редакторе (Windows --> Animation).
_bgeyts667@gmail.com
Аватара пользователя
bgeyts667
UNITрон
 
Сообщения: 175
Зарегистрирован: 25 авг 2010, 08:30
  • ICQ

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение Shi 16 дек 2010, 17:46

Немного не понимаю... [curved_hands]
Ситуация - шел человек, упал, нужно чтобы он визуально встал. Есть положение "костей" лежащего человека, есть "анимация" стоящего. Каким образом я могу скриптом "достроить" анимации от положения А до положения Б?
Просто у меня при подобном "стандартном" использовании CrossFade("Stand") получается только мгновенное изменение лежачего человека (к примеру Ragdoll упал, все rigidbody.IsKinetic, т.е. это просто "скелет" в определенной позе) на эту заранее подготовленную анимацию.
Именно о разрешении этой проблемы и хотелось бы узнать, извиняюсь, что возможно не очень внятно задал вопрос.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение bgeyts667 16 дек 2010, 18:04

Если вам надо кучку риджидбади заставить плавно перейти в анимацию - то ни чем не могу помочь. Анимация плавно переходит только из другой анимации. Мои познания иссякли :|
_bgeyts667@gmail.com
Аватара пользователя
bgeyts667
UNITрон
 
Сообщения: 175
Зарегистрирован: 25 авг 2010, 08:30
  • ICQ

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение Shi 16 дек 2010, 19:20

Ну, вообще, они в итоге не являются rigidbody (про них это был пример), я об этом изначально говорил, это просто определенное произвольное положение "костей" (если уж совсем грубо говоря - отдельный фрейм анимации, т.е. фактически это анимация)...
В любом случае - спасибо большое, надеюсь что ответ все же существует. ^_^
Так же интересует, как можно скриптом "симулировать" процесс создания анимации с помощью встроенного редактора? (т.е. мы имеем в ДизайнТайме "передвинул ползунок на следующий фрейм,перетащил обьект, запустил с первого - вот анимация", но как такого же эффекта добиться скриптом?)
Заранее спасибо.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение Belfegnar_ 16 дек 2010, 20:31

Я так понимаю речь идет о создании анимации на лету?
Попробуйте покопать тут:
http://unity3d.com/support/documentation/ScriptReference/Animation.AddClip.html
http://unity3d.com/support/documentation/ScriptReference/AnimationClip.SetCurve.html
http://unity3d.com/support/documentation/ScriptReference/AnimationCurve.html
http://unity3d.com/support/documentation/ScriptReference/AnimationCurve.AddKey.html

Незнаю правда насколько это быстро, зависит от реализации конечно, но красивой анимации "вставания" не получится. Выглядеть это будет как какой-то поднимающийся механизм. Можно немного сгладить это уродство, если есть набор готовых анимаций-переходов от различных лежачих положений к стоячему. Правда тут придется решать уже другую задачу: определение, какая из готовых лежачих анимаций наиболее "близка" к положениям костей в данный момент :-?? .
Вообще говоря, эта интересная задачка скорее для моушн графов. Интересно, кто-нибудь реализовывал их на юнити? Или дальше инверсной кинематики локомоушна дело не пошло? (кстати в локомоушене можете подглядеть анализ анимации на предмет положения костей).
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Плавное изменение положений "кости" в скелетной анимации

Сообщение Shi 16 дек 2010, 22:23

Belfegnar_ писал(а):Я так понимаю речь идет о создании анимации на лету?

В каком то смысле да - рунтайм генерация анимационного клипа по двум крайним положениям объекта. Спасибо огромное, буду копать в этом направлении.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1