Tiberium Wars Гайды

C&C 3: Руководство по созданию модификаций — Экспорт 3D контента. Часть 1

Автор: MysteriousType

Установка плагинов для 3ds Max, настройка и экспорт 3D контента для зданий и пехоты.

Примечание: голубым цветом выделяются оригинальные, не изменённые коды, файлы, папки. Зеленый — то, что уже изменено или создано пользователем. Красный — важная информация.

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

Подготовка к работе:

Сначала необходимо иметь сам графический редактор, позволяющий экспортировать модели в подходящий для игры формат. Только для 3ds Max существуют плагины, позволяющие сделать это.

При установке MOD SDK вы могли заметить две папки: 3DSMax7_Plugin и 3DSMax9_Plugin. Это плагины для 3ds Max 7 и 3ds Max 9 соответственно, поэтому используются только эти версии 3ds Max.

Установка плагинов:

Для установки плагинов откройте папку, в которой установлен 3ds Max, в неё скопируйте файл d3dx9_29.dll, а остальные файлы скопируйте в соответствующие им папки (всё содержимое папки UI в папку UI, stdplugs в stdplugs и так далее). Если всё сделано правильно, то вам откроется возможность экспортировать модель в .W3X.

Настройка W3D Tools:

Откройте вкладку Utilities (изображение с молотком).

Далее нажмите на кнопку Configure Button Sets, чтобы открыть окно с настройками. В этом окне переместите W3D Tools из левого списка вправо на место новой или какой-либо уже установленной кнопки. Закройте окно, нажав на кнопку OK.

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

Настройка модели здания

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

Для зданий лучше использовать цельные модели.

Наложение материала:

Чтобы успешно экспортировать модель, на неё необходимо наложить материал и текстуры. Для этого откройте Material Editor и в открывшемся окне проделайте следующее:

1) Нажмите на кнопку Get Material.
2) Выберете DirectX Shader дважды щёлкнув на него.
3) Примените материал на выделенную модель.

Возможно, вы обнаружите на модели световые аномалии, это нормально. Теперь необходимо выбрать шейдер, который позволит наложить текстуры. Чтобы сделать это проделайте следующее:

1) Нажмите на указанную кнопку;
2) В открывшемся окне откройте папку CnC3 и в ней выберите шейдер ObjectsGDI.fx. Для моделей, использующихся в качестве объектов, принадлежащих игроку, обычно используется именно этот шейдер.

Работа с текстурами:

Создайте папку в папке Art и поместите в неё текстуры, использующиеся моделью. Далее возьмите .xml файл, исходником которого является файл: Art/EU/EUlorienwarrior.xml. Скопируйте его в ранее созданную папку и переименуйте, например, в Textures.xml. Этот файл будет содержать в себе идентификаторы текстур.

Откройте переименованный файл и укажите идентификаторы и пути к файлам текстур таким образом:

id — идентификатор текстуры.
File — путь к файлу текстуры. Обращайте внимание на формат текстуры.

Любая текстура, файл модели и анимации должны быть расположены только в папке Art, которая находится в MOD SDK. Вы можете расположить файлы в любую папку, лежащую в папке Art. Важно, что текстура может быть использована только в формате .tga или .dds.

Окончание в названии файла текстуры указывает на её тип (DIF — Diffuse, NRM — Normal и так далее). Сборщику, как и игре, всё равно какое название имеет файл, но для удобства я советую указывать эти окончания.

Переходим обратно в 3ds Max. Откройте Material Editor и укажите текстуры в соответствующие им ячейки, нажав на кнопку None (это означает, что текстура для данной ячейки не указана). Все ячейки должны быть заполнены, в противном случае экспорт невозможен.

Preview House Color Enable — флажок, позволяющий посмотреть House Color прямо в 3ds Max. 
Preview House Color — цвет игрока, который будет отображаться в 3ds Max. Этот параметр и параметр выше никак не влияют на модель в игре.
Alpha Test Enable — включение отображения альфа-канала. Параметр влияет и на отображение альфа-канала в игре.

Кости:

Из трубы электростанции должен идти дым. Для указания координаты, в которой генерируется какой-либо эффект, используются кости. В качестве кости используются примитивы, обычно это сферы. Координатами кости в пространстве будут являться координаты Pivot’а примитива, то есть центр сферы.

Имя кости в 3ds Max — это её идентификатор, поэтому для дальнейшего удобства переименовывайте созданные кости.

