3 - 2005

Параметрическое управление объектами в Maya 6

С появлением последней версии Maya 6.0 вопрос о том, какая 3D-графическая программа является в настоящее время самой мощной, окончательно отпал. Если сравнивать, например, 3ds max 6 и Maya 6, то хотя некоторые вопросы в 3ds max решены более удобно (например, spline-моделирование — из-за этого многие для визуализации интерьерно-архитектурных объектов по-прежнему используют 3ds maх), однако персонажное моделирование и анимация, динамические эффекты, системы частиц и т.д. более удачно и гибко построены в Maya. Именно поэтому Maya стала своего рода стандартом в киновидеоиндустрии и именно поэтому все больше людей для построения сложных анимационных сцен начинают изучать и использовать эту программу.

Последняя версия дополнена огромным количеством новых возможностей, созданных с учетом пожеланий многочисленных пользователей предыдущих версий Maya. Прежде всего эти изменения коснулись персонажной анимации. Здесь, во-первых, следует отметить новый интерфейс модуля нелинейной анимации TRAХ, позволяющий копировать движения с какого-то объекта на другой, во-вторых, изменения в модуле Hair с новыми возможностями быстрого создания длинных прядей волос и причесок, реалистично реагирующих на динамические силы, в-третьих, очень серьезные дополнения в Maya Cloth, ускоряющие общий процесс создания одежды, в-четвертых, улучшения модуля Maya Fur — теперь, например, мех можно визуализировать с фотокачеством с использованием Мental Ray for Maya. Помимо этого улучшилось общее управление сценой — например, предусмотрены система файловых ссылок, сегментация сцены и другие инструменты для облегчения управления большими объемами данных. В моделинге появился новый инструмент Soft Modification для более реалистичной деформации объектов, в динамике — возможность накладывать деформеры на частицы, модуль Paint Effect теперь работает на полигональных моделях и т.д. и т.п.

Этой статьей мы начинаем цикл публикаций, посвященных Alias Maya 6. По мере возможности мы попытаемся донести до вас наиболее интересные и удобные возможности этой программы. Перечень рассматриваемых вопросов будет весьма разнообразным — от построения простейших объектов до персонажной анимации и скининга, от материалов и фотореалистической визуализации до динамических эффектов и частиц. Предполагается, что данный материал будут читать не только опытные пользователи, но и новички в Maya, поэтому все вопросы мы постараемся излагать достаточно подробно и последовательно. Ну а начнем мы, пожалуй, с проблемы, без знакомства с которой приступать к моделированию и анимации чего-либо сложного вообще, наверное, не стоит, а именно с управления объектами с помощью вновь создаваемых атрибутов.

Представьте себе следующий пример: у вас есть модель автомобиля — корпус и четыре колеса. Помимо того что должен двигаться сам корпус автомобиля, у вас должны и колеса поворачиваться на поворотах. И вместо того, чтобы каждый раз крутить нужное колесо руками, можно ввести дополнительный атрибут в свойствах вашего автомобиля за счет изменения которого будут нужным образом автоматически поворачиваться колеса. Таким образом мы добь­емся полного параметрического (а не ручного) управления нашим объектом, что при дальнейшей анимации сильно облегчит нам жизнь.

В качестве практического примера рассмотрим более сложный объект — кисть руки. Делать упор на качественное моделирование мы не будем, подробных уроков по моделингу самых разнообразных объектов в Интернете хватает (например, на www.cgtalk.ru можно найти множество полезных ссылок, в том числе и по моделированию). На этом примере нам нужно понять, как добавляются к стандартным атрибутам объектов определенные новые свойства и как с их помощью в дальнейшем можно полностью управлять всеми анимационными процессами.

Для создания простой модели кисти руки воспользуемся исключительно средствами полигонального моделирования. В качестве исходного объекта создадим стандартный полигональный BOX («бокс») (рис. 1) и с помощью инструмента масштабирования SCALE уменьшим его по высоте, чтобы привести к виду, показанному на рис. 2.

