Скелетная анимация или риггинг — это метод компьютерной анимации , при котором персонаж (или другой сочлененный объект) представлен двумя частями: полигональным или параметрическим сетчатым представлением поверхности объекта и иерархическим набором взаимосвязанных частей (называемых суставами или костями, и в совокупности образующих скелет), виртуальным каркасом, используемым для анимации (позы и ключевого кадра) сетки. [1] Хотя этот метод часто используется для анимации людей и других органических фигур, он служит только для того, чтобы сделать процесс анимации более интуитивным, и тот же метод может использоваться для управления деформацией любого объекта, такого как дверь, ложка, здание или галактика. Когда анимированный объект более общий, чем, например, гуманоидный персонаж, набор «костей» может не быть иерархическим или взаимосвязанным, а просто представлять собой более высокоуровневое описание движения части сетки, на которую он влияет.
Этот метод был представлен в 1988 году Надей Магненат Тальманн , Ришаром Лаперьером и Даниэлем Тальманном . [2] Этот метод используется практически во всех системах анимации, где упрощенные пользовательские интерфейсы позволяют аниматорам контролировать зачастую сложные алгоритмы и огромное количество геометрии; в первую очередь с помощью обратной кинематики и других «целеориентированных» методов.
Как описано в обучающей статье Джоша Петти: [3]
Оснастка позволяет нашим персонажам двигаться. Процесс оснастки заключается в том, что мы берем эту цифровую скульптуру и начинаем строить скелет, мышцы, прикрепляем кожу к персонажу, а также создаем набор элементов управления анимацией, которые наши аниматоры используют для того, чтобы толкать и тянуть тело.
Эта техника создает ряд костей (которые не обязательно должны соответствовать какой-либо реальной анатомической особенности), иногда также называемой риггингом в смысле существительного. Каждая кость имеет трехмерное преобразование из позы привязки по умолчанию (которая включает ее положение, масштаб и ориентацию) и необязательную родительскую кость. Таким образом, кости образуют иерархию . Полное преобразование дочернего узла является продуктом его родительского преобразования и его собственного преобразования. Таким образом, перемещение бедренной кости также приведет к перемещению голени. По мере анимации персонажа кости со временем меняют свою трансформацию под влиянием некоторого контроллера анимации. Оснастка обычно состоит как из частей прямой кинематики , так и из частей обратной кинематики , которые могут взаимодействовать друг с другом. Скелетная анимация относится к части прямой кинематики оснастки, где полный набор конфигураций костей определяет уникальную позу.
Каждая кость в скелете связана с некоторой частью визуального представления персонажа (сеткой ) в процессе, называемом скиннингом. В наиболее распространенном случае полигонального сетчатого персонажа кость связана с группой вершин ; например, в модели человека кость бедра будет связана с вершинами, составляющими полигоны в бедре модели. Части кожи персонажа обычно могут быть связаны с несколькими костями, каждая из которых имеет масштабирующие коэффициенты, называемые весами вершин или весами смешивания . Таким образом, движение кожи около суставов двух костей может зависеть от обеих костей. В большинстве современных графических движков процесс скиннинга выполняется на GPU с помощью шейдерной программы .
Для полигональной сетки каждая вершина может иметь вес смешивания для каждой кости. Чтобы вычислить конечное положение вершины, для каждой кости создается матрица преобразования , которая при применении к вершине сначала помещает вершину в пространство кости, а затем возвращает ее в пространство сетки. После применения матрицы к вершине она масштабируется на соответствующий вес. Этот алгоритм называется скиннингом с использованием палитры матриц или скиннингом с линейным смешиванием [4] , потому что набор преобразований костей (хранящихся в виде матриц преобразования ) формирует палитру для вершины кожи, из которой можно выбирать.
Скелетная анимация — это стандартный способ анимации персонажей или механических объектов на длительный период времени. Он широко используется художниками видеоигр и в киноиндустрии , а также может применяться к механическим объектам и любым другим объектам, состоящим из жестких элементов и соединений.
Захват движения (или захват движения ) может ускорить процесс скелетной анимации, а также повысить уровень реализма.
Оснастка может управляться физикой тряпичной куклы , которая автоматически рассчитывает физику движения и сопротивления со скелетными фреймами. Виртуальные свойства анатомии, такие как вес конечностей, мышечная реакция, прочность костей и ограничения суставов , могут быть добавлены для реалистичных эффектов подпрыгивания, изгиба, переломов и кувырков.
Некоторые популярные программные пакеты, в которых можно создавать оснастки, включают Blender , Autodesk Maya , SideFX Houdini , Autodesk 3ds Max , Maxon Cinema 4D , Unreal Engine и многие другие.