Статьи: Эксклюзив

Making Of "Бомбардировщик Марадер(Wh 40K)"

Здравствуйте,  меня зовут Мезенцев Андрей. Мне 23 года, живу в городе Белгороде, работаю дизайнером в Белгородском государственном технологическом университете. Компьютерной графикой занимаюсь около 5 лет, а вот игровым моделированием меньше года. Мечтаю стать игровым моделлером и активно  совершенствуюсь в этом направлении, результатом этого совершенствования является модель бомбардировщика для некоммерческого мода на игру X3 Terran Conflict,  making of которой я представляю вашему вниманию. 

Начнем с того что я не профессионал, с  терминологией не знаком и все увиденное вами в этом  making of - исключительно мой личный опыт.  Люблю изобретать велосипед :)

Теперь  к делу.

Работаю в программах 3ds max 2009/2010 (с V-ray и плагином textporter) и Photoshop CS2 (с плагинами для создания карт нормалей и работы с форматом .dds).

Такие программы как ZBrush, Mudbox, 3DPainter и другие  значительно облегчают и ускоряют процесс создания модели, но, к сожалению, я ими еще не овладел, так что приходится работать с тем что есть. 

Работу над моделью условно делю на этапы:

  • 1. Подготовительный; 2. Моделирование; 3. Создание текстурной развертки; 4. Рисование текстур; 5. Завершающий

1. Подготовительный этап.

Как всегда я начал со сбора референсов, в моем случае это фотографии пластиковой модельки бомбардировщика для настольной игры. Кроме того мне удалось найти на него чертежи. Наличие чертежа уменьшает время на создание модели раза в полтора.

Игровое моделирование отличается от высокополигонального наличием множества ограничений и тонкостей, которые в hi-poly моделинге играют незначительную роль. Эти ограничения в основном налагаются используемым в игре движком, а так же местом и ролью модели в игре.

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

Далее текстуры. В игровых движках всегда есть ограничения на максимальное разрешение  текстур, а так же на количество материалов, примененных к одной модели. Кроме того в каждом движке есть свои заморочки с использованием текстур и шейдеров и различные требования к ним, где то карты блеска цветные, а где то черно белые, где то 8 битная прозрачность а где то 2 битная,  где то используются карты высот, а где то карты нормалей.

Перед началом работы  необходимо подробно изучить возможности игрового движка, с которым предстоит работать, его ограничения и требования. Далее нужно понять, какое место занимает создаваемая модель в игре и на основе этих выводов определить, какой уровень детализации она будет иметь, что на ней следует делать полигонами, а что рисовать текстурами.

Моя модель создается для космического симулятора, поэтому первый уровень детализации (та модель которую видит игрок на близком расстоянии, почти в упор) следует сделать максимально детальным, тем не менее, более чем 20 000 полигонов на модель уделять нет смысла. Корабли аналогичных размеров, созданные самими разработчиками игры, имеют в среднем такое же количество полигонов.  Все последующие уровни детализации (дополнительные модели которые загружаются по мере удаления самолета от игрока)  следует сделать максимально простыми, оставляя по 40-30%  полигонов от предыдущего уровня детализации. 

На модель имеет смысл наложить только 2 материала,  один материал (с шейдером металла) на весь корпус, а второй (с шейдером стекла) на иллюминаторы. Оптимальное разрешение текстур – 1024х1024, максимум 2048х2048, меньшее разрешение будет выглядеть размыто вблизи, а большее для игрока все равно не будет заметно, только память потратит.  

 

2. Моделирование.

Я создал в 3д максе две плоскости, на которые наложил проекции моего чертежа. Я инвертировал цвета чертежа, потому что на темном фоне будут лучше видны грани модели.

 

Моделирование я начал с прямоугольника, на который наложил стандартный материал белого цвета с включенной галкой wire (сетка).

