Жизнь — движение!

Жизнь — движение!

Работая в любом серьезном 3D-редакторе, нередко попадаешь в ситуацию, когда сцена выглядит мертвой. Вроде бы и текстуры подобраны неплохо, и источники света правильно расставлены, а анимация все равно выглядит безжизненно. В реальной жизни все, что нас окружает, постоянно изменяется: шторы слабо двигаются, по озеру бежит мелкая рябь и так далее. Аниматору очень трудно воссоздать такую картину.

Динамика движений в сцене должна подчиняться законам физики, иначе про реалистичность можно забыть. Из всего многообразия подобных задач можно выделить несколько основных: симуляция свойств материи, столкновение упругих тел (rigid bodies) и моделирование жидкостей. Алгоритм решения этих проблем настолько сложен, что его разработкой занимаются целые институты. Существует большое количество программного обеспечения, которое помогает 3D-художнику в этой области: от мелких скриптов до крупных самостоятельных программ вроде RealFlow от NextLimit. Каждое решение по-своему уникально, имеет свои преимущества и недостатки. Рассмотрим некоторые плагины, позволяющие 3DSMax просчитывать поставленные физические задачи. Начнем с более простых.

imCloth
Возьмем, к примеру, SimCloth от Chaos Group ( www.chaosgroup.com ). Этот небольшой по размерам плагин под 3DSMax позволяет смоделировать поведение ткани (отсюда и название — сокращенно от Simulation Cloth). Он также работает с категорией тел rigid bodies (упругие тела). Для симуляции ткани предлагается использовать объект — ClothMesh. Разработчики плагина объясняют это тем, что их объект имеет более подходящую полигональную структуру по сравнению с традиционными сетками (mesh). Этот объект будет находиться в закладке Standard Primitives категории Geometry (строчка Chaos Group). Параметры объекта ClothMesh отличаются от обычной плоскости (plane). Кроме геометрических размеров (длина и ширина), а также разрешения по вертикали и горизонтали, имеется ряд дополнительных настроек, отвечающих за сглаживание изгибов между полигонами. Можно задать сглаживание по обеим диагоналям, по горизонтали и всеми способами сразу.
Разобраться, как работать с плагином, сможет даже начинающий тридешник. После установки в арсенале пользователя появится новый модификатор SimClothMod. Если требуется смоделировать сцену, в которой присутствуют твердые и гибкие тела (ткани), то модификатор нужно применить к каждому объекту, который будет участвовать в динамике процесса. Однако следует помнить об особенности плагина: модификатор не работает со сгруппированными объектами, а применяется к каждому отдельно. После того, как новый модификатор будет присвоен телу, на командной панели возникнут настройки плагина. Вы увидите семь свитков с различными параметрами, которые позволяют точно и достаточно просто управлять свойствами твердых и гибких тел. В свитке Type определяется тип тела (Deflector (отражатель), Cloth или Rigid Body). Тип Deflector нужен, например, для того, чтобы на стол накинуть скатерть (стол и будет "отражателем").

Опция Attach by pos свитка General определяет, насколько частицы будут стремиться использовать свое исходное положение. Находящийся в этом же свитке параметр Soft Selection Scale показывает "весомость" вершин при их выделении. Нажатие кнопок Clear Тhis и Clear All приведет к очистке анимационного буфера от находящейся там информации про просчитанное положение вершин одного или всех объектов (соответственно), к которым применялся модификатор SimCloth. Функция Set This Unit запоминает положение объекта Cloth, и выбранный кадр становится первым кадром анимации. Теперь, если запустить просчет, обработка данных начнется с этого кадра. Clear unit pos. отменяет предыдущую функцию.
Три свитка: Dynamics, Integ-rity и Deflection, — содержат параметры, описывающие физические свойства объектов. Нет смысла останавливаться на всех этих настройках ввиду их большого числа. Отметим только, что в свитке Dynamics указываются значения сопротивления воздуха, силы гравитации, массы частиц и внешних сил (Warps). Для того чтобы ткань выглядела более естественно, в свитке Deflection должна быть отмечена опция Self-deflect. В этом случае объекту Cloth присваиваются свойства отражателя.
Очень часто в сцене требуется сделать неподвижными те или иные участки объекта Cloth. Так, например, при моделировании флага прямоугольный кусок ткани прикрепляется к флагштоку. Для этого в настройках ткани переходим в режим Vertex (Вершина), выделяем нужное количество вершин, создаем новую группу (кнопка New свитка Vertex Groups). Теперь выделяем эту группу в окошке, после чего появляется свиток Group Params. Осталось только поставить галочку на Attached (Прикрепить) и указать объект, к которому будет привязана выделенная группа вершин.
Чтобы начать просчет сцены, необходимо указать временной интервал в свитке Simulation. В этом же свитке можно поставить галочку напротив опции Redraw Views. Тогда в процессе просчета можно будет наблюдать за поведением объектов в окне проекции (правда, в этом случае скорость обработки данных существенно упадет). Нажимаем кнопку Start Simulation, и компьютер начинает выполнять необходимые вычисления. Стоит заметить, что просчитывать сцену перед рендерингом нужно практически во всех плагинах, работающих с динамикой тел. Это значит, что пользователь задает в программе начальные условия (массу тела, скорость, плотность и т.д.), а затем компьютер определяет, как будет меняться положение тел в пространстве с течением времени.
Не имея никаких лишних "наворотов", SimCloth обладает не самой худшей скоростью вычислений. Однако следует заметить, что все физические задачи решить с помощью этого плагина невозможно. Например, в нем нельзя смоделировать поведение жидкости. Впрочем, универсальных плагинов, которые помогли бы решить абсолютно все задачи, не существует.