Теперь немного изменим форму нашего «бокса». Щелкнув и удерживая правую кнопку на объекте, выбираем режим редактирования вершин. Выделяем четыре вершины, принадлежащие задней грани «бокса», и с помощью масштабирования немного сужаем объект с этой стороны (рис. 3). Затем с другой стороны объекта, предварительно выбрав режим редактирования FACE, удерживая правую кнопку мыши на «боксе», выделяем переднюю грань руки и посредством выдавливания граней (EXTRUDE FACE, рис. 4) добиваемся, чтобы наш объект выглядел примерно так, как на рис. 5 и 6.

Ладонь, можно сказать, у нас готова. Нам осталось «вырастить» из ее пальцы, а затем можно будет переходить к более сложным вопросам.

Чтобы сделать пальцы, переднюю грань нашего объекта необходимо разделить на несколько частей. Быстрее всего это можно сделать с помощью инструмента SPLIT POLYGON (разделение грани). После отделения первой части (рис. 7) для повторного включения этого инструмента просто нажмите на «Y». После «разрезания» передняя грань ладошки должна выглядеть так, как на рис. 8. Теперь грани, полученные в результате разрезания, можно «вырастить» с помощью FACE EXTRUDE (рис. 9). Единственное, что перед этим необходимо проконтролировать, — это режим создания новых граней.

Проследите, чтобы параметр KEEP NEW FACE TOGETHER (см. рис. 8) был выключен, иначе из всех ваших граней будет расти только один палец.

Затем точно так же поступаем и с большим пальцем руки, создавая его из боковой грани ладони (рис. 10). Для того чтобы добиться более правильного расположения большого пальца, нужно немного повращать получаемые при выдавливании грани (рис. 11). В итоге должно получиться что-то похожее на рис. 12. На этом моделирование руки будем считать завершенным и плавно перейдем к настройке параметрического управления нашим объектом.

Общий принцип анимации подобных объектов во всех 3D-программах примерно одинаков. Внутрь объекта встраивается система связанных друг с другом костей. Затем эта система связывается с объектом и при перемещении костей у нас автоматически будет изменяться и сам объект.

Открываем OUTLINER (рис. 13) и, выбрав в нем вид TOP, центральной кнопкой мыши перетаскиваем его на проекцию (рис. 14). После этого переключаемся в каркасный режим (цифра «4» на клавиатуре) и начинаем «вставлять» кости в нашу кисть. На «полке» ANIMATION выбираем инструмент JOIN TOOL (рис. 15) и создаем первую, основную кость ладони (рис. 16). Затем этим же инструментом создаем последовательно кости для пальцев (рис. 17). Для того чтобы после создания костей для одного пальца сразу начать работу со вторым, достаточно нажать на клавиатуре «Y» (повторное использование послед­него работающего инструмента). Закончив создание отдельных костей нашего объекта, свяжем их в одну систему. Для этого выделяем кости руки в последовательности, показанной на рис. 18 (первая, основная кость должна обязательно выделяться последней), а затем связываем их вместе, нажав на клавиатуре «P» (команда EDIT -> PARENT). В результате у нас получилась иерархически связанная система костей (рис. 19). Единственное, что необходимо сделать до объединения костей и объекта, — это проконтролировать, чтобы кости совпадали с нашей рукой на всех проекциях (рис. 20).

Выделяем на сцене и кости (все), и руку. Выбрав из выпадающего списка в самом начале верхних панелей раздел ANIMATION, выполняем команду SKIN -> BIND SKIN -> SMOOTH BIND (рис. 21) — в результате кости привязались к руке. Если теперь попробовать покрутить кости какого-нибудь пальца, окажется, что вместе с костью будет деформироваться и сама рука (рис. 22).

Уже сейчас мы можем анимировать наш объект: вращая кости в определенной последовательности, можно заставить пальцы принимать самые разнообразные комбинации. Однако делать это не очень удобно — необходимо постоянно выделять соответствующие кости и трансформировать их нужным образом. Поэтому поступим по-другому: движение наших пальцев имеет свои ограничения и пределы, поэтому каждому пальцу назначим собственный параметр, который и будет трансформировать конкретный палец, вращая его от одного предельного значения к другому. Например, для первого пальца параметр назовем Fing1, для второго — Fing2 и т.д. И когда, скажем, Fing1 будет равен –1, первый палец будет согнут, а когда 1 — выпрямлен.