В самом моделинге ничего сверхъестественного нет, просто полигональное моделирование. Я не использую сплайны, булеан, NURMS и т.д. они дают лишние полигоны, которые потом приходится убирать. Главное правило, которым я руководствовался –  использовать по возможности наименьшее количество полигонов. В рамках данного making of я не буду этот вопрос освещать, думаю советы по игровому моделированию можно найти в интернете, сам же я просто изучал чужие игровые модели.

 

 Моделинг закончен, у меня получилось около 15000 полигонов, это много для стратегии например, но вполне оправданно для первого уровня детализации в космическм симуляторе, т.е. для той модели, которую игрок видит в непосредственной близости от себя.

Я не моделировал лопасти воздухозаборников потому что использую одну отдельную модель лопастей для всех имперских самолетов.

 

3 .Текстурная развертка

 

Первым делом я создал обычный материал с текстурной картой Checker (шашечки) со  значением tiling например 32. 

Далее применил к модели модификатор unwrap UVW и всю текстурную развертку делал с помощью него.

Шахматные клетки позволят увидеть деформации текстуры на модели. В идеале нужно, чтобы вся модель была покрыта квадратиками одинакового размера. Там где видны ромбики или прямоугольники -  текстура деформирована, вытянута или сжата,  а если размер квадратиков разный, значит, развертка не равномерна по масштабу.

В настройках модификатора я выбрал пункт Mapping -> Normal mapping ->Box mapping. Это автоматический алгоритм создания развертки, я всегда начинаю с него.

Далее я вручную выбирал отдельные детали на 3д модели и упорядочивал их текстурные координаты, это занудливая работа, но зато я имел полный контроль над тем, что делаю. Подробнее о создании текстурных разверток вы можете прочитать вот в этом уроке: http://www.render.ru/books/show_book.php?book_id=773.

На иллюминаторах размер квадратиков меньше, потому что там будет применена другая текстура с другим разрешением.

 

4. Рисование текстур

Первым делом я экспортировал текстурную развертку из 3д макса с помощью плагина texporter, оптимально сделать белые грани на черном фоне без всяких заливок. Текстуру лучше взять в 2-4 раза больше чем нужно для игры, а потом уменьшить ее до нужного размера. 

Использование этого плагина – дело привычки, абсолютно аналогичного эффекта можно добиться, используя рендер в текстуру предварительно наложив на модель стандартный материал белого цвета, с галочкой wire(сетка) и включенным на максимум самосвечением.

Далее я перешел с этой разверткой в фотошоп и удалил с нее черный цвет, оставляя одни белые линии. Слой с разверткой я ставлю всегда верхним и рисую текстуру ориентируясь на него.

