06 марта 2006
Обновлено 17.05.2023

Battlefield 2, часть 3. Установка 3D-моделей

Battlefield 2, часть 3. Установка 3D-моделей - изображение обложка

Чтобы увидеть свои модели в игре, нужно их изготовить, а затем подключить. На словах процесс выглядит несложно. Однако редкая игра позволяет так запросто включать в себя посторонние предметы. Как правило, на пути мододелов лежит множество подводных камней. Сегодня мы с вами будем устанавливать собственноручно изготовленные модели в Battlefield 2 , что позволит вам создавать свои собственные полноценные карты для этой игры — если вы, конечно, внимательно изучали статьи цикла « Создание уровней для Battlefield 2 », опубликованные в прошлом и позапрошлом выпусках «Мании».

3D Max и его младший брат

В комплект инструментария для редактирования Battlefield 2 (далее BF2) входят утилиты к графическому пакету Maya. Слов нет — хороший графический редактор. Однако огромная армия поклонников 3D Max осталась не у дел (не переучиваться же ради такого случая). На какое-то время появились инструменты и для него, однако вскоре исчезли. По слухам, выкладывать их в Сеть запретила EA (говорят, это связано с крупными недоработками, обнаруженными геймерами в процессе работы). Тем не менее использовать 3D Max для работы с BF2 можно. Только не напрямую, а через посредника — его младшего брата Gmax!

Нам потребуются для работы:

1. Gmax версии 1.2.

2. Пакет инструментов к BF2 для Gmax, Battlefield2 Game Tools game pack.

Gmax — это бесплатная версия 3D Max, предназначенная специально для начинающих игроразработчиков и шаловливоруких геймеров (обе утилиты забирайте с нашего DVD ). Особенностью установки является необходимость регистрации на сайте распространителя. На это потребуется всего несколько минут и доступ к интернету. Только после установки Gmax можно запускать установочный файл инструментов для BF2. Программа инсталляции поместит на рабочий стол иконку запуска BF2 Gmax Gamepack. Всегда, когда собираетесь работать с моделями для BF2, запускайте Gmax через нее!

На подготовительном этапе делаем в 3D Max модель несложной конфигурации (из стандартных примитивов). Она нужна нам только для того, чтобы освоить процесс установки. Кроме этого создайте 3 копии модели (используя инструмент Clone с установкой Copy ) и ни в коем случае не меняйте их положения в пространстве. Если название оригинала зависит только от вашей фантазии (у меня My_brusok ), то эти копии должны называться совершенно определенно — Col0 , Col1 , Col2. Зачем они нужны, станет понятно чуть позже. А сейчас конвертируем все каркасы в Editable Poly и сохраняем сцену в формате .3DS.

Обработка в Gmax

Запускаем Gmax и открываем файл из состава Gamepack — gmax\gamepacks\Battlefield2\scenes\bf2GmaxExamples\rawData\Objects\examples\statics\box01. На сцене появится серая невзрачная коробка-box. Она не так проста, как кажется на первый взгляд. Ее хитроумное устройство можно увидеть, открыв полный список загруженных объектов (нажав на пиктограмму Select by Name ). Простой примитив состоит из множества компонентов: lod0 , geom0_NoLightmap , root_staticmesh_box01 , Box01__Anchor , Box01. Причем форму объекта определяет только последний из них, а все остальные относятся к служебным объектам двух типов Point Helper и Dummy. Это объекты-пустышки. Они представляет собой простой куб с опорной точкой в центре фигуры. 3D Max их использует как составной элемент иерархической цепочки для установки связей между отдельными составляющими.

Загружаем в Gmax файл с нашей моделью. Для этого воспользуемся пунктом основного меню File/Import. В диалоговом окне SelectFile to Import выбираем тип файла 3D Studio Mesh (*.3DS) и указываем сохраненную в этом формате сцену. Gmax спросит, каким образом выполнить операцию: заменить все полностью или же включить импортируемый объект в текущую сцену? Нам нужна коробка-box из файла примера, поэтому отмечаем пункт Merge objects with current scene и нажимаем ОК. Примечание: скорее всего, при этом вы не увидите никаких изменений на экране, что связано с несоответствием размеров импортируемой модели и объектов сцены Gmax.

