3,8K подписчиков

Как устроен активный рэгдолл

1,8K прочитали
На примере GTA V

Сегодня активный регдолл не все могут сделать. Вернее, сделать могут не только лишь все, мало кто может это сделать.
А те кто овладевает этим искусством, зачастую пускаются во все тяжкие и на основе открытой сложной формулы лепят игры ака Human Flat Fall или Gang Beasts.

Куда интереснее глядеть на узконаправленные применения в симбиозе с традиционной и качественной заранее записанной анимацией. Баловаться этим, вот уже более 5 лет, дозволяют себе Rockstar Games, Ubisoft и Naughty Dog.

И если первые соблазнили выходцев из Кембриджа, то последние две студии создали и развивают свои разработки сами. Ubisoft - в рамках общего развития технологий и своих франшиз, Naughty Dog узконаправленно, для, например, готовящейся к скорому выходу Angry Lesbian Part II.

Теория

В реалиях современных движков создание активного рэгдолла совсем непростое занятие, ведь какие-либо применения инверсной кинематики зачастую ограничены лишь 2-3 сочленениями (суставами), да и то лишь для основных конечностей - рук да ног, активный же рэгдолл подразумевает движение всего тела.

Для объяснения совсем базовых представлений, я решил бросится в крайности и сделал схему.
Итак, есть два стула...

На примере GTA V -2
  • Кинематика. Традиционными методами, когда анимация записывается заранее, невозможно достигнуть адекватной визуализации реакций на происходящее. Тем не менее, в куче игр всё еще можно повстречать заранее записанные реакции на толчок и ранение, в сетевых играх это так же кусок оптимизации, ведь расчетов делать не нужно.
    В активном рэгдолле кинематика принимает участие не часто, в основном как конечная позиция костяшек анимации, к которой, под воздействием внешних факторов, стремится скелет.
  • Рэгдолл. Формально ультимативное воплощение инверсной кинематики. Напомню : каждая косточка обрастает коллайдерами и компонентом физики, меж ними сочленения с ограничениями. Так можно сделать любую фигню и без костей, но отличительной является цельность модели, где кости имеют влияния на отдельные её участки. Кстати так же можно сделать реалистичную веревку, в терминологии подогнав это под рэгдолл.
    Неактивный он потому что работать может и без строки кода, лишь тянущая вниз каждую косточку физика.
  • Активный рэгдолл. Думается мне, понимание уже близко...
    Выпрыгивая в нужный момент из обычной анимации, подверженные не только физике, но и особым инструкциям скриптов, сочленения да косте-коллайдеры пытаются искать баланс и, словно живой человек, уберегать особо хрупкие части своего виртуального тела.

Околорэгдольное падение

Хаотично падающий рэгдолл, когда инерция угасла, не реалистичен и нелеп, но ситуацию может спасти активность. Что во время падений с высоты стоит сделать в реальной жизни? Сгруппироваться.

На примере GTA V -3

Не уверен что герою гифки это могло помочь, но...
Самому простейшему проявлению активного рэгдолла в традиционном его исполнении и расчетов особо не нужно.

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

На примере GTA V -4

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

Но не всё так просто. К сожалению в большинстве современных движков, энтузиасты вынуждены бороться ради дружбы между кодом и модулем анимаций, который зачастую представляет для регуляции из кода лишь одну переменную - вес. Тоесть когда вес 1, анимация двигает кости, когда вес 0, не двигает, тут можно завозить все наработки, но по вышеописанному сценарию с падением, весами приходится играться тоже.

Hit Reaction

Хотелось этот пункт поделить на два, так как визуально падение от, например, выстрела и легкого толчка довольно различимы, но техническая реализация схожа.

На примере GTA V -5

А здесь уже вызов, до остроты ума и тысяч строк кода.
Что до костылей и мельчайших подробностей - когда-нибудь в этом году выпущу видик со своими наработками и решениями, а по логике обрисовать можно и сейчас.

Есть у персонажа центр масс, положение которого определяется из расчетов положений и веса других коллайдеров, когда активный регдолл триггерится и вся магия начинается, центр масс стремится не только вниз, но и смещается исходя из приложенных к другим коллайдерам сил.

На примере GTA V -6

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

Если ноги как опоры - скриптовая условность, то с ручками всё так же. Они, как адаптивные опоры, в ряде случаев тоже ищут на что опереться и не только при падении.

Хорошо виден переход от ейфории к обычной кинематике
Хорошо виден переход от ейфории к обычной кинематике

Познав базовые приципы, сложностей в создании активного рэгдолла остается немного - борьба с движком да многочисленные доработки, ради естественно выглядящих движений как в уже Рокстаровской Ейфории.