Следующим этапом я создал карту рассеянного освещения или как там она называется. Для этого использовал рендеринг в текстуру (render to texture) с v-ray. Следует помнить, что, если на одних текстурных координатах находятся две и более детали, то при рендеринге в текстуру на этом месте появятся артефакты. Поэтому я отделил (detach) от модели те части, которые находятся на одних текстурных координатах (всю зеркально отраженную половину модели и на оставшейся половине 2 из 3 автопушек на носу, 6 из 7 шлангов на двигателях, одну бомбу и т.д.) Эту задачу можно решить проще, просто не делая на одних координатах несколько деталей, но в этом случае не очень экономно используется пространство текстуры. Потом я включил V-ray (мне нравятся вот эти настройки http://www.render.ru/books/show_book.php?book_id=604 спасибо), наложил на модель (и ее отделенные части) белый материал VRayMtl и добавил VRayPhisicalCam (перед началом рендеринга надо  выбрать активным вид из этой камеры, иначе получится бяка).

А далее есть два алгоритма. Первый: Помещаю модель центр коробки (Box) на которую наложен светящийся материал VRayLightMtl.

Второй: Без всяких Box’ов, просто включаю GL Environment в настройках V-Ray:: Environment.

Результаты получаются почти одинаковые, но первый вариант дает, по-моему более симпатичную картинку.

 Получил что то вроде этого:

Далее, ориентируясь на текстурную развертку и по теням на карте рассеянного освещения, я нарисовал карту высот (bump map), тут все просто, о том, что это такое читайте в интернете. 

Потом, в новом слое я нарисовал базовые цвета модели, а сверху этого слоя поместил с режимом soft-light тайловую текстуру поцарапанного металла (в интернете бесплатных текстур полно). Получилась поверхность вороненого металла, меди и серой краски с мелкими царапинками повсюду от долгой эксплуатации.

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

Далее я скопировал слой с бамп мэппингом, поместил его поверх всех этих слоев с режимом наложения Overlay. Получилось вот так: 

Кроме того я отделил небольшие выступающие части корпуса в новый слой и применил к ним стиль со следующими настройками:

  

При рисовании каждой текстуры я создаю множество дополнительных слоев с различными стилями и режимами наложения.

А далее пошла монотонная ручная работа, которую никакими стилями уже не сделать.

Я создал сверху слой под названием «Царапины» с обычным режимом наложения  и на нем белым цветом, обычными кисточками нарисовал царапины и потертости на выступающих частях самолета, которые могут появиться в ходе его эксплуатации. 

Потом еще один слой «Грязь» с режимом наложения  Multiply. На нем я нарисовал черным цветом нагар на стволах оружия, и следы копоти на крыльях от выхлопных труб, темно коричневым грязь и светло коричневым потеки топлива.

Наконец текстура была готова: 

Теперь нужно поверх поместить карту рассеянного освещения с режимом наложения multiply, хотя я настолько увлекся выделением теней вручную, что в ней почти отпал смысл,  не повторяйте эту ошибку:)

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

Оставшиеся слои я слил вместе, обесцветил и повысил их контрастность используя layers. Я намеренно сделал ее почти черной – имперская техника красится матовой краской, так что блестеть будут только царапины и детали из меди.

Теперь нужно вернуться к бамп мэппингу. Я отключил слои с базовой покраской, с украшениями и слой с грязью (она не настолько толстым слоем покрывает самолет, что ее стоило бы делать объемной). А вот два слоя с царапинами (мелкие однородные и крупные, нарисованные вручную) я оставил, инвертировал их цвет и поставил им прозрачность примерно 20% (царапины то неглубокие, всего лишь ободрана краска). Далее слил все эти слои вместе и применил к ним плагин от Nvidia для создания карт нормалей.

Осталось сделать карту самосвечения.  Для этого я нарисовал на черном фоне базовую карту самосвечения (цветные фары и лампочки, и скопировал их же в альфа канал), затем открыл в 3д максе тот файл, где я делал карту рассеянного освещения,  убрал из него все источники света,  создал материал типа blend, где в первый слой поставил VRayMtl с нарисованными ранее текстурами диффузии, бампа и блеска, а во второй слой поставил VRayLightMtl с моей базовой картой самосвечения и прозрачностью по альфа каналу. Потом применил этот материал к модели самолета и произвел рендеринг в текстуру. 

Текстуры готовы.

5. Завершающий этап

На этом этапе я подготовил модель и текстуры к экспорту. Сделал уровни детализации модели (LOD) с помощью модификатора MultiRec, сохранил все текстуры в формате .dds, применил их к модели, создал в сцене вспомогателные объекты (места установки оружия, точки генерации частиц, камеру и т.д.) и наконец  экспортировал модель в игру.

 Все, работа закончена.

Спасибо за внимание, надеюсь было интересно :)

23490 Автор:
Актуальность: 763
Качество: 800
Суммарный балл: 1563
Выбор Публики
Голосов: 46 оценки

Отзывы посетителей:

аватар
  Онлайн
Anthodon 241 0
Цитирую Death_Jester:
я нарушил какое то рыцарское правило текстуринга и меня теперь исключат из Почетного круга текстурщиков? если нет, то уточните пожалуйста что именно вы хотите сказать?

Цитирую Death_Jester:
текстура нарисована неудовлетворительно по качеству? или использование методов автоматизации работы это жульничество?