Необходимо подогнать размеры нашей модели к стандартам BF2. Как правило, модель оказывается слишком маленькой даже для того, чтобы ее увидеть на экране. Открываем список именованных компонентов сцены (кнопкой Select by Name ). Зажав клавишу Ctrl , выбираем из списка все добавленные в сцену детали (в моем случае это My_brusok , Col0 , Col1 , Col2 ) и кликаем Select. Выполняем равномерное масштабирование по всем координатным осям при помощи инструмента Select and Uniform Scale (щелкнув по соответствующей пиктограмме, зажимаем левую кнопку мыши и двигаем курсор по рабочему полю, пока модель не появится на экране). Подогнав размер, перемещаем ее таким образом, чтобы она находилась по отношению к служебным объектам примерно на том же уровне, как и оригинальная коробка-box.

Затем удаляем все лишнее — оставляем на сцене только составные части нашей модели. Поскольку без служебных объектов обойтись нельзя, создаем для нее собственный комплект. Выделяем основной каркас, который будет у нас видимым (у меня MY_brusok ). Выбираем в основном меню пункт BF2/BF2_Utilities , в окне BF2-Utilities проверяем, что стоит режим Static/Building , и нажимаем кнопку Run Wizard. Чтобы подробнее узнать, какие дополнительные объекты были сформированы «волшебником», откроем окно Select Objects. Там присутствуют geom0 , lod0 , MY_brusok_Anchor , root_staticMesh_ MY_brusok. Чтобы структура выглядела нагляднее, включите в окне опцию Display Subtree.

Теперь привязываем созданные ранее копии ( Col0 , Col1 , Col2 ) к нашей модели. Создаем копию lod0 (служебной пустышки), для чего выделяем lod0 в именованном списке и выбираем пункт основного меню Edit/Clone. В опциях, в группе Object , оставляем Copy и набираем имя новой пустышки — nonvis_. В дереве именованного списка она появляется последней, но на одном уровне с lod0 (см. рис. 2 ). Теперь переходим непосредственно к связыванию. Используя выделение по имени ( Select by Name ), выделяем первый невидимый каркас Col0. Закрываем список и включаем режим Select and Link одноименной пиктограммой на панели инструментов.

Снова открываем окно Select by Name (теперь оно называется Select Parent ) и выбираем пустышку nonvis_. Закрываем окно кнопкой Link , включаем режим Select Object (пиктограммой на панели инструментов), открываем именованный список (видим, что строчка Col0 переместилась из начала списка в конец, под nonvis_ ). Выделяем следующий дополнительный каркас, Col1 , и точно так же связываем его с nonvis_. То же самое проделываем с Col2. Когда все «невидимые» дополнительные каркасы соберутся под пустышкой nonvis_ , связываем ее с основным, который геймеры увидят в игре (у меня он называется MY_brusok).

Текстурная грамматика

Займемся текстурами. Некоторая сложность состоит в том, что Gmax не поддерживает работу с форматом .dds , а именно в этом формате должны храниться текстуры для BF2. Временно заменяем этот формат на .tga. Находим подходящую картинку с характерной текстурой (например, бетонной стены), открываем ее в Adobe Photoshop , обрабатываем (скрываем дефекты, подчищаем, подкрашиваем), формируем квадратное изображение (512х512 или 1024х1024 пикселей) и сохраняем в файл .tga (с включенным альфа-каналом, 24 бита на пиксель). Причем название файла должно подчиняться определенным правилам. На одну модель в BF2 приходится целый набор текстур. Основная ( Base ), которая отвечает за внешний вид предметов. Есть текстура для отображения деталей поверхности ( Detail — выпуклости, впадинки, травинки). Используется отдельная картинка для придания объектам «замызганного» вида ( Dirt ). И это не все. Всего имеется 6 уровней текстур на разные случаи. Игра различает разные виды текстур по префиксам в конце названия. Например:

— имя_текстуры_с.tga (основная, префикс );

— имя_текстуры_de.tga (детальная, префикс _de );

— имя_текстуры_di.tga («грязная», префикс _di );

— имя_текстуры_deb.tga (bumpmap-карта, префикс _deb ).

Видимые объекты в BF2 должны иметь как минимум 2 набора текстур ( _c и _de ). Для изготовления детальной текстуры загружаем в Adobe Photoshop картинку бетонной стены (подойдет и поверхность песка), сфотографированной на близком расстоянии, обрабатываем ее (подгоняем гамму под основную текстуру ползунками, вызываемыми из меню Image/Adjustments/Color Balance , см. рис. 3 ) и сохраняем с таким же именем, но с префиксом _de.