Теперь необходимо указать, что те примитивы, которые используются в качестве костей, действительно кости. Для этого откройте W3D Tools, выделите кость или все кости сразу, поставьте галочку у флажка Export Transform (Bone), снимите галочку у Export Geometry. В таком случае геометрия кости не будет экспортирована. Дополнительно снимите галочку Export Transform (Bone) у тех объектов, которые не будут являться костями. Если оба флажка неактивны, то объект не будет экспортирован.

Количество полигонов у кости не имеет значения, так как её геометрия не экспортируется.

Настройка OBBox:

OBBox позволяет выделять модель с помощью мыши в процессе игры (или в редакторе карт) и обычно для его создания используются такие примитивы как Box и Cylinder.

Разместите примитивы так, чтобы геометрия объекта полностью лежала внутри OBBox, но не делайте OBBox размером больше, чем нужно! В противном случае контур внутриигрового объекта будет выделяться некорректно.

Порой имеет смысл добавить больше одного OBBox. Допустимо, если они будут пересекаться между собой.

Менять параметры примитивов, используемых как OBBox, можно только через их собственные параметры (Parameters). Перемещать OBBox можно с помощью инструмента Select and Move.

Необходимо указать примитиву, использующемуся в качестве OBBox определенные настройки. Вернитесь в W3D Tools, у выделенного примитива уберите галочку Export Transform (Bone), в Geometry Options выберите вариант OBBox.

Экспорт:

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

Сначала экспортируем скелет. Откройте окно экспорта Select File to Export, выберите W3D XML Asset (*.W3X), укажите имя файла и папку. Для удобства добавьте окончание _SKL. Сохраните файл.

В окне W3X Export Options выберите пункт Skeleton. У этого варианта нет дополнительных настроек, поэтому просто нажмите на кнопку OK, чтобы экспортировать.

Имеет смысл всегда ставить флажок Review Log. В случае возникновения ошибок при экспорте вы сможете просмотреть их и понять в чём проблема.

Далее займемся экспортом самой модели. Опять откройте окно W3X Export Options, но проставьте настройки как показано ниже:

Hierarchical Model – пункт для экспорта модели с костями или без (ниже надписи Settings есть небольшое описание). Флажки Smooth Vertex Normals Across Meshes и Optimize Collision Detection не критичны, но желательны для включения. Модель использует скелет, поэтому поставьте флажок Export Using Existing Skeleton и выберете файл, являющийся скелетом для модели.

Обработка файлов .W3X:

Откройте с помощью текстового редактора все созданные .W3X файлы, замените все запятые на точки, у файла модели пропишите путь к текстурам и скелету, сохраните измененные файлы.

Не изменяйте .W3X файл скелета до экспорта моделей, использующих этот скелет. Модель будет экспортирована с ошибкой!

Добавление модели к объекту:

Осталось только отредактировать файл здания, которое будет использовать новую модель. В качестве исходного файла возьмите, например, GDIPowerPlant.xml.

1) Внутри тега <Include> пропишите путь к .W3X файлу модели.
2) В теге <ModelConditionState> измените идентификатор модели и добавьте спецэффект дыма, привязанный к кости.

Name — здесь указывается идентификатор модели.
BoneName — идентификатор кости, в которой будет генерироваться спецэффект.
FXParticleSystemTemplate — идентификатор спецэффекта.

Ни файл скелета, ни файлы текстур прописывать в файле объекта не имеет смысла. Они прописываются в .W3X файле модели.

Настройка модели пехотинца

Если вы ещё ни разу не работали с моделями для C&C 3, то сначала ознакомьтесь с разделом “Настройка модели здания”, так как некоторые процессы, не описанные здесь, описываются там.

В качестве примера для этого раздела возьмем модель стрелка, который имеет анимацию. Учтите, что каждый отряд в C&C 3 состоит из отдельно взятых объектов, поэтому достаточно иметь модель одиночного пехотинца, входящего в отряд.

Создание скелета:

Перед началом создания анимации необходимо создать скелет, установить его иерархию и привязать точки модели к костям. Эта статья не описывает процесс создания костей, поэтому ознакомьтесь с пунктом “Системы костей” здесь:

Создание костей в 3ds max

Ниже представлена схема расположения костей для стрелка. Вы не обязаны давать каждой кости такое же название как на схеме, но так проще понимать за что кость отвечает. По аналогии, правые кости именуются как RightArm, RightHand и так далее.

Weapon1 — кость, к которой привязываются все точки оружия. 
Muzzle1 — из этой точки вылетают пули.
MuzzleFlash1 — вспышка, появляющаяся в момент выстрела из оружия. На эту геометрию накладывается отдельный шейдер MuzzleFlash.fx.

