Низкополигональное моделирование и развертка объектов
Привет! Я Селезнев Сергей. В данный момент являюсь сотрудником воронежской компании ORION Games. Тема моего урока будет посвящена проблемам низкополигонального моделинга и развертки объектов, а так же ошибкам, которые допускаются при этом наиболее часто. Представленная ниже тема будет рассмотрена на примере построения низкополигональной модели техники. Метод построения исключает просчет нормал мапа и призван сделать акцент именно на оптимизации построения низкополигональных объектов.
Наиболее важным фактором при данной работе (влекущим при своем отсутствии далеко оптимальный результат) является баланс количества полигонов/качество модели. Опытному человеку гораздо проще определить в процессе работы какое количество полигонов потребует тот или иной участок объекта в отличие от новичка. Оптимальная работа значительно облегчит потуги вашего компа и сэкономит много ваших нервов при создании тяжелых сцен.
Итак, в качестве примера изготовим модель американского вертолета AH-1G Кобра (рис 1.)
AH-1G “Кобра”
При изготовлении данной модели я руководствовался довольно большим количеством фотографий, у всех них были те или иные расхождения из за различных модификаций, дабы не загромождать всем этим материалом данную статью я ограничусь одной фотографией потому возможны незначительные расхождения. Наиболее оптимальный вариант если у Вас под окажутся чертежи необходимого девайса, да еще и в трех изометрических проекциях. Первое что Вам требуется сделать это обсудить с руководителем проекта (либо своим непосредственным начальником) в каких условиях планируется эксплуатация данного объекта, и нормированное количество полигонов. Для чего это нужно. Данная информация позволяет выявить области модели способные внести немалый вклад в экономию.
Пример:
- автомобиль: если планируется езда главного героя (далее ГГ) непосредственно за рулем ТС то приборная панель руль и прочие атрибуты кабины затребуют значительных затрат. Если же в передвижении нет необходимости то можно упростить построение данных частей;
- кузов авто: cгоревший/разрушенный кузов автомобиля - допустим игра обладает неплохим физическим движком и просто грех не шарахнуть по остову из гранатомета, таким образом допускается переворот ТС, днище кузова имеет место быть. Если подобные вещи делать не планируется то на поддон можно не тратиться.
- вагон: обыкновенный железнодорожный вагон. Есть вероятность что ГГ при прохождении уровня никогда не поднимется на уровень, позволяющий увидеть крышу.
Все вышесказанное также относится и к развертке. То есть областям модели незначительно попадающим в угол обзора ГГ, но все же имеющие место быть так как несут какую то функциональность, отводится меньшая площадь на карте развертки.
И так задание получено, для упрощения примем что ГГ может видеть модель под любым углом. Количество выделенных полигонов 5000.
Первое что приходит на ум сделать половину модели и так как она симметрична, отразить получив при этом нужный результат. Минусы возникающие при этом: первое - текстурный шов, появившийся в результате отражения объекта, подобная вещь при взгляде в фронта очень сильно бросается в глаза из за зеркальности текстуры; второе -допустим у авто есть плоская крыша, если она сделана просто плоскостью то имеет 2 полигона в случае отражения 4, подобные вещи можно встретить несколько раз пройдясь по шву. После операции отражения избавляемся от подобных вещей в ручную . Оптимальный вариант зеркалить боковые поверхности, у игрока не будет возможности увидеть их одновременно, пусть он будет знать что они идентичны но это не будет резать глаз. От центрального шва мы избавимся с помощью наложения координат в фронтальной плоскости.
Рис.1
Рис.2
Рис.2а
Рис.3
Первоначально изготовим корпус вертолета (рис 1.) смоделим половину фюзеляжа.
На рис.2 и рис.2а красным цветом показаны примеры тех мест, где центральный шов потребует ручной рихтовки.
На рис.3 показано правильное изготовление хвостового оперения и сопла турбины с заглушкой.
Рис.4
На рис.4 приведены примеры, на мой взгляд, наиболее часто встречающихся ошибок моделинга, голубой цвет - ошибочное построение, серый - правильное. 4.1 - непосредственно заглушка турбины нашего вертолета; 4.2 - по умолчанию при создании цилиндра макс создает модель в mesh. Вскрыв торцевые грани, мы получим третье изображение, сконвертив в poly. Грани располагаются в ином порядке, что ведет к уменьшению количества полигонов; 4.3 - частая ошибка при создании подобных конструкций ;.4 - пример создания автомобильного колеса; 4.5 - оконные рамы; 4.6 - сточные, сливные трубы. Внимательно просмотрев геометрию, можно найти много подобных ситуаций.
Рис.5
Рис.6
На рис.5 представлено изготовление несущей части главного винта. Старайтесь избегать острых углов геометрии, даже если визуальная толщина объекта к тому призывает, это всегда плохо смотрится (рис.6). Главное крыло представлено на рис.7, синий вариант - неправильный. Рис.8 - кабина пилотов, в нашем случае ГГ непосредственно в кабине не предвидиться, следовательно, детализация особых затрат не требует. Вооружение (рис.9) в наличии имеет много объектов цилиндрической формы. Количество полигонов в сечении данной геометрии имеет особое значение, если обзор возможен с торца. Если же, например, вы подошли к трубе и смотрите на нее сбоку, то разница 10 или 18 sides будет мало различима. Рис.10 - посадочные лыжи в сборе, ситуация аналогичная основному крылу. Делаем стекло кабины, добавляем немного мелких деталей для оживления картины и получаем результат рис.11
Рис.7
Рис.8
Рис.9
Рис.10
Рис .11
Теперь о развертке
Наибольшую площадь очевидно занимает корпус. Недостаток - элемент имеет большую длину по отношению к высоте. Разбиваем объект на две части. Основные принципы расположения швов на модели:
- располагайте швы на острых гранях геометрии. Чем острее угол, тем меньше обзор, тем меньше вероятность, что игрок увидит обе плоскости одновременно;
- используйте границы цветов текстуры, шов не будет заметен на четких переходах окраски ( в нашем случае в область шва можно положить сварочные/клепаные швы металлических листов);
- располагайте швы в труднодоступных для обзора местах, местах куда взгляд падает во вторую очередь;
После назначения планарного мапинга присваиваем тестовый материал checker, смотрим соотношение масштаба и потяжки . Данная операция особо важна для частей одного объекта (фюзеляж, разбитый на двое ). Мапинг делается более крупным, если необходимо подчеркнуть какой-либо элемент (надпись, приборную панель, какие либо царапины и потеки). Все потяжки исправляем в ручную. На рис.12,13 представлена развертка корпуса вертолета и наглядный мапинг.
Рис.12
Рис.13
Рис.14
Всевозможные надписи, символы и обозначения:
Первый и самый простой вариант: все обозначения, выполненные непосредственно на текстуре, должны содержать только те символы, которые в процессе отражения объекта будут корректно отображаться - например, A,I,O,X цифры 8,0,1; второй способ - добавление сечений к объекту, вырезается некоторая область с уникальным мапингом, на которую кладется текстура с обозначением; и третий вариант - линкование к объекту простой плоскости с прозрачностью, но здесь может возникнуть часто встречающаяся проблема некорректной работы Z-буффера движка;
Далее оценим оставшуюся геометрию. Нам необходимо выделить базовые, преобладающие текстуры вертолета. Что мы имеем:
- темный, практически черный металл на лопастях главного и хвостового винта, также данный металл встречается на посадочных полозьях;
- блестящий металл, используется на крепежной конструкции обоих винтов, также из него изготовлены оба пулемета, ободы кассеты для ракет, сопло турбины;
- не затекстуренными остались крылья, основное и хвостовое;
- металл, схожий с основным, но имеющий коричневый оттенок применяется на корпусе кассеты с ракетами и на носовой башне;
- непосредственно торцы кассет;
- металл ракетного пакета, очевидно, что он в отличие от корпуса находится в идеальном состоянии, так как ракеты подолгу с собой не возят и уж, тем более, ничем по ним не стучат;
- текстура внутренностей кабины: непосредственно ткань кресел, приборные панели;
- каркас кабины, имеющий желтую окантовку;
- стекло кабины;
- пулеметная лента;
Вроде бы, все. Наша задача расположить на оставшемся месте Unwrap все выше перечисленное. Я не буду располагать все элементы на поле Unwrap дабы не загромождать его, покажу только наиболее габаритные, чтобы обозначить границы участков. Всегда лучше ориентируйтесь на самый большой объект, если будут объекты меньшего размера с той же текстурой, то они без труда встанут на отведенное им место поля, чего нельзя сказать в обратном случае. Очевидно, что стекло кабины больших затрат не требует, так как полупрозрачно, на каркас кабины достаточно будет изготовить небольшую полоску черного цвета, имеющую желтые канты по краям, и аккуратно расположить на ней полученную развертку. Такие симметричные объекты как крылья, ракетные кассеты, посадочные лыжи нет смысла разворачивать дважды, после развертки одной делали скопируйте ее на другую сторону. Здесь есть минус - такие объекты как ракеты, расположенные близко друг к другу при копировании будут очень бросаться в глаза из-за схожести текстуры, поэтому есть смысл произвольным образом повернуть из вокруг своей оси. Аналогичная ситуация возникает на рис.14, участки, выделенные зеленым цветом, при указанном направлении мапинга будут повторятся, их местоположение меняем вручную.
Итак, рис.15 - вот что мы получаем, повторю, развертка содержит только часть объектов, дабы рисунок был менее загроможденным. Общий вид модели представлен на рис.16, рис.17 аналогичная модель американского вертолета Ирокез. Таким образом раскладка объекта выполнена, количество затраченных полигонов 4946, задание можно считать выполненным. На этом все. Заранее спасибо!
Mail to: Al_sergio@mail.ru
Рис.15
Рис.16
Рис.17