ClothReyes

Компания Reyes-Infografica ( http://www.reyes-infografica.com ) хорошо зарекомендовала себя на рынке программного обеспечения еще на старых версиях 3DSMax. Ее плагин под названием ClothReyes был одной из первых попыток в "Максе" просчитать поведение ткани. Как и в случае с SimCloth, в качестве будущей ткани программа использует свой "фирменный" объект — Hexamesh. Этот примитив, как и ClothMesh от ChaosGroup, имеет свою уникальную полигональную структуру, которая базируется на шестиугольниках. Кроме нового объекта, плагин добавляет в список модификаторов еще один — ClothReyes3. Работает он следующим образом. В сцене выделяются тела, которые будут участвовать в динамике, а затем назначается модификатор. На командной панели появляется свиток с несколькими кнопками. Самая верхняя — New Scene. Нажав ее, нужно ввести название сцены. После этого активируется вторая кнопка — Make Fabric (Назначить материал). Среди объектов, к которым применялся модификатор, выбираем любой и нажимаем Make Fabric. После утвердительного ответа на вопрос "Make fabric object?" возникнет окно с настройками будущего материала. Все они разделены на несколько групп. Первая группа (Options) отвечает за структуру и тип материала. В ней можно указать, будет ли модель обладать свойствами ткани, или это будет твердое тело (rigid body). Одно из характерных отличий ClothReyes от похожих утилит — наличие такой специфической деформации материи, как "разрыв". Если в настройках будет отмечена опция Tearable, то просчет будет проводиться с учетом разрушения материи. Вдобавок ко всему есть возможность превратить в ткань не все тело, а только его темные участки. Для этой цели предназначен checkbox напротив строки Use Behavior Map/Material. Вторая группа параметров — Dynamic Parameters — как можно понять из названия, определяет обязательные динамические параметры сцены, такие, как гравитация (Gravity), масса (Mass), сопротивление воздуха (Air Friction) и прочие. Последняя настройка в этом окне — ползунок Behavior Options. Передвигая его, пользователь меняет свойства объекта от абсолютно упругого тела (без деформации) до ткани с идеальными характеристиками. Все вышеописанные настройки сохраняются в файле с расширением *.fab.

Для того чтобы закрепить вершины ткани, проделывается несложная операция. Во-первых, выделяем в окне проекции сам объект. Во-вторых, переходим в режим Vertex (модификатора ClothReyes3). В-третьих, выбираем требуемые вершины и группируем их кнопкой Make Group. Осталось назначить объект, к которому будет привязана группа вершин, используя кнопку Attach Group To Object. Для большей реалистичности следует добавить в сцену легкий ветерок. Плагин не понимает стандартный Space Warp Wind, а работает с собственным "Ветром". Его параметры располагаются в свитке Wind Parameters модификатора ClothReyes3. Когда сцена готова, результат можно увидеть, используя кнопку Start Calculation.
От себя хочется добавить, что работа ClothReyes (авторы используют версию ClothReyes 3.2) не отличается высокой стабильностью. Это всегда нужно иметь в виду, и, если нет желания переделывать всю работу заново, лучше лишний раз сделать копию.

Продолжение следует.

Сергей Бондаренко,
Марина Двораковская,
blackmore_s_night@yahoo.com



Компьютерная газета. Статья была опубликована в номере 35 за 2003 год в рубрике soft :: графика

©1997-2024 Компьютерная газета