Секреты световой волны

Сложная анимация в LightWave 3D - частицы и множества

(Продолжение, начало в №41)

Каждый серьёзный программный продукт в области 3D-моделирования и анимации имеет свои уникальные возможности, замену которым извне найти достаточно трудно. Также и LightWave3D при всех её недостатках и трудностях в освоении, усложнённой конструкции моделирования, наличии устаревшей системы управления (по существу, каждое действие запоминается как последовательная комбинация клавиш/операций), имеет мощные средства анимации, связанной с частицами. Далеко не все программы это могут предоставить, и именно поэтому LightWave3D так любима (а что делать?) в области кино и видео. Нужно отметить, что, начиная примерно с версии 7.0, на эту программу более пристально стали смотреть специалисты, работающие в Maya. Даже более того, сейчас распространены материалы, в которых описываются ключевые интерфейсные отличия для удобства перехода.

На данном этапе от версии к версии программа, в основном, усиливается именно в области создания спецэффектов, усовершенствования соответствующих механизмов, причём само моделирование (его принципы) практически не меняется. То есть, моделлинг можно полноценно освоить и по учебникам старых версий, а по поводу сложной анимации нужно держать нос по ветру. Разработчики явно понимают, в чём их основное преимущество, и, по существу, двигаются только в одном направлении.


Анимация множества частиц

Впрочем, анимация множества частиц - это только вершина айсберга. Очень часто приходится работать со сложными сценами, в рамках которых имеется большое количество персонажей и объектов, кои можно представить как определённую группу с заданным поведением. И речь идёт не о "Трое", где огромная армия создавалась с использованием всего 500 статистов, а после Ctrl+C/Ctrl+V, а больше о компьютерной графике. Например, вам нужно задать некую модель поведения стае птиц, туче стрел, флоту нарисованных кораблей и т.п.

Если говорить о частицах конкретно, то это эффекты взрыва, ветра, дыма, снега, дождя, пыли, огня, салюта и так далее, они предусматривают генерацию случайного режима поведения мелких элементов с указанием общего направления движения. Современные технологии в этом так преуспели, что в большинстве случаев человек не отличит искусственное от натурального (известная история с трансляцией салюта на пекинской олимпиаде). Раньше компьютерная графика стоила очень дорого, причём, что ни новый блокбастер, то обязательно какое-нибудь новое изобретение. Но, например, вы видите след от ракеты или взлетающего самолета/космического корабля. На самом деле, в большинстве случаев современного дорогого кино все эти эффекты создаются на базе компьютера. В этом случае наполнением каждого кадра можно управлять, что способствует красоте картинки, а реалистичность заслуживает самых высоких похвал.


Практический пример. Шаг 1

Итак, мы сделаем классический пример с источником дыма. Вернее, мы его создадим. Для этого нам понадобится генератор частиц. Нужно отметить, что подобные модули встречаются во всех программах, предоставляющих такие возможности, и называются Emitter. Частицы генерируются в случайном режиме, но всем можно управлять. Наши действия:

  1. Запускаем Layout. В закладке Items нажимаем пункт Null (либо нажимаем Ctrl+N), тем самым формируем новый нулевой объект, назовём его, к примеру, Smoke.
  2. Далее вызываем его свойства через кнопку Properties (либо нажав "p"). В открывшемся окне переходим в закладку Dynamics. По нажатию на кнопку "Add Dynamics" появляется список, из которого выбираем Emitter. Соответственно, в таблице снизу отобразится новый пункт "FX Emitter3 Particles", а на экране проекции мы увидим схематическое отображение куба. Всё, простейший генератор готов.

После нажатия на надпись "FX Emitter3 Particles" появятся свойства нашего генератора, которые разделены на множество закладок. В Generator мы просто укажем размеры объекта, допустим, изменим их по X, Y и Z, выставив везде 200 mm. Далее переходим в закладку Motion и настраиваем параметры движения. Например, выставляем Velocity(m/s) для Y равное 2 m (направление частиц вверх на 2 метра). Не закрывая это окно, включаем анимацию на воспроизведение (кнопка Play). Что получилось? Наш источник начал излучать частицы по типу гейзера. Сразу вспоминается известный эффект из "Пятого элемента", когда Брюс Уиллис смотрел на камень в момент его активации. Поскольку мы не закрыли окно, вы можете в режиме реального времени менять параметры. Например, выставите Vibration (m/s) равным 1, Vibration(min) - 50%, поэкспериментируйте с параметром Explode, поменяйте скорость, в закладке Particles можно управлять "временем жизни" частиц, которое указывается в кадрах.


Шаг 2

Теперь возьмём на вооружение один из самых сильных механизмов LightWave3D - HyperVoxels. Он предназначен для получения различных объёмных эффектов и является многофункциональным. Вызывается он из выпадающего меню кнопки Windows (пункт HyperVoxels).

В открывшемся окне вы увидите, что наш объект Smoke находится в списке, но является не активным. Активизируем его двойным нажатием указателя мыши. Теперь имеет смысл рассмотреть основные режимы работы HyperVoxels, которые указаны в выпадающем меню строки Object Type. Там вы найдёте три типа:

  • Surface - объект представляется в виде гладкой сферы, на которую можно добавить текстуру, и так далее.
  • Volume - моделирование объёмного облака. Причём мы говорим о полноценном трёхмерном объёме в рамках сцены, то есть он ощутим при поворотах камеры и т.п.
  • Sprite - в данном случае подразумевается наложение двухмерного эффекта на некоторое изображение. То есть, и здесь при повороте камеры вы не заметите подвоха, но всё считается в 2D.

