Bender Bending

Max Payne: Создание объектов со сложной геометрией III

Содержание:

Моделирование геометрической основы

Для примера я возьму достаточно сложную в моделировании модель – круглую колонну. Если Вы поймете основы данной техники, то сможете моделировать практически любые объекты (в разумных пределах естественно). Преимущество подобных моделей, перед моделями которые были импортированы из пакета 3D Max 5 всего одно – качественное освещение.
Для начала настроим некоторые параметры созданного документа, для этого зайдите в меню Tools > Document Preferences или нажмите (Ctrl+P).
Frontplane
0.0010
Angle Snap (просто сотрите старую строку, и вставьте новую)
0.006;0.06;0.125;0.25;0.5;1;1.25;2;2.5;5;7;10;11.25;15;20;22.5;30;45
Grid Scale Steps (просто сотрите старую строку, и вставьте новую)
0.001;0.002;0.00390625;0.0078125;0.015625;0.03125;0.05;0.0625;0.125;0.25;0.5;1.0;2.0;4.0;8.0;16.0;32​.0;64.0;128.0;256.0;512.0
Более подробно о настройке сцены читайте в первой части статьи «Создание объектов со сложной геометрией»
Итак приступим:
  1. Создайте пустую комнату (произвольных размеров), в которой будет располагаться наша колонна. Что бы в глазах не рябило от одного и того же материала лучше присвоить стенам полу и потолку разные материалы.
  1. Начнем с построения примитива. Создайте куб размером ¼ будущего цилиндра.
  1. Теперь переместите курсор на один из боковых полигонов таким образом, что бы красным цветом была подсвечена та грань, которая является центральной осью будущего цилиндра. В режиме F4 нажмите 1 раз клавишу «влево», (значение шага угла должно быть равным 11,25). Отрежьте и удалите ненужную часть бывшего куба. В результате Вы должны получить вот такой результат.
  1. Теперь с помощью копирования размножьте данный объект.
  1. Объедините объекты в один и соедините верхние и нижние полигоны
  1. Копируйте объект, что бы получить цилиндр. Объедините четвертинки в один объект и объедините боковые полигоны, лежащие в одной плоскости. (Верхние полигоны объединять пока не надо).
  1. Теперь создайте копию цилиндра. Для удобства поднимите его повыше, и используя центр цилиндра (пересечение верхних полигонов), уменьшите его при помощи Scale по всем осям (например, 94%).
  1. Теперь расположите центральный цилиндр так что бы его верхняя и нижняя часть выходили за пределы второго цилиндра и с помощью булевой операции произведите операцию вычитания. Не забудьте объединить верхние и нижние полигоны обоих цилиндров. (так же рекомендуется во избежание багов произвести форматирование)
  1. Теперь мы выравниваем сетку по той стороне, где хотим пустить трещину в колонне, и строим вот такой объект.
  1. Затем вытягиваем его таким образом, что бы он полностью скрывал половину нашего объекта.
  1. Копируем объект колонны в буфер обмена и при помощи булевой операции отрезаем от нее кусок, и получаем вот такой объект
  1. Теперь вставляем целиковую трубу, которую мы предусмотрительно скопировали перед последней булевой операцией. Появившейся объект скрывает собой полученную половинку трубы, но тем не менее вы должны выбрать ее и скопировать в буфер обмена после чего, вычесть ее из целиковой части трубы с помощью булевой операции. В итоге мы получим вот такой результат.
  1. Теперь вставьте вторую половинку колонны из буфера обмена и мы получим копию первоначального объекта разрезанную на две части ломанной трещиной.
Используя эту методику в можете разрезать объекты как вам удобно при этом, получая точно подогнанные друг к другу грани, которые не будут давать артефактов при освещении.
Вот тот же объект через 20 минут работы.
Естественно вы можете немного наклонить грани сколов во внутрь, но не стоит этим увлекаться, поскольку могут образоваться швы которые при освещении будут очень заметны. Тем не менее если постараться можно достичь отличных результатов.
Теперь, когда объект готов его нужно размножить относительно горизонтальной оси что бы сделать количество кусков больше, а колонну выше. Естественно вы можете не копировать объекты, а нарезать новые, но на это уйдет больше времени.

Настройка полигональных групп осколков колонны

Но прежде чем множить, объекты давайте настроим созданные обломки, что бы потом не делать множество рутиной работы.
Для начала установите каждому осколку вот такие настройки:
Теперь давайте разберемся с полигональными группами (polygroups).
Создайте две группы в одну группу поместите все полигоны, которые расположены на внешней стороне колонны (они будут видны до разрушения), а во вторую соответственно все остальные полигоны (смотрящие вовнутрь).
Для наружной группы установите значения
Для внутренней группы установите значения
Данные настройки исключают из процесса расчета освещения внутренние полигоны, в противном случае они все были бы черными. Но не забудьте о том, что вам надо будет установить псевдо освещение самому. Для этого выберите объект в режиме объекта и в контекстном меню выберите пункт
Light > Set Lightmap Resolution (Shift+K) и в открывшемся меню нажмите кнопку Edit, после чего, выберите нужный вам цвет и его яркость, которые будут соответствовать окружающей обстановке на уровне.
При этом лайтмапы с внешней стороны обломка будут удалены (если они были просчитаны), но не стоит волноваться, полигруппы настроены таким образом что при последующем просчете освещения лайтмапы лягут туда, куда надо, а на внутренней стороне обломка будет псевдо освещение.

Добавление физической основы объекта

Теперь осталось добавить каждому обломку его физическую основу.
Поскольку осколок имеет много граней, то он не может быть динамическим объектом, по этому нам придется использовать, для просчета его физики примитивную болванку.
Поместите в центр каждого осколка прямоугольник
У болванки должны быть следующие параметры
Сделайте осколок динамическим объектом (клавиша D) и сгруппируйте с болванкой, таким образом, что бы болванка по которой, будет просчитываться физика, была дочерним объектом.

Скрипты

В заключении выберите осколок и откройте окно Edit FSM, нажав клавишу B. И пропишите следующие строчки
Теперь осталось расположить осколки в нужной последовательности, нарисовать центральное основание столба и просчитать освещение.
В итоге у вас должно получиться нечто подобное

Заключение

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


Views: 2 654

Комментарии пока отсутcтвуют.