Bender Bending

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

Создание объектов со сложной геометрией I
» Раздел: Max Payne II: Картостроение

Введение

Начнем с того что данная статья создана для того что бы развеять сомнения по поводу возможностей редактора Remedy Max ED 2.0 . Множество людей занимающихся созданием карт на основе игры Max Payne 2: The Fall of Max Payne ошибочно предполагают что редактор годен только для создания основной простейшей геометрии уровня. То есть комнат коридоров и так далее, а если делать с помощью редактора объекты интерьера, то все будет большим и квадратным. На самом деле при должном опыте, умении и знании некоторых приемов в редакторе Max ED можно создавать очень сложные много полигональные объекты, которые будут смотреться так, словно их сделали в сложном редакторе типа 3D Studio MAX.
Хочу сразу оговориться, конечно, всему есть придел и очень сложные объекты типа машин делать в редакторе просто не целесообразно. Но раковины ванны трубы все это можно сделать с помощью стандартного редактора. Вопрос просто скорее в том сможете ли вы правильно использовать возможности редактора….

С чего начать?

Начнем естественно с настройки редактора, я не буду расписывать все до мелочей, так как предполагается, что читатель не первый день работает в редакторе. По этому, если есть какие-то вопросы, по поводу интерфейса смотрите учебники на XGM (articles.php?section=mp&).
Итак вы спросите а что можно настроить, а настроить нам надо всего несколько параметров дабы сберечь нервы в дальнейшем. Создаем новый проект и заходим в его настройки Document Preference для начала изменим параметр камеры Frontplane по умолчанию стоит значение 0.1 смело, меняем его значение на 0.0010. Стоит объяснить для чего мы это сделали. Очень часто при моделировании сложных объектов приходиться залетать у ним вовнутрь или приближать камеру практически вплотную к полигонам объекта. В данном случае возникает проблема когда камера автоматически срезает видимую область нужного объекта и мы как бы пролетаем сквозь него. Изменив значения параметра на указанное выше мы раз и навсегда избавимся от этой проблемы. Кстати что бы камера не перемещалась слишком быстро используй те клавишу Ctrl + клавиши + ( для ускорения) / - (для замедления) на цифровом блоке.
Вот пример того как выглядит объект при одинаковом положении камеры но с разными параметрами. Что называется почувствуйте разницу (значение 0.1 справа, значение 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
Разобравшись со значениями углов, перейдем к параметру шага координатной сетки. Вот на этот параметр следует обратить особое внимание так как без него точная подгонка практически невозможна. Без использования мелкого шага координатной сетки построение сложных объектов невозможно. Чем меньше данное значение, тем более плавной будет заготовка, которую вы рисуете.
В принципе к стандартным значениям достаточно добавить значения 0.050, 0.002 и 0.001
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
Закончив с настройкой проекта, перейдем к теории создания объектов и неоднозначным аспектам моделирования в редакторе Max ED 2.0

Моделирование объектов методом отражения сегментов

Для начала, возьмем заготовку (заготовки лучше всего использовать пакет примитивов Aknott Primitives (articles.php?do=getattach&id=543&h=69e9). Содержит 39 объектов представляющих собой шарики ромбики X угольники и так далее…
Берем объект обычного восьмиугольника копируем его в свой проект. Чтобы в дальнейшем не тратить время на наложение сразу применяем к объекту выбранный материал со стандартными значениями соотношения сторон. Подгоняем текстуру и получаем что то типа этого.
Теперь выделяем ту грань объекта в которую хотим загнуть трубу, выбираем угол наклона (клавиши Shift + +/-). Для начала пусть это будет значение в 15 градусов. Жмем стрелку влево и ничего не происходит. Вопрос почему кроется в том что шаг координатной сетки слишком велик и что бы произвести изменения с заготовкой следует понизить ее как минимум до 0.062. Есть закономерность чем больше угол тем меньше шаг сетки. Но в идеале любые угловые преобразования следует делать с маленьким шагом. После того как наклон на 15 градусов удастся расположите координатную сетку на наклоненной грани. Теперь выберите заготовку и скопировав ее а затем вставив (Ctrl+C и Ctrl+V) произведите зеркальное отражение.

Теперь еще раз выберем ту же самую грань и еще раз наклоним плоскость на этот раз уже копии заготовки. Теперь следует расположит сетку как в прошлый раз и скопировав заготовку отразить ее. .Полученный результат на рисунке 5 Кстати сторона 4 сегмента нашей трубы наклонена на 15 градусов так что лучше ее выровнять. Ну вот закругленный кусок трубы готов. Но на самом деле это всего лишь части заготовок никак не соединенные друг с другом здесь нас выручат булевы операции. Выберите один сегмент и нажав J (соединение) щелкните по соседнему объекту. Таким образом соедините все сегменты трубы что бы получился один объект. Теперь приступим к оптимизации объекта. Нам надо удалит внутренние полигоны трубы. Для этого залетаем в нее и выбрав нужный полигон жмем Del (рисунок 6).
ВНИМАНИЕ! удаляйте только те полигоны, которые не видимы если вы удалите лишний полигон, то объект перестанет быть замкнутым и в дальнейшем появиться необратимые ошибки вплоть до полной неработоспособности карты.
Теперь когда объект оптимизирован создаем для него Poly Group. Для этого выбираем объект в окне иерархии и щелкнув на нем ПКМ выбираем Add Polygroup. На вопрос о добавление всех полигонов объекта в группу отвечаем утвердительно. Затем выбираем созданную полигональную группу и ставим в ней галочки напротив значения Smooth Lightmaps Это позволит картам света лечь на объект ровно и не будет резких переходов на закругления. Если вы используете текстуры псевдо отражений (то есть Gloss & Reflection) то стоит поставить галочку напротив пункта Smooth Geometry – это в свою очередь обеспечит плавное распределение отражающей текстуры по поверхности всего объекта. На последок я думаю стоит уменьшить трубу уж слишком она большая относительно окружающей обстановки. Для этого выбираем объект жмем C и задаем размер в процентах. Больше 100 это увеличение а меньше – уменьшение. Так же можно масштабировать объект только по определенным выбранным координатным осям. В итоге получилось что то типа этого:

Теперь рассмотрим некоторые аспекты данного приема моделирования. Округлость трубы в данном случае зависит от количества углов заготовки чем больше тем более круглая будет труба. Плавность изгиба трубы зависит от выбранного вами угла изгиба чем он меньше тем плавне будет изгиб. Данный метод подходит для моделирования множества объектов это не обязательно трубы, а так же перила рельсы дверные ручки краны и так далее. В случае если в объекте после объединения появились щели, а такое бывает вам нужно отформатировать заготовку форматировать ее можно с разными значениями запомните стандартное значение 0.00050 щели не уберет для каждого объекта величину можно подобрать индивидуально, но лучше использовать проверенные величины, а это 0.00900 и 0.00500. Перед форматированием лучше сохраняться так как редактор может непроизвольно вылететь в Windows. Кстати чем больше величина форматирования, тем больше «не нужных» полигонов редактор уничтожит. Данный пункт применим ко всем методам моделирования сложных объектов. Если моделируемый объект сам по себе очень мал например водопроводный кран то заготовку лучше делать большой а когда модель будет построена просто уменьшить ее и отформатировать со стандартным значением
Достаточно справедлив вопрос, почему во время объединения сегментов не используется инструмент Union (объединение) во время этой операции ненужные полигоны удаляются автоматически. В тоже время программа чаще всего слишком грубо обрабатывает сегменты и на следующих этапах работы с моделью появляются необратимые ошибки и нестыковки.

Моделирование методом поворота вокруг центральной оси

С помощью этого способа вы в буквальном смысле за три минуты сможете смоделировать бутылку (вазу и т.д.) любой формы. Данным способом моделируются все объекты, которые имеют круглую симметричную форму.
Итак смоделируем простенькую вазу. Для начала нам надо нарисовать половину сечения создаваемой вазы (рисунок 1)
Затем выберем грань которая будет являться осью будущей вазы (рисунок 2) и изменим наклон плоскости (рисунок 3). После этого построим секущую плоскость, что бы она рассекала созданную заготовку точно по середине. (рисунок 4). Выберите секущую плоскость и обрежьте ей заготовку вазы (клавиша S). Теперь выберите полученную заготовку и зеркально отразите её (рисунок 5). Теперь объедините её с первой (клавиша J), после объединения обязательно удалите внутренние полигоны и объедините полигоны лежащие в одной плоскости, для этого в режиме F4 выберите полигон и нажав на J щелкните на соседний полигон. Это позволит сэкономить полигоны в модели. После того как заготовка полностью оптимизирована последовательно размещая сетку на одной из сторон полученного сегмента копируйте его и отражайте до тех пор пока не получиться половина вазы (рисунок 8). Теперь объедините все сегменты уничтожьте невидимые полигоны и и объедините полигоны лежащие в одной плоскости (в зависимости от формы на данном этапе их может не быть) в нашем случае в верхней и нижней частях вазы полученную половину вазы скопируйте отразите и объедините. Проделайте операции по оптимизации и отформатируйте. Теперь можно заниматься текстурингом модели.

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

Округление граней объекта

Наконец мы дошли до последнего пункта нашей статьи. Скажу сразу пунктик достаточно неоднозначный. Дело в том что данная операция с объектами достаточно трудоемкая но в то же время позволяет сделать картинку непривычно гладкой. Резкость, которая довольно сильно бросается в глаза в оригинальном Max Payne 2 можно избежать.
Итак нарисуем обычный прямоугольник (рисунок 1) затем поверх него нарисуем точно такой же но сделаем его намного тоньше. Боковые грани второго прямоугольника наклоним на 22.50 градусов что бы у создаваемого прямоугольника появилась фаска. (рисунок 3) после этого поверх второй заготовки рисуем методом обводки еще один прямоугольник примерно такой же толщины и загибаем его грани так же как и в предыдущий раз но уже на 45 градусов (рисунок 4). Для более плавного закругления добавляем таким же способом еще один слой грани которого будут наклонены вначале на 45 градусов а потом еще на 22.50 (рисунок 5). Объединяем слои удаляем невидимые полигоны внутри нашего закругленного прямоугольника подгоняем текстуру и любуемся полученным результатом (рисунок 6).

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

Просмотров: 9 487

Зевс #1 - 10 лет назад 0
Читаем и радуемся)
Hancock #2 - 10 лет назад 1
Ура
iHome Leha #3 - 8 лет назад 2
Урооо!)