Для этого откроем CHANNEL BOX (самая последняя кнопка на верхней панели инструментов). Выделим руку (сам объект, без костей). В окне CHANNEL BOX появится список всех основных параметров (каналов) нашего объекта. Для создания новых каналов мы должны в CHANNEL BOX выполнить команду CHANNELS -> ADD ATTRIBUTES (рис. 23 и 24). При создании нового атрибута обязательно надо указать его имя (ATTRIBUTE NAME), минимальное (MINIMUM) и максимальное (MAXIMUM) значения, а также значение, используемое по умолчанию (DEFAULT). Для всех наших параметров минимум будет –1, исходное значение — 0, а максимум — 1. После определения первого параметра нажимаем ADD и переходим к созданию второго и т.д. (рис. 25). В итоге у нас появляются новые параметры (число которых равно количеству пальцев, рис. 26). Сейчас эти параметры совершенно бездейственны, они ни с чем не связаны и никак на наш объект не влияют. Наша задача — заставить кости меняться при изменении этих параметров. Изменили мы, скажем, Fing1 на –1 — соответствующие кости согнули палец, поставили 1 — и палец выпрямился. Самый простой вариант — построить такую связь с помощью команды SET DRIVEN KEY, используя специальную функцию, умеющую создавать соответствия между параметрами объектов и их, например, положением на сцене.

Выделяем наш объект. В окне CHANNEL BOX по параметру Fing1 щелкаем сначала левой, а затем правой кнопкой мыши, после чего в открывшемся контекстном меню находим SET DRIVEN KEY (рис. 27). Выделенная рука является основным объектом в нашей будущей связи, поэтому сразу в окне этой команды нажимаем LOAD DRIVER (загрузить основной объект), а сбоку от имени объекта выбираем параметр Fing1, от изменения которого зависит изменение костей (рис. 28). После этого, не закрывая окна команды, выделяем кости, принадлежащие первому пальцу (кости выделяются последовательно от конца пальца к ладони), и нажимаем LOAD DRIVEN (загрузить подчиненный объект). Обе кости в окне слева выделяем, а затем в окне справа указываем их параметры: RotateX, RotateY, RotateZ. Именно при вращении кости будут сгибать палец. Теперь у нас все готово для установления связи между параметром Fing1 и углами поворота костей первого пальца.

Далее поступаем следующим образом. Не закрывая окна SET DRIVEN KEY, выделяем руку (это можно сделать здесь же, в этом окне) и выставляем параметр Fing1 равным 1. После чего, последовательно вращая кости первого пальца, приподнимаем его немножко вверх. Выставив и параметр и кости в крайнее положение, мы это соответствие запоминаем, нажав в окне SET DRIVEN KEY кнопку KEY (рис. 29). Затем повторяем все то же самое, только выставляя параметр и кости в другое предельное положение: Fing1 у нас теперь равен –1, а кости будут максимально сгибать палец (рис. 30). После чего снова нажимаем KEY, чем окончательно связываем параметр Fing1 и кости первого пальца. Если сейчас мы начнем изменять Fing1, то увидим, что и первый палец нашей руки начнет сгибаться. Теперь остается лишь повторить описанную процедуру для всех остальных пальцев.

В результате мы получим пять параметров, при каждом из которых будет сгибаться определенный палец. Фактически, кости на сцене нам уже не нужны, и мы можем с чистой совестью их выделить и спрятать, нажав CTRL+H на клавиатуре (DISPLAY -> HIDE -> SELECTION).

В принципе, для нашего объекта теперь не будут важны никакие параметры, кроме Fing1, Fing2 и т.д. (рис. 31), поэтому уберем из CHANNEL BOX все ненужные атрибуты.

Снова заходим в меню CHANNEL -> CHANNEL OPTIONS и, выделив все лишние параметры объекта (рис. 32), убираем их из списка кнопкой MOVE. Наш объект готов. Сложное движение, осуществлявшееся раньше только сложным вращением костей, теперь управляется простыми параметрами, которые так же просто можно и анимировать.

Таким образом, мы подготовили наш объект для последующей анимации. Даже если в дальнейшем наша кисть будет присоединяться к остальной руке, все определенные нами атрибуты будут продолжать работать.

«САПР и графика» 3'2005