Для уменьшения скорости расчётов выбираем Sprite. После этого в том же окне HyperVoxels заходим в закладку HyperTexture, оставляем установленную по умолчанию текстуру Crumple (беспорядочная), уменьшив частоту Frequences до 1. Также изменим параметр Texture Effect, выбрав Billowing (клубящийся).

Вызываем окно просмотра VIPER (кнопка в закладке Render либо просто F7). В нём из выпадающего меню Preview выбираем пункт Make Preview и смотрим нашу анимацию дыма, который идёт тонкой струйкой. В принципе, неплохо.

Но теперь попробуйте заменить тип Sprite на тип Volume в окне HyperVoxels. Пересчитайте просмотр. Клубы увеличились в объёме, картина стала очень реалистичной. На самом деле Volume создан на основе реальных физико-математических моделей, и использование этого механизма ограничено не только эффектным дымом, но и множеством других возможностей.


Другие типы генераторов

Основным генератором является Emitter, но при этом направлением частиц мы можем управлять отдельно. Это делается путём создания специальных нулевых объектов по такому же принципу, который мы рассмотрели ранее, только вместо FX Emitter (Emitter из выпадающего списка Add dynamics в окне свойств) мы выбираем из дополнительных, наиболее часто используемые из которых:

  • FX Wind - ветер;
  • FX Collision - столкновение об объект, если же внутри объекта, то заполнение его частицами;
  • FX Gravity - гравитация.

В принципе, вы можете самостоятельно создать, к примеру, нулевой объект Gravity, в поле Group которого укажите название новой группы и больше пока ничего не меняйте. Потом вызовите окно свойств нашего генератора, который мы сформировали ранее, и укажите в поле Group это же название группы. Поскольку по умолчанию в FX Gravity установлена гравитация вниз, то траектория излучаемых частиц изменится, станет напоминать фонтан. С ветром и столкновениями точно такая же ситуация. Причём в группу вы можете включать не только генератор частиц, но и любые движущиеся объекты сцены.

Что касается нашего примера с дымом, вы можете сделать эффект химического реактива в колбе. Для этого создаёте в Modeler прозрачную модель колбы с цветной жидкостью внутри, экспортируете её в Layout, добавляете генератор частиц, сгруппировав его с нулевым объектом гравитации (для того чтобы дым спускался вниз) и с помощью HyperVoxels делаете сам дым.


Взаимодействие форм в HyperVoxels

Кроме примера с дымом, давайте рассмотрим и другой, весьма занятный. Для него вам нужно создать два нулевых объекта без всяких свойств, соответственно, назовите их Null01 и Null02. Разнесите их на небольшое расстояние по отношению друг к другу, например, по оси Y на 2-3 м. После этого переместите движок анимации на последний кадр и сделайте так, чтобы в нём объекты поменялись местами, пройдя друг через друга.

Для нашего эксперимента все готово. Теперь вызываем окно HyperVoxels.

Поочередно для каждого из двух объектов устанавливаем тип "Surface", режим смешивания (Blending Mode) как Additive (суммирующий), при этом в рамках Blend Group нужно создать некую единую группу, название которой выберите на своё усмотрение. После этого в закладке Shading можете выбрать для каждого из объекта свой цвет или подобрать текстуру. Чтобы всё было наглядно, вызовите дополнительно окно просмотра VIPER. В нём объекты отобразятся в виде двух сфер. Теперь все готово, нажимаем кнопку на выполнение расчётов в VIPER и смотрим на анимацию. Получился очень интересный эффект сочленения форм по типу жидкостей. После этого попробуйте поменять текстуру самих объектов в рамках HyperTexture. В общем, экспериментировать можно и нужно.

Отдельно стоит сказать, что HyperVoxels работает только (!) с точечными объектами, будь то точки генераторов или объектов, загруженных из Modeler.


Обзор технологий

На самом деле возможности LightWave3D огромны, подробнее обо всём можно узнать в документации к продукту, а также на некоторых сайтах, например, www.newtek.com, www.luxology.net, www.flay.com. Там же вы можете получить доступ к дополнительным модулям и возможностям.

На данный момент профессиональную состоятельность любой программы, работающей с 3D, можно оценивать и по факту наличия инструментария для работы с частицами в том числе. При этом стоит отметить тот важный момент, что пока нет того универсального продукта, где все технологии представлены ровно. То есть, у каждого свои плюсы и минусы. Например, если говорить о частицах и эффектах, с ними связанных, то на данный момент наиболее сильной является программа AVID Softimage|XGI, которая обладает гораздо более дружественным к освоению интерфейсом, к тому же очень много сложного является встроенным. То есть там у вас без труда получится на автомате делать салюты, пламя и так далее. Если говорить о движении группы объектов так, чтобы ими можно было управлять как потоком частиц, то тут весьма преуспел пакет Maxon Cinema4D. У Maya очень неплохой арсенал...

В LightWave3D это все реализуемо, только для получения необходимого результата нужно долго копаться - и это главная проблема. Например, ни в одном меню и ни на одной кнопке основного управления вы не встретите слова particles (частицы). А нужно поступать так, как описано выше: создавать нулевой объект, входить в его свойства, подключать FX, после чего переходить на специализированные модули.

Программа всё время даёт ощущение использования старого "макинтошного софта", по которому выпускались целые руководства, а освоение базировалось на заучивании последовательности операций вместо интуитивного понимания процессов. Впрочем, это всего лишь инструмент. Знать LightWave3D нужно, поскольку есть большая вероятность того, что именно в этой программе может появиться множество технологических новинок. Просто несколько раз LightWave3D уже оставляла всех конкурентов позади.

(Окончание следует)

Кристофер,
christopher@tut.by

Версия для печатиВерсия для печати

Номер: 

49 за 2008 год

Рубрика: 

Графика
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!