Цитирую Death_Jester:
или то что этот метод не во всех случаях применим? или что то другое? после этого уточнения можно будет продолжить диалог, а то пока что я перегрелся и завис

Скажем так. Текстура несколько более однородна на всех полигонах чем нужно. Но это мое ИМХО и не более. Касаемо самого метода я уже писал выше. Для примера текстура чисто ручной работы(откопал в инете) http://pixs.ru/showimage/2dtffankte_3780369_3398558.jpg
аватар
 
Death_Jester 72 0
так, давайте разберемся в цели данного обмена сообщениями, а то я похоже чего то не понимаю(( я нарушил какое то рыцарское правило текстуринга и меня теперь исключат из Почетного круга текстурщиков? если нет, то уточните пожалуйста что именно вы хотите сказать? текстура нарисована неудовлетворительно по качеству? или использование методов автоматизации работы это жульничество? или то что этот метод не во всех случаях применим? или что то другое? после этого уточнения можно будет продолжить диалог, а то пока что я перегрелся и завис
аватар
  Онлайн
Anthodon 241 0
Цитирую Death_Jester:
1. возникает ощущение что вы дочитали урок только до того места где я применил слой с текстурой, прочитайте немного дальше, там про кисточку тоже написано, я вообще то возюкал ей довольно долго и активно

Полностью.
Цитирую Death_Jester:
2. а я то думал что игровая модель должна выглядеть максимально близко к тому, как бы она выглядела в реальности, так причем тут видимость ручной работы? это же модель для игры а не роспись под хохлому.

В том то и дело. В данной игре модель максимально близка к камере. И необходима максимальная обработка.

Цитирую Death_Jester:
3. не поленился прочитать тот урок, ссылку на который вы мне дали. там автор накликивает кисточкой пятна на днище танка. а я всего лишь предложил скачать в инете текстуру грязи где подобные пятна уже нарисованы.
пардон, вы ставите мне в пример урок для С&С Generals? вам не кажется что технологии этой игры уже немного устарели, и в современных условиях работа строится иначе и методы применяются другие. для текстуры размером 256х256 можно часок покликать мышкой, а если текстура 2048х2048 и требуется создать около 50 фотореалистичных моделей с разными текстурами в короткие сроки?

Накликивает. Только эти пятна разные по форма, по яркости и т.п. Причем их разность на каждом участке своя. Еслибы автор статьи подсунул вполне однотонную текстуру и доработал ее в большей или меньшей степени- на выходи "шкура" модели имела бы меньшую детализацию. Что касается устарелости игры. Метод создания один и тот же. Размер не имеет принципиального значения и при умении рисовать скорость не падает а возрастает.

Цитирую Death_Jester:
4. не надо принимать за истину все то что написано в чужом уроке, вы когда нибудь пробовали экспериментировать пытаясь ускорить и оптимизировать работу или улучшить ее качество? я всегда беру пример с профессиональных разработчиков, в данном случае я изучал текстуры из игр Х3 Terran conflict, Dawn of war 2 и Space Marine. после чего я постарался сделать то же, что и они только своими методами.

Это не один урок... Это основной метод рисования металла. Да хоть тут можно посмотреть- http://www.gamedev.ru/art/articles/?id=4287&page=2
Цитирую Death_Jester:
5.скажем так под полигоном я всегда подразумеваю треугольник.

Понятно.

Цитирую Death_Jester:
6. а идея про сливание полигонов для меня так и осталась загадкой. по мере увеличения расстояния модель начинает сливаться с фоном или детали на ней становится сложно разглядеть? так я всегда думал что так и должно быть потому что так бывает в реальности) видимо тут что то другое, непостижимое для меня..

Полигоны сливаются при неправильном подходе к рисованию металла и др. схожих элементов. Бывает так что нужен ингейм четкий красивый. Чтобы все было отлично пририсовано, а не слито.
аватар
 
Death_Jester 72 0
1. возникает ощущение что вы дочитали урок только до того места где я применил слой с текстурой, прочитайте немного дальше, там про кисточку тоже написано, я вообще то возюкал ей довольно долго и активно

2. а я то думал что игровая модель должна выглядеть максимально близко к тому, как бы она выглядела в реальности, так причем тут видимость ручной работы? это же модель для игры а не роспись под хохлому.

3. не поленился прочитать тот урок, ссылку на который вы мне дали. там автор накликивает кисточкой пятна на днище танка. а я всего лишь предложил скачать в инете текстуру грязи где подобные пятна уже нарисованы.
пардон, вы ставите мне в пример урок для С&С Generals? вам не кажется что технологии этой игры уже немного устарели, и в современных условиях работа строится иначе и методы применяются другие. для текстуры размером 256х256 можно часок покликать мышкой, а если текстура 2048х2048 и требуется создать около 50 фотореалистичных моделей с разными текстурами в короткие сроки?

4. не надо принимать за истину все то что написано в чужом уроке, вы когда нибудь пробовали экспериментировать пытаясь ускорить и оптимизировать работу или улучшить ее качество? я всегда беру пример с профессиональных разработчиков, в данном случае я изучал текстуры из игр Х3 Terran conflict, Dawn of war 2 и Space Marine. после чего я постарался сделать то же, что и они только своими методами.

5. просчет всегда идет в полигонах, в треугольных полигонах, такие редакторы как 3д макс могут поддерживать многоугольные полигоны но все равно при обработке автоматически разбивают их на треугольники. когда я создавал модель в ней естественно были четырехугольники и многоугольники, но при экспорте они все равно разбились на треугольники. Если посмотрите мои работы то обратите внимание что там везде написано "tris" т.е. треугольники, потому я и не заострял на этом внимание в уроке. скажем так под полигоном я всегда подразумеваю треугольник.

6. а идея про сливание полигонов для меня так и осталась загадкой. по мере увеличения расстояния модель начинает сливаться с фоном или детали на ней становится сложно разглядеть? так я всегда думал что так и должно быть потому что так бывает в реальности) видимо тут что то другое, непостижимое для меня..
аватар
  Онлайн
