Делаем процедурные повороты тела — краткий гайд

Чтобы голова, туловище и ноги поворачивались последовательно.

Разработчик из Moon Studios Джейкоб Уолберг опубликовал в твиттере тред, в котором рассказал про создание процедурной анимации поворота тела для прямоходящих существ. Это свойство позволяет сделать передвижение более реалистичным. Автор не только показал эффект, но и представил код, который можно использовать в своей работе.

У такой анимации очень простой риг — базовые gameObjects ведут себя как кости. Они, в свою очередь, выполняют родительскую функцию для примитивов, из которых собран объект.

Делаем процедурные повороты тела — краткий гайд

Ниже представлены глобальные переменные, которые нужны для проекта. Здесь есть сериализуемый класс AnimatedPart, который понадобится для анимирования частей тела. Для этого нужно использовать скорость (в данном случае Rigidbody) и yawDelta (разницу между текущим вращением по Y и последним вращением по Y).

Делаем процедурные повороты тела — краткий гайд

Ниже представлена логика, которая нужна для анимирования фигуры.

Делаем процедурные повороты тела — краткий гайд

Позже Уолберг заметил ошибку и добавил исправление к коду.

Нужно включить кватернион с именем startRotation в класс AnimatedPart и установить его в начале. А затем добавить процедурное вращение к начальному вращению
Нужно включить кватернион с именем startRotation в класс AnimatedPart и установить его в начале. А затем добавить процедурное вращение к начальному вращению
Это настройки в самом редакторе
Это настройки в самом редакторе

Эту технику можно применить и к анимированным персонажам. Просто умножьте процедурное вращение на текущее вращение кости.

Более плавный вариант
1515 показов
6.4K6.4K открытий
77 репостов
16 комментариев

Более подробно и интересно о приемах процедурной анимации можно посмотреть здесь. 
https://youtu.be/LNidsMesxSE

Ответить

И вот текстовая версия на всякий случай: https://dtf.ru/79680

Ответить

Блин, вот вроде и спасибо, что принёс такое, но оформлять код картинками... За такое бить надо.

Ответить

Спасибо, очень годно. Надеюсь в будущем пригодится ;3

Ответить