3ds Max & Havok >> Shockwave 3D, или Дерни за веревочку!

"...Come crawling faster
obey your Master..." Master Of Puppets © Metallica, 1986 |
Как-то в самом конце прошлого тысячелетия в Москве на Старом Арбате мне посчастливилось наблюдать за работой одного талантливого кукловода. Он управлял марионеткой художника. В одной руке куклы был лист бумаги, в другой - черный фломастер. На глазах изумленной публики марионетка "сама рисовала" портрет, в котором легко узнавалась стоявшая рядом девушка...
В этом уроке на примере марионетки рассматривается использование модуля динамического моделирования reactor пакета 3ds max, а также экспорт сцен в Director и создание интерактивных презентаций в формате Shockwave 3D, одном из стандартов представления трехмерной графики в Интернете
Урок состоит из трех частей. Первая часть посвящена настройке и анимации модели марионетки с использованием модификатора reactor Rope, вторая - настройке сцены с использованием вспомогательных объектов reactor Dashpot и ее экспорту в формат Shockwave 3D, третья - созданию интерактивной презентации в Director
Часть 1. Использование модификатора reactor Rope
Модуль динамики reactor пакета 3ds max построен на известном физическом движке Havok. Эта технология позволяет выполнять автоматический расчет движения объектов в сцене по законам физики Ньютона. В отличие от традиционной анимации, основанной на установленных в определенных кадрах ключах, физическое моделирование базируется на заранее заданных физических свойствах объектов. Это освобождает аниматора от необходимости вручную оживлять отдельные взаимодействующие между собой объекты сцены, или отдельные кости, падающего персонажа, или отдельные вершины, развивающегося на ветру флага
Начиная с шестой версии, в составе пакета 3ds max поставляется reactor 2. Нельзя не отметить, что вторая версия модуля динамики заметно отличается от предыдущей своими возможностями и удобством использования. Не является здесь исключением и модификатор reactor Rope, поэтому в этой части урока нам понадобится 3ds max 6 или более поздняя версия пакета
- Загрузите сцену max8_ostrich_01.max, если у Вас установлен 3ds max 8, или max5_ostrich_01.max для более ранних версий
|
Для того чтобы объекты сцены участвовали в расчетах динамики, их необходимо включить в состав коллекций. Нам понадобятся Rigid Body Collection коллекция твердых тел и Rope Collection коллекция веревок
- Создайте коллекцию твердых тел RBCollection01 (Create panel > Helpers > reactor > RBCollection)
|
- Создайте коллекцию веревок RPCollection01 (Create panel > Helpers > reactor > RPCollection)
|
- В свойствах объекта RBCollection01 добавьте объекты head, handle и floor в коллекцию
|
Для того чтобы на объект сцены действовала сила тяжести, его масса должна быть отличной от нуля
- В свойствах объекта head (Utilities panel > Utilities rollout > reactor > Properties rollout > Physical Properties) укажите:
- Mass: 10.0
|
- Нажмите кнопку Preview in Window (Utilities panel > Utilities rollout > reactor > Preview and Animation rollout > Preview in Window)
|
На экране появится окно предварительного просмотра. Чтобы запустить расчет динамики, нажмите клавишу P на клавиатуре. Если все настроено правильно, голова марионетки упадет на пол. Перетаскиванием правой кнопкой мыши можно поднять голову и снова ее уронить
|
Теперь давайте настроем нить, соединяющую так называемое коромысло с головой марионетки. Для создания веревки в reactor к сплайновому объекту необходимо применить модификатор reactor Rope и добавить его в коллекцию веревок
- Выберите сплайн rope_head и примените к нему модификатор reactor Rope (Modify panel > Modifier List > reactor Rope)
- В свойствах модификатора reactor Rope укажите:
- Rope Type: Constraint
|
- В свойствах объекта RPCollection01 добавьте объект rope_head в коллекцию
|
Настало время прикрепить верхний конец нити к коромыслу
- В свитке Constraints модификатора reactor Rope объекта rope_head добавьте ограничение Attach To Rigid Body
- Перейдите на уровень Vertex в стеке модификаторов и выберите самую верхнюю вершину сплайна rope_head
- В свитке Attach To Rigid Body укажите:
- Rigid Body: handle
|
- Точно также прикрепите нижний конец нити к голове и нажмите кнопку Preview in Window
|
Голова марионетки свободно покачивается на своей нити max8_ostrich_02.max. Если у Вас установлен 3ds max 5, Вы также имеете возможность добиться подобного эффекта, потратив некоторое время на изучение стека модификаторов объекта rope_head в файле max5_ostrich_02.max
|
Аналогично настройте остальные нити, шею и ноги марионетки. Не забудьте добавить объекты body, foot_left, foot_right в коллекцию RBCollection01, а объекты rope_body, rope_left, rope_right, neck, leg_left, leg_right - в коллекцию RPCollection01. Полностью готовые к анимации сцены в файлах max8_ostrich_03.max и max5_ostrich_03.max
|
Для того чтобы наша марионетка ожила, достаточно анимировать всего один объект handle
- Загрузите сцену max8_ostrich_04.max или max5_ostrich_04.max
В этой сцене коромысло марионетки анимировано традиционным способом. Если мы запустим просчет динамики в окне предварительного просмотра, то обнаружим, что объект handle остается на своем первоначальном месте. Для указания необходимости использования ключевой анимации объекта при просчете динамики служит свойство Unyielding
- В свойствах объекта handle (Utilities panel > Utilities rollout > reactor > Properties rollout > Physical Properties) укажите:
- Unyielding check box: on
|
Теперь в окне предварительного просмотра наша марионетка выполняет команду "Выйти из строя на два шага!"
|
Все готово для автоматического создания ключей анимации в 3ds max
- Нажмите кнопку Create Animation (Utilities panel > Utilities rollout > reactor > Preview and Animation rollout > Create Animation)
|
Финальная сцена первой части урока в файлах max8_ostrich_05.max и max5_ostrich_05.max
Часть 2. Использование вспомогательных объектов reactor Dashpot и экспорт в формат Shockwave 3D
Особенностью модуля reactor 2 является отсутствие возможности экспорта настроек динамики сцены в файл формата Havok HKE (Havok Exporter) для последующего использования в Director. Поэтому в этой части урока используется 3ds max 5 с установленным модулем reactor 1. Кроме этого необходимо установить дополнительный модуль Shockwave 3D Exporter, которого нет в стандартной поставке 3ds max 5
- Загрузите сцену max5_puppet_01.max
|
Из-за того, что не поддерживается экспорт сплайнов в формат Shockwave 3D, мы заменим их на цепочки объектов reactor Rigid Bodies, связанных между собой объектами reactor Dashpot
- Создайте две копии Cylinder01 и Cylinder02 объекта CylinderGray и расположите их вдоль сплайна rope_head
- Создайте три вспомогательных объекта Point01, Point02, Point03 (Create panel > Helpers > Standard > Object Type rollout > Point)
|
- Создайте три объекта reactor Dashpot (Create panel > Helpers > reactor > Object Type rollout > Dashpot)
|
В результате должно получиться, что-то похожее на max5_puppet_02.max
|
- В свойствах объекта Dashpot01 укажите:
- Body A: handle
- Body B check box: on
- Body B: Cylinder01
- Point: Point01
|
- В свойствах объекта Dashpot02 укажите:
- Body A: Cylinder01
- Body B check box: on
- Body B: Cylinder02
- Point: Point02 - В свойствах объекта Dashpot03 укажите:
- Body A: Cylinder02
- Body B check box: on
- Body B: head
- Point: Point03 - В свойствах объекта RBCollection01 добавьте объекты Cylinder01 и Cylinder02 в коллекцию твердых тел
|
- В свойствах объектов Cylinder01 и Cylinder02 укажите:
- Mass: 0.1
|
Первая "нить" готова, файл max5_puppet_03.max
|
Создавать оставшиеся три нити, шею и ноги подобным образом было бы довольно скучно и утомительно. И здесь нам поможет MAXScript - замечательное средство пакета 3ds max, одним из применений которого является автоматизация повторяющихся последовательностей действий над объектами сцены. Написание скриптов само по себе заслуживает быть темой отдельного урока, поэтому скажу только, что мною был написан скрипт RopeDashpoter, который мы будем использовать далее
- Еще раз загрузите сцену max5_puppet_01.max
- Выполните скрипт dg_ropedash.mse (Utilities panel > Utilities rollout > MAXScript > MAXScript rollout > Run)
- Выберите RopeDashpoter из списка Utilities
|
- В свойствах RopeDashpoter укажите:
- Rope Path: rope_head
- Link Object: CylinderGray
- Count: 3
- HK Mass: 0.1 - Нажмите кнопку CLONE
Скрипт создаст три цилиндра, четыре объекта Point, четыре объекта Dashpot, "свяжет" их между собой и расположит вдоль указанного пути. Нам остается указать, какие объекты будут связаны получившейся "нитью" и добавить цилиндры в коллекцию твердых тел
- В свойствах rope_headDashpot01 укажите:
- Body A: handle - В свойствах rope_headDashpot04 укажите:
- Body B: head - В свойствах объекта RBCollection01 добавьте объекты rope_headLink01, rope_headLink02 и rope_headLink03 в коллекцию
Несмотря на то, что мы увеличили количество звеньев, создание "нити" с использованием скрипта отняло заметно меньше времени и усилий, файл max5_puppet_04.max. Как говорила мудрая птичка из одного мультфильма, лучше день потерять, а потом за пять минут долететь ;)
|
Создав оставшиеся три нити, шею и ноги аналогичным способом, мы получим сцену, готовую к экспорту в Director, файл max5_puppet_05.max
|
- Нажмите кнопку Export to File, укажите имя puppet.hke и экспортируйте настройки динамики сцены (Utilities panel > Utilities rollout > reactor > Animation and Export rollout > Export to File)
|
- Выполните экспорт сцены в формат Shockwave 3D в файл puppet.w3d (File menu > Export > Select File To Export dialog > Save As Type > Shockwave 3D Scene Export (*.W3D))
Итоговые файлы второй части puppet.hke и puppet.w3d
Часть 3. Создание интерактивной презентации в Director
Чтобы иметь возможность использовать все настройки динамики сцены, которые мы подготовили во второй части, нам понадобится Havok Xtra - полностью интегрированный движок моделирования физики твердых тел для Director
Havok Xtra обеспечивает поддержку импорта Havok HKE (Havok Exporter) файлов в Director, что позволяет создавать и настраивать физические сцены в пакетах 3D моделирования, таких как 3ds max, без необходимости дополнительного программирования Lingo скриптов
- Загрузите Windows версию Havok Xtra и распакуйте файлы control.cst и setup.cst в папку Director MX\Libs\Havok
- Запустите Director и импортируйте файлы puppet.hke и puppet.w3d (File menu > Import)
|
- Откройте библиотеку Havok Setup (Code > Library > Havok > Setup)
|
- Перетяните мышью скрипт Havok Physics (HKE) из окна Code:Library в окно Cast:Internal
- Откройте библиотеку Havok Control (Code > Library > Havok > Control) и перетяните скрипт Move Model в окно Cast:Internal
- Откройте библиотеку 3D Triggers (Code > Library > 3D > Triggers) и перетяните скрипт Mouse Left в окно Cast:Internal
|
- Перетяните Shockwave 3D сцену puppet.w3d из окна Cast:Internal в окно Stage
|
- Перетяните скрипт Havok Physics (HKE) из окна Cast:Internal в окно Stage, в появившемся окне укажите Substeps: 50 и нажмите кнопку ОК
|
- Перетяните скрипт Move Model из окна Cast:Internal в окно Stage и в появившемся окне нажмите кнопку ОК
|
- Перетяните скрипт Mouse Left из окна Cast:Internal в окно Stage и в появившемся окне нажмите кнопку ОК
|
- Нажмите кнопку Play в окне Stage
|
- Выберите пункт Publish в меню File
|
Итоговый файл третьей части puppet.dir
P.S.: "NVIDIA и Havok объявили о намерении продемонстрировать первое в индустрии решение по созданию физических эффектов, которое полностью работает на графическом процессоре, на Конференции Разработчиков Игр (GDC) в Сан-Хосе, Калифорния (с 21 по 24 марта)
Результатом долговременного инженерного сотрудничества Havok и NVIDIA стало данное новое ПО от Havok, названное Havok FX, которое эмулирует детализированные физические явления в компьютерных играх при работе на графических процессорах, таких как NVIDIA GeForce 7 или 6, а также в многопроцессорном режиме NVIDIA SLI. Первая версия Havok FX в данный момент доступна только для некоторых разработчиков, а широкая доступность ожидается летом 2006 года
Продукция Havok была использована при создании более 150 игр, включая Halo 2, Perfect Dark Zero, Age of Empires III, Marvel Nemesis и Mercenaries. Поэтому не исключено, что и новую разработку ждет большое будущее" © whatis.ru, iXBT