Anthodon 241 0
Цитирую Death_Jester:
использование подобных текстур в работе это аксиома. тайловые поверхности немыслимо и бессмысленно пытаться воспроизводить вручную, или вы предлагаете рисовать кисточкой песчинки на пляже? то же с царапинами и другими мелкими особенностями поверхности. в остальном же я активно использую кисточки, а так же фильтры, режимы наложения, стили и вообще все то, что позволит мне максимально быстро создать реалистичную модель.

Не аксиома. Первый раз слышу подобное. Поясню. Если вы бирете однородную текстуру+доробатываете ее-получается однородная"шкура" на выходе. Если же вы рисуете все с нуля-видна ручная работа. Примеров особенно в рус.язычном инете мало. Могу привести статью текстурщика где он описывает процесс создания текстуры техники для РТС- http://www.redsys.ru/index.php?ind=reviews&op=entry_view&iden=57 Хотя РТС это и другая отрасль-принципы везде одинаковые. Металл и в Африке металл. Про сливание полигонов. Чем однороднее текстура("одинаковее на всех полигонах")тем больше сливаются полигоны(одно дело когда корабль на расстоянии "пяти метров" другое дело когда камера издали его показывает. Все начинает сливаться. ).
Цитирую Death_Jester:
про сливание полигонов я вообще ничего не понял. уточните, что вам опыт показывает?
Насчет полигонов: треугольник это вообще то и есть треугольный полигон, просто я не заострял на этом внимание, думал что это и так понятно, видимо ошибался.

Просчет идет в полигонах, либо треугольниках(игра), поэтому обратил внимание.
аватар
 
