Об авторе:
Зовут меня Поклонов Максим Александрович, в сети могу встретиться
как MaxGoodwin. Мне 30 лет, живу в Казахстане в городе
Усть-Каменогорске. Занимаюсь графикой около 10 лет, профессионально
последние года три или четыре. Работал в основном в видео рекламе, в
последний раз, в небольшой анимационной студии. Сейчас нахожусь в
свободном полете, занимаюсь бизнесом и фрилансом. Наконец-то волен
делать такую графику, которую я хочу. Не утратил веру сказку, чего и
вам желаю.
Об уроке
Всем привет, с вами снова я. На этот раз хочу рассказать об общей концепции сборки персонажа для анимации. Компания Axysoft
любезно разрешила использовать персонажа агента, разработанного мной
специально для мультфильма одной из игр, в качестве наглядного примера
оснастки персонажа. Урок посвящается искателям, которые никогда не
останавливаются на достигнутом. Я покажу вам общую картину. Не буду
особо углубляться в детали. Те, кто действительно хочет стать
профессиональным аниматором, смогут почерпнуть из этого урока очень
многое. Я дам только принцип, иначе если разложить все на отдельные
действия, то пришлось написать бы об этом книгу. Однако постараюсь
донести информацию наиболее понятно, чтобы урок был максимально
полезен.
Не хочу присваивать себе достижения, которые буду излагать. Многому
я научился у других людей - суровых профессионалов, до которых мне еще
расти и расти. И все же делиться буду собственным опытом, приемами,
которые, несмотря на глюки, и жуткую головопарку нарабатывались долгие
годы.
Введение
Я хочу открыть вам один секрет. Правда, о нем пишут в любой книжке,
но видимо не достаточно доходчиво, поэтому я открою вам его в истинном
свете. Многие склонны полагать, что все проблемы может решить супер
мощный компьютер. Однако это не так, и вот почему: самое главное в 3D
нужно осознать такое понятие как «декорация». Декорация - это что мы
видим на итоговом рендере. То есть персонаж - это декорация, его мы
гнем костями - простыми объектами. Любая ткань, будь то пальто, штаны,
и прочая одежда персонажа это тоже декорация, и конечно же, гнется она
не сама по себе, то есть она не обрабатывается симулятором ткани.
Внутри нее находится управляющий объект, который и задает движение
декорации. И вообще запомните, никакая Hi Poly декорация не может
использоваться в расчетах динамики! Все действия происходят с простыми,
грамотно построенными низко полигональными объектами, а декорация
просто привязана к этим объектам, так же как персонаж повторяет
движения собственного скелета. Ну и соответственно, чтобы работать с
такими объектами, совсем не нужен убийственный цех из полусотни
ультрасовременных графических станций. Далее вы сами в этом убедитесь.
Общая концепция оснастки персонажа
Модель
Для того чтобы сделать модель требуется скетч или по-нашему набросок.
Глядя на набросок, создаем модель. При создании модели надо
обязательно представлять как будут изгибаться конечности, где будут
располагаться суставы и тд. Модель делается в низко полигональном
исполнении, но каждая линия, каждый полигон должен быть четко
обоснованным необходимостью. Вообще, к слову сказать, низко
полигональное моделирование целое отдельное искусство в своем роде.
После создания модели делаем Unwrap UVW всех необходимых частей, для
правильного текстурирования.
Face driver и Cloth Driver
Для меш анимации мягких тел, таких как лицо и одежда будем использовать
так называемые драйвера. Драйвер - это низко полигональная копия
объекта (или часть объекта) которая будет деформировать высоко
полигональную декорацию. Поскольку модели будут отдельными их нужно
садить на один скелет, для этого после скининга модификатор Skin просто
копируется с модели на драйвер как Instance. В свою очередь модели
назначается модификатор Skin Wrap, а в качестве деформера указывается
ее драйвер.
После этого любые преобразования драйвера будут отражаться на модели.
Collision object
Для хорошей и легкой анимации ткани, помимо низко полигонального
драйвера ткани необходимо учесть еще один не мало важный момент. Объект
столкновения тоже должен быть заранее специально подготовлен для этого.
Причем его форма может отличаться от оригинала в случае необходимости.
Если указать всю модель в качестве Collision object, то
соответственно расчет будет происходить несравнимо дольше, да и к тому
же наверняка с ошибками.
Hair driver
Анимация волос на сегодняшний день представляет громадную проблему для
обычного пользователя. Ни одно средство для создания волос не
предлагает нормального безглючного законченного инструмента для задания
нормальной динамики волос. Однако для этого буквально на «ура»
пригождается все тот же симулятор ткани Cloth FX. Он обладает всеми
необходимыми возможностями для этого. Принцип этого способа вкратце
опишу ниже.
Хочу отдельно поблагодарить Комарову Заряну, за участие в разработке этого способа, и за поиск наиболее оптимальных настроек ткани для симуляции волосяной динамики.
Rigging
Самая распространенная ошибка начинающих аниматоров в том, что они
стараются визуально правильно размещать кости внутри модели. Обычно с
толку сбивает форма костей и все стараются подогнать их под модель. Это
не правильно! Форма костей абсолютно ничего не значит. Что такое скелет
- это иерархия суставов - все! То есть при создании и размещении
скелета совершенно не важно, вылезла кость из модели или она тонкая и
тд. Самое главное, чтобы сам сустав, сама точка, в которой сгибаются
кости скелета, была правильно размещена внутри модели, именно в месте
сустава.
Запомните правильное размещение джоинтов (суставов) это ключ к правильному риггингу.
Скальп
Таким душераздирающим словом называется объект, из которого растут
волосы. Его форма полностью зависит от формы роста волос на голове
персонажа.
Практические моменты
Для начала разберем несколько практических примеров, которые будут
использоваться при оснастке персонажа. Дело в том, что здесь будут
применяться не совсем привычные или стандартные подходы и
соответственно придется пояснить, как это реализовано иначе
повествование потеряет смысл.
Attachment Controller
В данном случае мы будем активно использовать Attachment Controller. Он
позволит нам привязать к модели такие не маловажные детали как
пуговицы, шляпы, очки, а также при создании вспомогательных объектов.
Для этого можно создать Point Helper, назначить на него Attachment
Controller и указать позицию размещения на объекте.
Вообще эта процедура требует сделать довольно много движений, и
разместить хотя бы с десяток точек на модели доставит не мало возни.
Для этой процедуры я использую скрипт Create Point on Surface из
бесплатного пакета Пола Хоримса TiM-Scripts www.hyperent.com.
Эти скрипты я назначил себе в Quad Menu наряду с остальными полезными скриптами.
Face Attached to Surface
Для анимации мимики будем делать еще один интересный прием. Поскольку
анимация мимики будет делаться не костями, а передаваться с
меш-анимации лицевого драйвера, то надо к чему-то привязывать нижнюю
челюсть. Что к чему, об этом позже, сейчас разберем суть самого приема.
Нужно сделать объект, а внутри него полигон, привязанный к стенкам
этого объекта. Этот полигон будет имитировать челюстную кость.
Принцип построения следующий: строим модель и отдельно от нее
полигон. Точки полигона размещаем, как нам надо внутри модели на
полигонах или точках и применяем модификатор Skin Wrap. В качестве
деформера указываем модель, и теперь при любых деформациях модели,
точки полигона будут, как бы привязаны к стенкам модели.
К полигону применяем Mesh Smooth и прилепляем к нему точку на
Attachment Controller. А к этой точке уже можно линковать нижнюю
челюсть.
Данный прием также легко делается с помощью скрипта Create Face Attached to Surface из пакета TiM-Scripts.
Часть 1. Подготовка модели
Модель
Итак, создаем модель и размещаем ее в нулевой точке.
При создании модели желательно использовать модификатор Symmetry,
чтобы все симметричные объекты можно было разместить идеально в нулевой
точке. Это здорово облегчит риггинг и скининг, особенно при работе с
пальцами, тогда можно будет скопировать вес точек с одной половины на
другую, в противном случае придется настраивать всю модель.
Модель не обязательно должна быть единым мешем. Например, у меня
сейчас модель сделана практически вся из отдельных частей. Ноги, руки и
рубашка - один элемент, потом, отдельно - голова, глаза, очки, шляпа,
пуговицы, пальто и зубы.
При скининге совсем не обязательно копировать Skin на каждый элемент
путем Paste Instanced, потому, что каждый элемент может иметь
собственные настройки Skin-а, а так же содержать только необходимые
кости.
После того как модель создана и размещена, надо бы сделать Reset
X-Form каждого элемента (находится в панели Utilities) и конвертировать
обратно в Editable Poly. Эта процедура обнулит все внутренние
трансформации объектов. Так же нужно переместить Pivot всех объектов в
нулевую точку и проследить чтобы он был в нулевой точке, иначе опять же
при скине могут возникнуть проблемы с Mirror Plane (копированием весов
точек).
Более простой и надежный способ приготовить меш к риггингу это
воспользоваться скриптом Collapse Selected to Poly at Origin из пакета
TiM-Scripts. Он сбросит все скрытые трансформации и переместит Pivot
всех выделенных объектов в нулевую точку. Еще раз замечу, модель перед
этим нужно разместить идеально в начале координат.
По-хорошему бы, не полениться и хорошенько сделать Unwrap UVW для всех элементов.
Еще одна деталь. Чтобы не путаться при нацеливании глаз, будем
использовать глазные хелперы. Просто создаем два Point Helper-а, и к
ним уже линкуем модели глаз. А хелперы нацеливаем на таргеты при помощи
Look At. Как управляться с Look At контроллерами смотрите здесь.
Чтобы было удобнее работать с Look At таргетами, я их не линкую
напрямую, а назначаю на родительский таргет, контроллер Link Constraint
и в качестве целей могу указывать разные объекты. Например, сначала он
у меня прилинкован к головной кости скелета (или лучше всего к точке
приаттаченой к макушке), потом я на какое-то время линкую его к
предмету в сцене, а потом опять к голове. Это дает мне возможность
управлять взглядом персонажа, как мне надо.
Face Driver
Потом надо подготовить дополнительные элементы. Это так называемые
драйвера. С помощью драйверов мы будем передавать анимацию на
декорации. Сначала сделаем драйвер для лица. В данном случае я просто
скопировал модель головы.
Cloth Driver
Потом я скопировал те части пальто, которые будут раскачиваться при ходьбе. Сделал Detach, получился драйвер для ткани.
Только тут есть один нюанс - карманы, отверстия и ненужные разрезы
надо слепить. Декорация может быть сколь угодно сложной, но драйвер
должен быть простой.
Еще один нюанс. Самый идеальный вариант, когда драйвер - полная копия
модели. Но так бывает не всегда и тут нужно учесть еще кое-что. Точки
драйвера будут действовать на модель точно так же как при Skin-е. И у
каждой точки есть определенный радиус действия. Если модель сильно
отличается от драйвера то сетку драйвера желательно делать пореже, а в
местах, где необходимо уплотнить драйвер, то желательно чтобы в этих
местах драйвер был подогнан как можно точнее под точки модели.
Collision Object
Из рук модели я делаю Collision Object. Причем форма объекта
столкновения может быть такой, чтобы обеспечить нужные коллизии. В
данном случае в месте кистей Collision Object расширяется в виде
воронки.
Скальп
Выделив полигоны на голове надо скопировать и отделить их. После
некоторой доработки получится объект, имеющий форму роста волос. Позже
мы прилепим его на Skin Wrap к драйверу головы и пустим из него волосы.
Когда все драйвера готовы, начинаем оснащать модель.
Часть 2. Оснастка модели
Скелет.
Строим скелет и размещаем его в нулевой точке. Высоту сразу настраиваем
так, чтобы тазовая кость разместилась на высоте таза персонажа. Потом
настраиваем грудную клетку, голову, конечности и пальцы на одной
половине. Если модель построена симметрично, то настроенные кости с
одной половины можно скопировать на другую половину, благо многие
костные системы позволяют это делать.
Самое главное это правильно разместить джоинты (суставы). Для того
чтобы увидеть джоинты я выделяю весь скелет, перевожу его в Box Mode
(отображение только габаритного контейнера) это можно сделать через
свойства, и во вкладке Display, в самом нижнем свитке Link Display
включаю галку Display Links.
Еще один момент по ригу. Ступни. Я работаю с CAT и там есть такая
штука Foot Platform и, в общем-то, везде пишут, что Foot Platform
должен занимать всю ступню целиком. Но тут есть одно но, в зависимости
от системы, в которой вы работаете, размещение Foot Platform должно
позволять изгибаться пальцам ноги. В моем случае Foot Platform идет от
пятки до пальцев. Если все оставить как есть, то пальцы будут
проваливаться в пол, ну а если поднастроить CAT motion (редактор
походки в CAT) то пальцы будут двигаться как надо.
В общем, в чем бы вы не работали, учитывайте положение ступни и пальцев скелета.
Обязательно перед скином сделайте тестовую анимацию скелета, лучше
всего цикл ходьбы. Обычно на этом этапе вылезают ошибки построения
скелета. Очень обидно бывает, когда скин настроен, начинаем делать
анимацию, а скелет двигается неправильно. Удаляем скин, переделываем
Rig и начинаем по новой скинить...
Скин.
По скину особых замечаний, наверное, не будет. Делается все как обычно.
Единственное что стоит учесть это тканные элементы, они будут скинится
отдельно и те места, которые будут мягкими желательно продумать
заранее. Их не надо скинить на все подряд кости. Например, пола пальто
не скинится к ногам она будет просто болтаться тканью. Если модель
симметричная, то настраиваем сначала одну половину, потом входим в
Mirror Mode и перекидываем настройки костей и веса точек на другую
половину.
При работе со скином или с тканью некоторые сомнительные участки можно смягчить, применив к ним Mesh Select и Relax.
Прискиненый персонаж должен двигаться правильно. Для этого нужно
сделать тестовую анимацию и все тщательно проверить и поднастроить. В
CAT я для этого обычно просто задаю цикл походки. Драйвера и скальпы, и
прочие дополнительные причиндалы пока не трогаем. Ими мы займемся
отдельно.
Ткань.
Сначала нужно прискинить драйвера. Для этого прямо в стеке
модификаторов, через контекстное меню копируем модификатор Skin с
модели и вставляем его (Paste) в стек драйвера ткани и объекта
столкновения, если помните, это у нас измененная копия рук. Теперь
Cloth Driver и Collision Object будут двигаться вместе с руками.
Подстройте Skin, если требуется.
Теперь нужно связать драйвер и модель. Переводим скелет в Setup Mode
- дефолтовый режим с растопыренными руками. И к модели применяем
модификатор Skin Wrap. В качестве деформирующего объекта указываем
драйвер ткани. При необходимости подкручиваем настройки. Задача
заключается в том, чтобы модель правильно повторяла все изменения
драйвера.
При назначении Skin Wrap-а происходит инициализация геометрии
драйвера, поэтому в этот момент модель и драйвер должны находиться в
одном положении. Но иногда случается такой глюк, в процессе настройки
других модификаторов, Skin Wrap самостоятельно преринициалицируется при
несовмещеных позициях. Для того чтобы исправить положение нужно
поотключать все модификаторы в стеке обоих моделей (кроме Skin Wrap
естественно), и запустить реинициализацию нажатием кнопки Reset в
модификаторе Skin Wrap. (При изменении меша драйвера или модели,
бывает, реинициализация не помогает, приходится удалять Skin Wrap и
назначать его по-новой).
Ну, а теперь, собственно, самое интересное - задаем анимацию ткани.
Переводим таймслайдер в нулевой кадр, выделяем Cloth Driver и Collision
Object и применяем к ним модификатор Cloth FX. В свойствах указываем,
что у нас объект столкновения, а что ткань.
Выделяем Cloth Driver, заходим в подобъект Group и задаем группы. Нужно
сделать несколько групп, во-первых, чтобы зафиксировать части драйвера
на месте, чтобы они не падали вниз, а были «приклеены» к пальто, а
во-вторых, чтобы смазать границу между болтающейся частью пальто и не
болтающейся.
Создаем первую группу. Для этого выделяем те точки драйвера, на
которых будет «висеть» ткань. Группу создали, назвали ее, например
«Coat HARD» и нажали кнопку Preserve. Это значит, что данные точки
будут попадать под действие предыдущих модификаторов, то есть останутся
под действием Skin-а.
Так же создаем вторую группу, чтобы закрепить рукава. Называем ее как-нибудь типа «Hands HARD» и тоже делаем Preserve.
Мне не нужно, чтобы ткань болталась слишком интенсивно, для этого я
теперь делаю мягкие группы. Делаем выделение, как и в первой группе
(можно прямо кликнуть на первой группе в списке и точки выделятся
сами), создаем новую группу и называем ее «Coat SOFT». На эту группу не
назначаем никакого действия. Но в настройках активируем галку Soft
Selection, настраиваем его как надо и настраиваем свойства такни этой
группы. Нам нужно сделать ткань в этом месте жестче, в этом здорово
помогают настройки Bend и Shear. Bend выкручиваем до 100, а Shear аж до
1000. С этими параметрами можно спокойно экспериментировать, достигая
нужного результата. Ставим галку Use These Properties, иначе эти
свойства не будут включены.
То же самое проделываем с рукавами. Создаем группу, называем «Hands
SOFT», но на нее я назначаю действие Preserve. Это нужно для того,
чтобы рукав плавно выходил из под действия скина и переходил в ткань.
Так я смогу сделать ткань не то, чтобы жестче, но типа того. Для того
чтобы эта настройка повлияла на Preserve, нужно активировать галку
Soft. Настройки Bend и Shear делаем такие же, как у пальто, и ставим
галку Use These Properties. Выходим из режима подобъекта.
Перед тем как запустить симуляцию, установим еще один важный
параметр - Subsample. Он увеличивает точность расчета. Он сильно грузит
машину, но на такой низко полигональной модели этот параметр можно
смело увеличивать до 4-6.
Вот теперь запускаем просчет. Сначала нажимаем кнопку Simulate
Local, чтобы ткань обвисла на Collision Object, потом запускаем
Simulate.
Теперь, если все правильно, то модель пальто будет повиноваться драйверу.
Лицо и мимика.
Мимику персонажа я решил вынести вообще в отдельный файл. В нем
находится копия лицевого драйвера, который оснащен полным арсеналом
лицевых костей. Я делаю мимику, и сохраняю ее в файл при помощи
модификатора Point Cache. И потом при необходимости открываю сразу два
макса, один со сценой другой - с мимикой. На первый взгляд это не
удобно, но на практике это совсем не так.
Анимацию самой мимики здесь затрагивать не буду, это тоже своего
рода колоссальная по объему тема, требующего отдельного внимания. Дам
только пару советов, чтобы не бросать проблему нерешенной. Анимацию
мимики я делаю собственным способом, но построение костей чем-то
напоминает вот эту систему.
С ее помощью можно делать довольно гибкую анимацию мимики,
единственное, что замечу, там применяются «мягкие» кости (то есть их
можно тянуть) и показано как сделать такие кости в ручную, назначая
контроллеры. Вообще это можно сделать за пару кликов используя скрипт
Пола Нила - Stretchy Bones. Я сжалюсь на теми, кто захочет разобраться
с этой системой, и дам этот скрипт.
Его надо поместить в папку \3dsmax root\UI\MacroScripts. После
перезагрузки макса скрипт можно назначить в Quad Menu, как я, или
вынести на панель в виде кнопки.
Вкратце, работает он так: выделяем кости, и применяем скрипт. После
этого на каждом джоинте появится хелпер, при помощи которого можно
управлять костями. Внимание: кости надо выделять двойным кликом по
первой кости в иерархии, тогда выделится вся цепочка костей как надо.
Если кости выделять вручную, скрипт не сработает. Кости я «рисую» прямо
по модели головы включив привязку к полигонам.
Если есть желание освоить мимику более углубленно, то ищите DVD от CG Academy - Intermediate Gigging 4.
Но вернемся к нашей модели. Принцип передачи анимации с драйвера на
голову такой же, как при анимации ткани, с той разницей, что анимацию
будет задавать модификатор Point Cache. В отдельном файле с мимикой, я
создаю анимацию. На верху стека у меня назначен Point Cache. С его
помощью я записываю меш анимацию головы в файл. В файле с цены у меня
есть драйвер лица, который тоже наверху стека имеет модификатор Point
Cache. С его помощью я загружаю в драйвер, сохраненную ранее
меш-анимацию лица, а драйвер, в свою очередь, передает ее на модель
через Skin Wrap.
Итак, копируем Skin с модели головы и вставляем как Instance в стек
драйвера. Теперь и драйвер, и модель головы «сидят» на одном скине.
Назначаем на модель модификатор Skin Wrap и в качестве деформера
указываем драйвер. Настраиваем параметры, так чтобы драйвер передавал
анимацию один в один, глюков быть не должно. Важный момент: перед
применением модификатора Skin Wrap нужно поотключать все модификаторы и
на модели и на драйвере, чтобы они оба оказались в дефолтном положении
и полностью совместились.
Волосы.
По волосам замечу следующее. Я упоминал выше, что мимику делаю
собственным способом. Я делаю ее мокапом - захватом с камеры. Наряду с
мимикой мой способ позволяет схватывать небольшие наклоны и вращения
головы. Вот почему в меш анимации головы присутствуют наклоны. Я могу
отключить эти наклоны, но, по-моему, так анимация будет несколько
живее. Поэтому скальп, как и драйвера, я буду не линковать к скелету, а
буду привязывать прямо к мешу. Поскольку модель головы у нас -
декорация, то все привязки естественно будем делать к драйверу. Вот и
назначаем на скальп Skin Wrap и указываем драйвер в качестве деформера.
Используя скальп, можно делать волосы кому как нравится. Я приверженец
Ornatrix, но так же использую Final Render в качестве рендера. Так вот
Ornatrix отказывается полноценно работать в FR. Зато в FR без проблем
работает Hair FX. И в этой работе я использую именно его. Поскольку
здесь не используется динамика волос, я вкратце расскажу о ней на
другом примере. Для примера буду использовать Hair FX.
Я создам простой объект (скальп) и модель волоса (сплайн). В обычном
случае можно просто прилинковать сплайн к скальпу, чтобы волосы при
анимации вели себя правильно. Но если поверхность скальпа будет
анимирована, как в моем случае или при анимации животного, покрытого
шестью, то сплайны придется аттачить прямо на поверхность. Для этого я
размещаю сплайны на поверхности, и в местах начала волос делаю
приаттаченые к поверхности точки, используя скрипт Create Point on
Surface (способ описан выше). А потом просто линкую каждый сплайн к
своей точке.
После применения Hair FX и сплайнов, в качестве направляющих, мы получаем скальп, покрытый направляющими волос.
Я сделал слишком плотный скальп в своем примере, и направляющих
получилось много, но зато я покажу, что симулятор ткани справляется и с
такой задачей. В панели Modify мы можем преобразовать полученные
направляющие, в какой либо вид.
Конвертируем их в Cloth Mesh. После этого мы можем применять
модификаторы как к обычному мешу. Применяем Cloth FX. Сначала в
свойствах указываем, что это ткань. За тем заходим в подобъект Group и
выделяем корни волос. Задачка не из легких, я для этого использую Paint
Selection. Просто крашу, выделяя все вершины, включая нужные, потом
крашу, снаружи снимая лишнее выделение и оставляя только нужные вершины
выделенными. В более поздних версиях Cloth FX в подобъекте Group
появляется кнопка Get, она позволяет выделить корни волос одним кликом.
Чтобы придать волосам жесткость нужно создать еще одну группу. Для
этого опять выделяем корни (можно кликнуть на первую группу и ее точки
выделятся) и создаем вторую группу. Назначаем ей тоже Preserve. Ставим
галку Soft, активируем и настраиваем Soft Selection. Таким образом,
волосы будут плавно переходить из жесткого состояния в ткань. Так же
подкручиваем до 100 Bend, Shear ставим 1000, ставим галку Use These
Properties, это добавит жесткости самой ткани.
Теперь, если есть анимация, запускаем сначала Simulate Local, потом Simulate и смотрим, что получилось.
Я не стал сильно досконально отстраивать параметры, потому, что не
преследовал какой-то конкретной цели, кроме как продемонстрировать этот
способ. Тут я показал более-менее сложный пример с большим количеством
направляющих, анимацией скальпа и анимацией поверхности скальпа, чтобы
показать возможности по максимуму. Далее я приведу некоторые настройки
ткани, и объясню, как они влияют:
Bend - настраивает изгиб ткани.
Shear - придает жесткость.Диапазон величин может достигать 10 000. Хорошо работает в купе с Bend-ом.
Density - плотность. Пользоваться очень осторожно. Чувствительный параметр. Придает ткани что-то типа веса.
Damping - тоже чувствительный параметр. Немного влияет на «резиновость» ткани.
Air res. - сопротивление воздуха. Хорош для гашения колебаний, и придания легкости.
В принципе, для большинства случаев, знания этих настроек будет достаточно.
Таким нехитрым образом можно делать практически любую динамику
волосам, а так же коллизии с другими объектами. Вообще желательно
делать менее плотный скальп, чтобы уменьшить количество направляющих,
тогда будет легче управляться с коллизиями, да и вообще, легче при
анимации.
То же самое можно проделать и с Ornatrix, но путь немного сложнее.
Нужно сделать направляющие волос, отредактировать их, и сделать копию.
Одну копию преобразуем в Ox_mesh и потом сконвертим в Poly, а вторую
копию используем для создания волос. Первую копию обрабатываем как
ткань, а вторая повторяет ее движения через Skin Wrap. Единственное,
что Skin Wrap должен находиться в стеке ДО создания волос и действовать
непосредственно на направляющие.
Кстати, к волосяным направляющим можно так же применять и другие
модификаторы. Например с помощи Skin Wrap можно сделать делать анимацию
косы.
Аттачи.
Теперь прилепим к модели остальные элементы, такие как пуговицы, шляпа
и тд. Прилеплять будем все через ту же приаттаченую к поверхности
точку. И сразу же разберем несколько моментов. Лепить аттачи на
декорацию ни в коем случае нельзя. Аттач приклеивается к определенному
месту на определенном полигоне, то есть когда мы применим к декорации
сглаживание, то наш аттач уедет неведомо куда. Поэтому все аттачи будем
лепить, конечно же, на драйвера. Вот с пуговиц и начнем.
Приближаем нужный участок, и создаем приаттаченые точки в нужных местах. После чего просто линкуем пуговицы к аттачам.
Точно таким же образом аттачим очки и шляпу. Приаттачить их можно к
одной точке. Для этого выбираем место на голове, которое не будет
подвержено лицевой анимации. Самое подходящее место - это макушка.
Создаем на драйвере приаттаченую точку, и линкуем к ней шляпу, очки,
глазные хелперы, и верхние зубы.
(Чтобы разгрузить обзор, я обычно перевожу некоторые объекты в Box
Mode. Очень удобно, если назначить Box Mode на горячую клавишу.)
Ну и последний аттач это нижние зубы. Для того чтобы правильно
прикрепить их к мешу построим полигон, имитирующий челюстную кость.
Этот прием был описан выше. На полигоне размещаем аттач, и к нему
линкуем нижние зубы.
Часть 3. Рендер и постобработка
Чтобы сделать в итоге готовый, качественный продукт, нужна красивая
картинка. По режиссуре говорить не буду, это вообще отдельная наука,
если плохая режиссура, то никакая картинка не спасет проект. Но
качество картинки - есть не маловажный фактор, вот и поговорим об этом.
Любой картинке нужны эффекты, не раз было так, что не особо
выразительная картинка превращается в шедевр. Главная проблема в том,
что в том же максе, сложно совместить всевозможные эффекты, и
порендерить их одновременно. Случаются различные глюки, один плагин не
работает с другим, либо все происходит несоизмеримо долго, либо вообще
ничего не происходит, а просто все вырубается без предупреждения.
Знакомая песня?
Решение этой задачи до банальности и простое. Все пост-эффекты, что
мы применяем в максе, можно делать уже после того, как порендерина
картинка, в процессе видеомонтажа. Фокус заключается в том, что при
рендеринге к изображению подключаются необходимые для производства
эффекта каналы. Только в максе мы не работаем непосредственно с ними,
мы просто включаем Image Motion Blur (смаз при движении), Glow (сияние)
или Depth of Field (глубина резкости) в конце концов. Но мы и понятия
не имеем, как создается сам эффект. Зато если сделать рендер и
сохранить изображение в файл содержащий каналы, например в *.RPF то у
нас получается чистый исходник, на котором мы можем настроить эффекты
как нужно, в сторонней программе, а если сделать рендер сразу с
эффектами, то если что-то не так, то придется все перерендеривать.
Каналы
Чтобы понять, что такое каналы, представим книжку. Называется она
G-buffer. На лицевой странице мы видим RGB изображение, а в качестве
страниц – каналы. Их невидно, но открыть книжку и посмотреть каналы нам
поможет профессиональный пакет видеомонтажа типа Fusion, Combustion,
есть и другие, в принципе.
Так вот, что нам дают эти каналы: например Z-buffer дает нам
черно-белую картинку, где каждая точка имеет цвет в зависимости от
удаления в сцене.
Благодаря Z буферу, мы можем применять 3D эффекты на видеомонтаже,
такие как туман или глубина резкости, можно поместить в 2D изображение
объект, как будто это не 2D, а 3D сцена, и даже сымитировать освещение!
И к тому же сами эффекты можно сделать намного качественнее чем в
максе. При помоши плагинов можно настоить эффект DOF с очень даже
неплохим боке, то же касается и остальных эффектов.
Канал Z буфера, прошу не путать с каналом, который дает Render
Elements. Напомню, Render Elements – опция доступная в настройках
рендера, позволяет вывести содержимое некоторых каналов в G-buffer. Но
он работает не корректно, во всяком случае, получить Z канал волос,
если они присутствуют в сцене, вам не удастся.
Motion Blur нам поможет сделать канал Velocity. Этот канал выглядит
как разноцветная картинка. В зависимости от движения в кадре каждая
точка имеет определенный цвет, который понимается как вектор движения.
И в соответствии с информацией точек происходит направленное размытие
картинки.
(для демонстрации сделал некоторые скриншоты во Fusion, а некоторые в Combustion)
Точно так же делается Image Motion Blur и в максе. Только если что-то не так, то картинку придется пересчитывать по-новой.
Правда есть одно но. Волосы не влияют на канал Velocity. И
соответственно не удастся применить к ним Motion Blur используя этот
канал. Зато есть возможность делать это, вообще не используя никаких
каналов. Для применения к любому изображению моушен блюра я обычно
применяю плагин для After Effect Reel Smart Motion Blur. Этот плагин
позволяет примерять смаз к обычной последовательности кадров не имеющей
никаких каналов. Плагин просто анализирует изображение и сам определяет
вектор смаза. Эффект получается потрясающе реалистичный, и этот плагин
меня, в общем-то, ни разу не подводил. Радует и то, что преимущественно
плагины от AE подходят как для Fusion так и для Combustion.
Покажу еще один канал – Material ID. Этот канал появляется, когда мы назначаем номер на канал эффектов в максе.
Примерно так же выглядит канал Render Node ID
Эти каналы похожи. Их можно использовать для применения эффектов
определенного объектом участка изображения. Например, можно назначить
на конкретную область эффект сияния.
Чтобы подытожить сказанное, расскажу, как можно использовать эти
каналы на практике. Для того чтобы получить изображение, содержащее эти
каналы, нужно указать сохранение файла в формат RPF или RLA. В
настройках формата нужно включить использование нужных каналов. Таким
образом, мы получим то, что требуется. Рендерим сиквенцию кадров, после
чего открываем в монтажной программе, поддерживающей каналы, и делаем
эффекты. Чтобы совместить все нужные эффекты, требуется некоторе знание
мтонтажного пакета, но все реально все делается. Ну, а потом кому как
нравится. Свести все готовые куски можно там же, либо в другой
программе типа Adobe After Effect или других.
Еще сделаю одно дополнение по Z буферу. Если сцена содержит
поверхности с масками прозрачности, то стандартный Scanline рендер не
увидит никакой прозрачности и даст нам Z буфер в виде объектов,
присутствующих в сцене.
В качестве рендера я использую Final Render, и по умолчанию он
фиксит этот глюк. Но наверняка эта проблема, все же имеет место быть, и
для ее решения можно использовать процесс Павла Кузнецова G-corrector. Он как раз решает проблемы прозрачности для различных каналов G-буфера.
Надеюсь, эта инфа кому-нибудь поможет добиться в графике многого,
если кто дойдет до Голливуда, не забывайте про старика Гудвина ) Всем
привет!