В пакете SDK уже довольно много готовой геометрии, которую можно размещать на своём уровне, но иногда хочется вставить что-то своё, это можно сделать, смоделировав объект в пакете 3D моделирования Maya или 3D Studio Max.
Создание геометрии
Научить работать в 3D редакторах я не смогу, поэтому подробно остановлюсь только на процессах установки и настройки плагина, текстурировании и назначении шейдеров геометрии.
Установка и настройка плагина
Установка для Maya
Установка плагина заключается в копировании:
- Всех файлов из папки scripts_plugins\scripts в папку C:\Documents and Settings\UserName\My Documents\maya\scripts
- Всех файлов из папки scripts_plugins\ver-ххх в папку C:\Program Files\Autodesk\Maya_ххх\bin
- Файла scripts_plugins\xray_path.ltx в папку C:\Program Files\Autodesk\Maya_ххх\bin
Установка для 3D Studio Max
Качаем плагин. Распаковываем архив, копируем содержимое папки plugin(именно plugin) в папку макса.
Настройка
Далее в официальном руководстве написано, что требуется диск Х, мы приложили батник для создания этого диска и т.д.Возможно кто-то согласится с таким вариантом, но я решил просто отредактировать файл xray_path.ltx и не мучатся с батником и диском.
Необходимо изменить только первые две строчки файла xray_path.ltx:
$server_root$ = false| false| e:\sdk\(это путь до папки в которой у вас находится SDK)
$local_root$ = false| false| e:\sdk\(это путь до папки в которой у вас находится SDK)
После некоторого шаманства заработало в таком виде:
$server_root$ = false| false| C:\Program Files\X-Ray SDK\level_editor\
$local_root$ = false| false| C:\Program Files\X-Ray SDK\level_editor\
Всё, можно пользоваться плагином.
Настройка единиц измерения
Для того, чтобы размеры объектов в редакторе совпадали с теми, что используются в X-Ray SDK, необходимо выполнить соответствующую настройку.
Настройка Maya
Для начала необходимо единицы измерения перевести в метры (по умолчанию в Maya 8.5 используются сантиметры). Делается это в 2 этапа:
- Заходим в меню Window -> Settings/Preferences -> Preferences. В открывшемся диалоге, в категории Settings, находим список Working Units -> Linear и выбираем Meter, как показано на скриншоте (шаг 1, шаг 2).
- Теперь, для удобства работы, в настройках камеры необходимо изменить дальность отображения с 10м на 1000м (смотри скриншот шаг 3)
Шаг 1: выбираем указанный пункт меню | Шаг 2: выбираем еденицы измерения - метры | Шаг 3: настраиваем камеру |
Замечен глюк: после настройки камеры изображение может пропасть, в чём дело пока не разобрался, но ситуацию помогает победить выбор в меню камеры следующих двух пунктов:
- Panel -> Perspective -> New
- View -> Camera Settings -> View Compass
Настройка 3D Studio Max
Настройка заключается только в выборе в качестве единиц измерения метров.
- Заходим в меню Customize -> Units Setup... В группе Display Unit Scale ставим переключатель на Metric, в выпадающем списке ищем Meters.
- Так же необходимо нажать кнопку System Unit Setup и приравнять условную единицу к метру (т.е. там где "1 Unit = 1,0 в выпадающем списке выбрать Meters. Флажок "Respect System Units in Files" должен быть включен)
Моделирование
Для нашего простейшего уровня нам понадобится создать просто бокс в качестве террейна.
Создадим box размеров 50м*50м*0,1м.
Замечания и правила
- Вся геометрия должна быть создана в реальных мировых размерах (если стол в реальной жизни высотой 1 метр, значит его надо и в Maya делать высотой 1 метр, всё предельно ясно и просто)
- Bounding box персонажа имеет три состояния: стоя (1.8х0.7х0.7 в метрах), сидя (1.5х0.7х0.7 в метрах) и очень сидя (1.2х0.7х0.7 в метрах).
- Весь уровень должен быть не больше 150 тысяч треугольников.
- Сцена должна состоять из групп. Название группы формируется по такому принципу: mp_имяуровня_назвгеометрии. Например, в нашей тестовой сцене такие группы: mp_atp_terrain, mp_atp_buildings. В группе может находится как и один объект, так и несколько. Имена объектов внутри группы никоем образом не должны совпадать с именем группы. В переделах одной группы все имена должны быть уникальны.
- Шейп объекта должен содержать правильное имя. Формируется по такому принципу: объект - имя_объекта, шейп - имя_объектаShape
Текстурирование и назначение шейдеров
3D Studio Max
Открываем Material Editor(M) выделив один из образцов материала, открываем диалог Material/Map Browser, щелчком на кнопке Standart. Создадим новый материал XRayMtl, дважды щёлкнув по нему в списке.
Займёмся настройкой параметров материала. X-ray материал, кроме текстуры использует надстройку состоящую из трёх шейдеров - Engine, Compiler, Material.
- Engine - отображение текстуры в движке игры.
- Compiler - используется при компиляции уровня.
- Material - игровой материал (wallmark, sound и др.).
Для начала настроим шейдеры. В Material Editor-e разворачиваем свиток XRay Params. В выпадающих списках представлены различные варианты шейдеров. Более подробно параметры шейдеров рассмотрены в статье Описание шейдеров XRayMtl. Для нашего примера ограничимся установкой следующих значений:
- Engine - default
- Compiler - default
- Material - material/asphalt
Создание нового материала XRayMtl | Настройка XRay шейдеров материала |
Текстурирование заключается в назначении текстуры процедурной карте Diffuse Color.Вообще, в редакторе материалов (В свитке Maps) много процедурных карт, но X-Ray mtl поддерживает (экспортирует) лишь одну, указанную выше.!Важно - чтобы экспорт был, надо назначить карту в кнопку diffuse colour. Можно назначить любую карту формата *tga, так-же важно чтобы размер текстуры (ширина/высота) был равен степени двойки (256, 512 и т.д.).После присвоения каналу diffuse colour любой текстуры НЕ ЗАБЫВАЕМ ПРИСВОИТЬ МАТЕРИАЛ НАШЕМУ ТЕРРАЙНУ и сделать Convert to Editable Mesh, иначе будет вылет программы. Делается это двумя способами:1. Drug&drop материал из слота Material Editor'а на наш box.2. Нажать кнопку Assign Material to Selection (при условии, что ваш террайн выделен) в редакторе материалов.З.Ы. Если вы не удовлетворены тем, как текстура легла на террайн, воспользуйтесь модификаторами, например, UVW Map. Затем не забудьте сделать Convert to Editable Mesh!Экспорт
3D Studio Max
Для начала выделяем все объекты, которые мы хотим экспортировать в виде единого объекта, т.е. всё, что мы выберем сейчас в редакторе будет представленно как одна модель. В нашем случае это один box.
Переходим на командную панель Utilities, нажимаем кнопку More... В появившемся списке в самом конце видим XRay Export, выбираем, жмём ОК.После запуска модуля на панели появится новый свиток XRay Export, в списке Selected можно проконтролировать какие объекты выбраны, нажимаем кнопку Export Editor Object... cохраняем файл в папку {SDK folder}\import.
Запускаем модуль экспорта | |
Импорт геометрии и текстур в пакет
При экспорте из редактора(Maya && 3D Max) мы получим файлы *.object.
Запускаем Level Editor и добавим нашу геометрию в Objects Library, делается это так: Objects -> Library Editor, откроется диалог Object Library.
Для удобства создадим новую группу для наших объектов, щёлкаем в левой части окна ПКМ и выбираем Create Folder, переименуем в my_first_level.Выделяем группу, и нажимаем кнопку Import Object, ищём наши *.object файлы, после того как объекты добавлены можно посмотреть, как они примерно будут выглядеть в игре, для этого ставим галочку Preview и любуемся нашим объектом. Теперь можно закрыть диалог Object Library.
Если использовали свою текстуру, то её также надо добавить в пакет, Images -> Check New Textures. Данная команда заставляет редактор просмотреть папку SDK/Import и добавить новые файлы в Texture List, файлы должны быть в формате Targa(*.tga).Не меняя ничего в диалоге импорта текстур нажимаем ОК. Всё теперь наша текстура есть в списке текстур редактора. Можно переходить к следующему шагу.
| Создание группы для объектов | |
Создаём уровень
Приступим к созданию уровня, начнём с расстановки объектов.
Расстановка объектов :)
Тутор пока незакончен, так что о подробной работе в редакторе,сохранении и компиляции читаем по ссылке ниже с шага 6
Подключение уровня к игре
Чтобы уровень можно было создавать прямо из игры, его необходимо добавить в список уровней.Существует четыре случая, рассмотрим каждый.
SDK объединён с игрой
В данном случае надо только отредактировать файл gamedata\config\mp\map_list.ltx, вписав в каждой из секции [deathmatch], [teamdeathmatch], [artefacthunt] название своего уровня.
SDK не объединён с игрой, игра распакована
В данном случае надо также отредактировать файл gamedata\config\mp\map_list.ltx, вписав в каждой из секции [deathmatch], [teamdeathmatch], [artefacthunt] название своего уровня + скопировать содержимое папки [SDK folder]\gamedata\levels\название уровня\ в папку [STALKER folder]\gamedata\levels\название уровня\.
SDK не объединён с игрой, игра не распакована
Повторяем действия предыдущего случая, только папки надо будет создавать самому, файл gamedata\config\mp\map_list.ltx можно взять из папки [SDK folder]\gamedata\config\mp\map_list.ltx
SDK не объединён с игрой + использовались свои текстуры
В данном случае необходимо скопировать:
- Текстуры из [SDK folder]\gamedata\textures\user\ в папку [STALKER folder]\gamedata\textures\user\
- Файл [SDK folder]\gamedata\textures\textures.ltx в папку [STALKER folder]\gamedata\textures\