Death_Jester 72 0
Kromarti Это шутка, попытка троллинга или вы серьезно?
честно, ввели в ступор О_о
даже не знаю как на такое ответить, мне казалось что это все очевидные вещи, даже для такого профана как я, а уж тем более для других.
насчет кисточек:
в моем понимании в игровом моделировании необходим компромисс между скоростью разработки модели и ее качеством, часто важнее скорость, если вы будете 4 месяца рисовать кисточкой поры и волоски на лице персонажа то вряд ли вас возьмут на работу в игровую компанию где на такую работу выделяют неделю. игры тогда будут делаться десятки лет, даже в хай поли моделинге это отдает маразмом. использование подобных текстур в работе это аксиома. тайловые поверхности немыслимо и бессмысленно пытаться воспроизводить вручную, или вы предлагаете рисовать кисточкой песчинки на пляже? то же с царапинами и другими мелкими особенностями поверхности. в остальном же я активно использую кисточки, а так же фильтры, режимы наложения, стили и вообще все то, что позволит мне максимально быстро создать реалистичную модель.
про сливание полигонов я вообще ничего не понял. уточните, что вам опыт показывает?
Насчет полигонов: треугольник это вообще то и есть треугольный полигон, просто я не заострял на этом внимание, думал что это и так понятно, видимо ошибался.
аватар
  Онлайн
Anthodon 241 0
ИМХО:
Текстуру нужно рисовать кисточками, а не добавлять что-то http://www.render.ru/images/uploads/Image/Articles/Making%20Of%20Bomb/8.jpg .Как показала практика при таком методе полигоны модели больше сливаются. Второе что хотел бы написать. Игра не считает модели в полигонах. Она все видит в треугольниках.
аватар
 
Death_Jester 72 0
Насчет эмблемы орла:
Сперва я хотел сделать орла объемным и позолоченным как символы на технике космодесанта, и нарисовал одного орла на текстуре бампа, потом я перечитал кодексы и оказалось что на имперскую технику такие символы обычно наносятся краской, значит на бампе орла быть не должно, но я решил не удалять его с текстуры бампа, вдруг пригодится, просто убрал его на свободное пространство чтоб не мешался, (в пустое место на текстуре где нет разверток модели) Вот там он и остался. какой смысл его удалять если он никому не мешает и игроку не виден, потому что на модели просто не появляется?. потом я скопировал этого же орла на слой с краской и размножил. вот и получилось что на бампе всего один орел, а на диффузе их уже несколько.

А сейчас у меня вообще пошла привычка забивать такие свободные места на большой текстуре текстурами каких нибудь других меньших объектов. Получается что на текстуре самолета может быть спрятан дополнительно какой нить радарчик, зенитка, бочки, и еще куча других объектов, которые с большой вероятностью могут появиться в игре рядом с этим самолетом и будут использовать такой же шейдер. Таким образом я пытаюсь оптимально использовать пространство одной текстуры а не плодить множество мелких текстурок для всех объектов, правда не знаю верная ли это мысль...?
аватар
 
tim3d 88 0
Странно, что на бампмапе есть единственная эмблема орла в верху по середине. То-есть это стамп. Недоработка?
аватар
  Онлайн
Роман Цапик 2496 0
Главный редактор
Отличный мейк и модель, спасибо автору.
аватар
 
Death_Jester 72 0
Большое спасибо) приятно что моя работа привлекла внимание

fruit_cake
Насчет нормалей все просто, устанавливаешь на фотошоп бесплатный плагин с официального сайта NVidia и превращаешь черно-белую карту высот в карту нормалей
http://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop
аватар
 
makc_damage 17 0
Хорошо написано, давно не читал туториалы, до этого )
аватар
 
Broadleaf 33 0
Замечательные люди делают дизайны для WH, это наверное самая интересная работа - годами создавать и совершенствовать
мир WH.
аватар
 
Ostap_Blender 79 0
Да, получилось очень круто!
аватар
 
Man5ON 2637 0
Куратор комьюнити
Замечательная работа!
Интересно было прочиталь о процессе, спасибо! Успехов автору
аватар
 
VanClivern 2 0
Классный "Making of".
аватар
 
fruit_cake 28 0
а про нормали можно поподробней?
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 892 уникальных посетителей