«Грязную» текстуру делаем так: дублируем первый слой основной картинки ( background ), в окне Layers ползунком Opacity устанавливаем прозрачность в 80%, пипеткой ( Eyedropper Tool ) «подхватываем» цвет самого темного участка текстуры и оставляем «грязные» следы на дубликате кистью прозрачностью ( Opacity на панели инструментов) в 30%. Сохраняем результат в файл с именем основной текстуры, но с префиксом _di. Карта bump отлично получится из основного рисунка. Загружаем его в Adobe Photoshop и, регулируя ползунками яркость и контрастность (из меню Image/Adjustments/Brightness-Contrast ), добиваемся отчетливой рельефности рисунка. В результате у нас для одной модели получился полный комплект из четырех разных текстур (см. рис. 4 ). Перекладываем их в папку …gmax\gamepacks\Battlefield2\textures.

Возвращаемся в Gmax и создаем на основе наших текстур новые материалы. Выделяем основной каркас (MY_brusok). Открываем Material Editor , щелкнув ЛКМ по одноименной кнопке на панели инструментов, нажимаем кнопку New и выбираем в диалоговом окне BF2 StaticMesh2. В группе StaticMesh Parameters выбираем текстуры (нажимая на кнопки с названием параметра) в соответствии с префиксами:

Base , _c (у меня concgray_c.tga);

Detail , _de (у меня concgray_de.tga);

Dirt , _di (у меня concgray_di.tga);

NDetail , _deb (у меня concgray_deb.tga).

Назовем полученный материал concrete : в игре существуют разные типы материалов, и каждый обладает разными свойствами (например, к ним могут привязываться определенные звуки). Материал с таким названием в игре есть, поэтому игровой движок знает, какие эффекты должны сопровождать хождение по предметам с такой поверхностью. Как только все картинки назначены, нажимаем кнопку Apply и применяем материал к основному каркасу. Он немедленно окрашивается в цвета concrete (см. рис. 5 ). Однако на деле нам нужно добавить каждому каркасу (в том числе и невидимым в игре Col0 , Col1 , Col2 ) проекционные координаты, чтобы текстуры отображались правильно. Кроме того, если хотя бы у одного каркаса не будет проекционных координат — загрузка модели приведет к аварийному завершению игры!

Из Gmax в Battlefield 2

Выделяем основной каркас (MY_brusok). На панели параметров (у правого края экрана) выбираем вкладку Modify , под строкой, в которой указано название выделенного элемента сцены (проверяем, что это основной каркас), раскрываем список Modifier List. Находим в нем строчку UVW Map и щелкаем по ней ЛКМ (в окне загруженных модификаторов появилась строчка UVW Mapping ). Ниже, в свитке параметров модификатора Parameters , отмечаем вариант наложения Box (наилучший для прямоугольных моделей), в группе Channel стрелочками выбираем первый канал (для основной текстуры) и в самом низу свитка параметров нажимаем кнопку Reset.

Выделяем строчку UVW Mapping в окне модификаторов, вызываем правой кнопкой мыши всплывающее меню и выбираем пункт Collapce All. В окне предупреждения жмем кнопку Yes. Затем меняем канал на второй (выставляем цифру 2 ) и снова нажимаем Reset. Если использовано более 2 текстур (у нас 4), для каждой из них нужно создать проекционную карту. То же самое нужно проделать с «невидимыми» каркасами ( Col0 , Col1 , Col2 ) с единственным отличием — для них достаточно одной карты (если их будет больше, аварийная ситуация в игре обеспечена). Текстуру им можно назначить ту же, что и для основной модели.

Мы применили модификатор UVW Map , поскольку наша модель идеально подходит для этого метода. Для моделей более сложной формы используют модификатор Unwrap UVW. В нем с помощью встроенного редактора можно регулировать наложение текстур вплоть до отдельных полигонов.

В принципе, мы сделали все необходимое для экспорта модели в игру:

— в 3D Max создали основной каркас, который будут видеть геймеры в игре;

— из него получили три копии, которые останутся невидимыми для игроков, но по которым игровой движок будет рассчитывать взаимодействие с другими объектами (Col0 — со снарядами, Col1 — с бойцами, Col2 — с техникой);

— переправили итоговый файл в GMax (в формате .3DS);

— отмасштабировали модель;

— добавили к ней необходимые служебные метки-пустышки;

— создали материал и применили его к видимому каркасу.

Проделаем эту операцию, выбрав пункт меню BF2/BF2 Exporter.

1. Сначала надо указать, куда будут отправляться окончательные файлы. В первую очередь это рабочая папка mods , в которой находятся ресурсы для модификаций к BF2 (при установке редактора BF2Editor она создается автоматически). Путь, само собой, у каждого будет свой, в зависимости от того, в каком месте на жестком диске установлена игра. К примеру, С:\Battlefield2\mods\bf2.