Создание иерархии:

Далее следует установить иерархию. Для этого используются кнопки Select and Link и Unlink Selection. Первая устанавливает иерархию между двумя костями, а вторая разрушает.

Чтобы создать иерархию, выберите Select and Link, нажмите на кость и с зажатой левой кнопкой мыши протяните курсор к другой кости (за курсором последует линия), отпустите зажатую кнопку. Теперь первая кость зависит от второй.

Есть способ проверить, установилась ли иерархия. Для этого нажмите на кнопку Auto Key (вокруг рабочей области появится красная рамка) и попробуйте сдвинуть кости.

У оружия Muzzle1 и MuzzleFlash1 зависят от Weapon1.

Не убирайте флажки Export Transform (Bone) и Export Geometry у MuzzleFlash1.

Работа с WWSkin:

Далее следует добавить WWSkin. Находится он во вкладке Westwood Space Warps. Выберите WWSkin и щелкните в любом месте рабочего поля 3ds Max. По желанию можете увеличить созданный его для дальнейшего удобства.

WWSkin не экспортируется. Export Transform и Export Geometry изначально отключены.

Теперь добавим в WWSkin кости. Для этого выберите WWSkin и добавьте кости с помощью кнопки Add Bones. Remove Bones позволяет удалить кости из списка. 

Выбрав инструмент Bind to Space Wrap, протяните от WWSkin к модели линию. У модели появится модификатор WWSkin Binding, позволяющий привязать точки модели к костям.

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

Привязка точек к костям:

Чтобы привязать точки к кости проделайте следующее:

1) Выделите точки.
2) В выпадающем списке Bone Influence выберите Link to Bone by Name.
3) В открывшемся списке выберите кость и дважды щёлкните на неё. Выделенные точки будут привязаны к выбранной кости.

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

Экспорт основы:

Теперь, когда скелет создан, а точки модели привязаны к костям, пришло время экспортировать модель, которая будет являться основой. Сначала экспортируйте скелет модели, а потом Hierarchical Model со скелетом.

При экспорте основы следите, чтобы анимация стояла на нулевом кадре.

Работа с анимацией:

Сохраните вашу модель в новый файл 3ds Max, он будет использоваться для хранения анимации.

Создание анимации основано на использовании ключей. Если вы никогда не сталкивались с анимацией в 3ds Max, то ознакомьтесь с управлением ключами здесь:

Анимация в 3ds max

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

Экспорт анимации:

Hierarchical Animated Model — пункт для экспорта анимации с геометрией. Здесь обязательно нужно указать скелет, начальную и конечную позиции кадров. За конечную позицию обычно берётся позиция последнего ключа.
Pure Animation — вариант, схожий с Hierarchical Animated Model, но без экспорта геометрии. В случае с пехотинцем у нас имеется и скелет, и модель-основа, экспортированная отдельно, поэтому подойдут оба варианта. Для анимации игра считывает положение костей и привязанные точки модели-основы передвигаются за костями.

Обработка файлов W3X:

С помощью блокнота или Notepad++ откройте все созданные .W3X файлы, замените все запятые на точки, у файла модели и анимации пропишите путь к текстурам и скелету (если вы экспортировали как Pure Animation, то только к скелету), сохраните измененные файлы.

Добавление модели и анимации к объекту:

Осталось только отредактировать файл пехотинца. В качестве исходного файла возьмите, например, GDIRifleSoldier.xml.

1) Внутри тега <Include> пропишите путь к .W3X файлам модели и анимации.
2) У <ModelConditionState> укажите идентификаторы модели, костей и вспышки.
3) Внутри <AnimationState> укажите идентификатор анимации.

Дополнительные сведения

Точка, относительно которой объект экспортируется — точка в 3ds Max с координатами (x=0 y=0 z=0). Эта точка также является костью, которая всегда экспортируется. Её название — ROOTTRANSFORM.

Если примитив экспортируется как кость, то координатами кости будут являться координаты Pivot’а примитива.

Если при экспорте отключить параметр Alpha Test Enable, то в игре текстура будет отображаться без альфа канала.

О рекомендуемом количестве полигонов для моделей можно посмотреть в файле: MODSDK/Documentation/Contents.htm.

Об авторе

MysteriousType

Серия игр Command & Conquer - прекрасная платформа для создания модификаций. Я верю в то, что благодаря модам, игры этой замечательной серии не будут забыты даже спустя десятки лет.

Комментировать