Список разделов » 3D Уроки » 3D Studio Max
Лицевой риггинг
Автор: Trofei | Лицевой риггинг.
Источник: Автор: Педяш Дмитрий
Всем привет. Это снова я! Пришло время для очередного погружение в производство такого важного составляющего этапа персонажной анимации, как риггинг. Но в рамках нашей статьи мы будим рассматривать лицевой риггинг, как особенно интересный с точки зрения разработки участок модели персонажа. Ведь от эмоциональности мимики персонажа, зачастую зависит то, насколько зритель будет захвачен происходящим на экране… Конечно, качество мимики напрямую зависит от опытности аниматора, который будит в дальнейшем работать с персонажем, но, те. Кто сталкивался с персонажной анимацией, или видел, как она делается, знают, что хороший риггинг может заметно облегчить аниматору работу над сценой, сэкономить уйму времени и позволить, в конечном итоге, сосредоточиться на творческой части процесса, вместо того, чтобы тратить время на рутинные перетаскивания контроллеров. А значит, риг персонажа должен быть максимально автоматизирован, избавляя работающего над ним человека от лишних телодвижений, тем не менее, оставляя значительное пространство для контроля персонажа в процессе анимации… Задачка – не то чтобы крайне сложная, но и пустяковой её назвать никак нельзя. Но начнём по пунктам. Итак, для тех, кто ещё не сталкивался с этим понятием, я бы описал риггинг следующим образом. Риггинг – это создание некой иерархии взаимосвязей, по которой будит происходить деформация объекта. Например, создание виртуального скелета, с суставами, и так называемыми «костями», которые на последующих этапах будут привязываться к mesh’у. Или создание некоторого подобия мышц, которые будут растягиваться, уменьшаясь в объеме, или сжиматься, «раздуваясь», при определённых условиях, например, при уменьшении угла между костями (симуляция бицепса). Не знаю, насколько понятной стала цель предстоящей работы после моего объяснения, но, как говориться, лучше один раз увидеть… Итак, что мы имеем в начале работы и каков наш план действий. Вот у нас исходный mesh:
Сразу оговорюсь. Описанный мной пример, - это то, что я выбрал как оптимальный вариант лично для себя. И, конечно же, существуют и иные способы реализации риггинга. Некоторые более упрощённые, ну а некоторые и более сложные. Тем не менее, данный вариант я считаю оптимальным, потому как следуя данным методам, можно получить довольно хороший контроль над мимикой персонажа, хотя и времени это потребует несколько больше, чем, скажем, в случае с вариантом, когда сетка привязывается к некоторым костям, расположенным на выбранных опорных точках, например так:
Ну а теперь о самом интересном. План следующий. В финале я хочу получить под mesh’ем лица персонажа взаимосвязь «растягивающихся» костей, которые положению и ходу движения будут напоминать мышцы лица. К тому же было бы неплохо создать связь контроллеров, с которыми будет работать аниматор. Контроллеры должны быть связаны между собой, плавно двигая определённую область лица. То есть, один контроллер будит оказывать влияние на определённую область лица персонажа, распределяя влияние сразу на несколько опорных точек. К тому же у аниматора должна остаться возможность контролировать каждую опорную точку рига лица независимо. Это, при необходимости, поможет сделать тонкую доводку эмоции. В последствии, было бы неплохо предусмотреть какой не будь способ «запекания эмоций». Чтобы аниматор мог сохранять положения ключевых точек лица, и в будущих сценах не выстраивать эмоцию заново, а быстро подгрузить сохранённую ранее. Вот собственно и вся задача. Многие операции, используемые далее, довольно проблематично, или долго выполнять вручную. По этому навыки использования Max Script сильно помогают. Но тем, кто с ним не знаком, впадать в депрессию вовсе не обязательно. Я не однократно в книгах и статьях встречал золотое правило CG работника: «Никогда не тратить время на то, что уже кто- то делал ранее». Ну а если этот кто-то разрешил пользоваться плодами своих усилий безвозмездно, то вообще грех пройти мимо, и тратить время производства на повторение пройденного кем-то пути. Вообще всё, на чём можно сэкономить время всегда приветствуется, а это самое время всегда интереснее потратить на творческий процесс, чем на рутину. Вот и я, когда-то набрёл на один весьма полезный ресурс, который в последствии сэкономил мне уйму времени. Ну а теперь немного о методах. Некоторе подобие мышц я создал с помощью растягивающихся костей. Пример их работы можно посмотреть из видео,
но а метод прост – прост. Например: Яоздать 2 хэлпера, которые в последствии будут прилинкованы к костям скелета. Выровнять ихз по позиции и ориентации один с bone01, второй с bone02. На bone01 назначил lookАt constraint, где указал Dummy02 как lookat target, а Dumm02 как Upnode. На bone02 назначил orientation constraint к Dummy01 и прилинковал Bone01 к Dummy02
Вот такой вот незатейливый метод. Так что можно написать скрипит, который будет проделывать все вышеперечисленные действия автоматически, для целой иерархии костей. Далее я разместил кости примерно так, как располагались бы некоторые мышцы героя:
После того, как расположение костей меня устраивали, я организовал зависимости между ними тем же способом, как было показано выше. В итоге получил следующую картину:
Каждый узел между костями я прилинковал к отдельному хелперу, ориентированному соответственно движению «мышц».
Этот слой хелперов я сделал другим цветом, для личного удобства. Каждый жёлтый хелпер я прилинковал к ещё ещё одному, ориентированному также само. Все это самый верхний слой, он может в последствии помоч, если понадобиться использовать этот риг на подобном персонаже.. Мало ли, дополнительная опция не помешает
Кстате, в данном риге я обнулил позицию жёлтых хелперов, и их контроллеров. Так, кривые их анимации будут проходить через начало координат, что будит удобнее для аниматора.
Как видно, в роли элементов управления я использовал обычные сплайновые форы. Ну а теперь начинается самое интересное. Надо связать параметры так, чтобы движение жёлтых стрелочек ( Это мой верхний уровень элементов управления) в определённой пропорции передавалось на рядомстоящие опорные точки. Для этого я использовал WireParameters вместе со слоями (List Controller (Position List)) в панели Motion. Слои Position я сваривал с аналогичными слоями соседних сплайн-контроллеров, с использованием множителя. Например, X_Position первого сплайн контроллера, передаётся X_Position*.5 второго, и так далее (кстати, в WireParameters кроме обычного множителя, можно прописывать и условия, вроде, если значение позиции по оси Х материнского объекта больше нуля, то дочерний должен двигаться по оси Y, но в минус, и.т.д)
В завершении я создал такие же сплайновые формы, для контроля каждой узловой точки лицевого рига независимо (зелёные четырёхсторонние стрелочки). Теперь я получил возможность делать начальную настройку эмоции с помошью жёлтый стрелочек ( верхнего уровня контроля), а также делать тонкую доводку с помощью нижнего уровня сплайн-контроллеров. При необходимости можно связать с опорными точками не только перемещение, но и вращение сплайнов. Таким способом можно добиться довольно хорошего уровня контроля mesh’а в процессе анимации. Вот пару видео, где можно лицезреть результаты проделанной работы.
Конечно, в таком виде передавать обьект аниматору… Или же анимировать самому ещё рановато. Хотя бы потому, что нет элементов управления для глаз, а они, как говорят – зеркало души J, а так же нет никаких способов, для запоминания созданных эмоция. Ну, или хотябы элементов управления, которые позволяли бы аниматору контролировать конкретные области лица, как то рот, брови или веки. Всё это ещё предстоит сделать в недалёком будущем. Ну а на данный момент я рассказал всё, что хотел рассказать в данной статье. На последок хотел бы заметить, что о многих решения тут рассказано вскользь, и данную статью ни в коем случае нельзя назвать обучающей, это скорее всего просто демонстрация того, какой подход был принят в данном конкретном случае… Ну и поделиться некоторым опытом, когда-то перенятым мною у других. |
Автор: Blew | Спасибо, для меня очень полезно! |
Автор: Scrapler | Ваау! Наконец доходчивый урок по ригу морды, а то все делают и никто необьясняет как! Респект Trоfei тебе!!! |
Количество просмотров у этой темы: 10386.
← Предыдущая тема: Создание цветов (скрипт)