2. Установить целевые папки. Например, /rawdata/ и, ниже, /mods/bf2/. Впоследствии сюда можно будет вернуться и добавить папку с названием своего мода.

Заполняем окно Bf2 ExportObjects :

3. В строке Objects sub-folder path указываем категорию, к которой относится устанавливаемая модель. Здесь требуется вводить не абстрактное описание, а конкретные игровые папки. Чтобы с ними определиться, запускаем BF2Editor , в окне Select Startup MOD выбираем bf2 , устанавливаем режим ObjectEditor , на панели Resources двойным щелчком ЛКМ раскрываем строчку bf2. Напротив папки objects кликаем по пиктограммке с изображением знака +. Перед нами раскрываются категории объектов, загруженные в мод bf2 по умолчанию. Поскольку присутствуют далеко не все, добавляем недостающее — нажимаем в верхней части панели ( Resources ) жирный значок + синего цвета. Из всплывающего меню выбираем пункт Load Resources. После этого на экран выводится окно Load , в котором выбираем нужную категорию и добавляем ее кнопкой OK. В данном случае нас интересует строчка staticobjects. В ней очень много предметов, поэтому загрузка потребует некоторого времени. Кстати, как только вы ее выделяете, внизу появляется путь до каждого файла из категории статических объектов (сплошной лентой). Можно скопировать начало и посмотреть, как прописаны модели в игре. А раскрыв папку staticobjects в окне Resources (после того как окончится загрузка), увидите внутреннюю структуру. К примеру, мы хотим разместить нашу модель в разделе _asia. Значит, в окне экспорта нам надо написать / staticobjects / _asia /.

Чуть ниже заполняем поле Object Name (присваиваем имя своей модели), например MY_brusok.

4. Ставим галочку в поле Prefix Sub-Parts During Export (чтобы для новой папки в ресурсах использовалось название нашей модели в качестве префикса). Это необязательно, однако — полезно.

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

5. Закрываем окно Bf2 Export/Objects и в главном меню GMax выбираем BF2/BF2 Utilities. Раскрываем первый список и выбираем из него строку Fix Scene Image Paths. Нажимаем кнопку Run Util , которая расположена рядом. При обнаружении каких-то проблем на экран выводится предупреждения об ошибках, из которых можно понять, что с моделью не так. Если же все в порядке, то внизу, с правой стороны экрана, появится строчка Fixing Image paths…Complete.

6. Обратно возвращаемся к процедуре экспорта (пункт меню BF2/BF2 Exporter ). На этот раз у нас уже все поля заполнены и мы сразу жмем кнопку Export Object. Выполнение операции потребует некоторого времени.

Если экспорт завершился удачно, закрываем Gmax и переходим к работе с редактором игры. Запускаем BF2Editor , загружаем в него свой уровень и переключаемся в режим LevelEditor. На панели Resources раскрываем вкладку bf2 — нашей модели там нет. Как было описано выше, выбираем пункт меню Load Resources , в окне Load устанавливаем источником bf2. Открываем категорию staticobjects/_asia и находим в ней папку с названием нашей модели (см. рис. 7 ), выделяем ее и нажимаем кнопку ОК. Теперь она находится в списке доступных для установки объектов нашего мода. Устанавливаем ее на уровень и смотрим на полученный результат.

Нас ожидает небольшой неприятный сюрприз — модель покрыта картинкой с изображением американского президента… Эта текстура устанавливается игрой по умолчанию, если нужный рисунок не был найден движком. Проблема в том, что игра работает с форматом DDS, а наши текстуры выполнены в TGA. Чтобы решить проблему, делаем дубликаты файлов текстур в формате DDS и размещаем их в той же папке. Затем возвращаемся в Gmax, загружаем модель, открываем Material Editor , находим в нем нужный нам материал и вручную изменяем расширение файлов с TGA на DDS (в Gmax текстуры на модели пропадут, это нормально). Заново выполняем экспорт. Теперь с текстурами модели все в порядке.

* * *

Так зачем нам был нужен 3D Max, если большую часть работы мы проделали в Gmax? Все дело в возможностях. Все-таки у младшего брата — Gmax — силенок поменьше. Да, простые модели можно делать и в нем. Но если захочется большего, вы теперь всегда можете выполнить сложное моделирование в 3D Max.

Комментарии
Чтобы оставить комментарий, Войдите или Зарегистрируйтесь