ЗВ комплекте пакета SDK идёт уже откомпилированный и настроенный список детальных объектов(Detail List), файл SDK/rawdata/detail_list.dti. Смысл Detail List заключается в привязке детальных объектов к цвету нарисованной особым образом текстуры, которая определяет положение и тип детального объекта на уровне. Структура текстуры: * Цвет - определяет типа объекта в соответствии с Detail List. * Альфа канал - определяет плотность объектов. Не люблю теорию, поэтому переходим к практике, лучше один раз сделать, чем сто раз прочитать Практика Надеюсь у вас уже есть свой уровень на который вы хотите добавить траву и листья, я возьму свой тестовый уровень. Level Editor с загруженным уровнем Увеличить Level Editor с загруженным уровнем Рисуем детальную текстуру Загрузка списка детальных объектов Увеличить Загрузка списка детальных объектов Детальная текстура Увеличить Детальная текстура Первым делом надо нарисовать детальную текстуру для своего уровня, для чего она смотри в разделе "Теория". Перед тем как начать рисовать, узнаем какими же цветами мы можем рисовать, для этого: 1. В Level Editore переключимся на режим редактирования детальных объектов; 2. В группе DO Commands, нажмём Object List. Откроется редактор Detail Objects; 3. Загрузим уже настроенный список деталей(SDK/rawdata/detail_list.dti). После загрузки списка в правой колонке вы увидите цвета и соответствующие им объекты, можно создавать новые цвета и им присваивать произвольные объекты, это даёт возможность иметь различные объекты в любых сочетаниях. Ну что ж, теперь мы знаем какому цвету что соответствует можем приступить и к рисованию. Запустим Photoshop, создадим новый файл размером 512х512. Вообще размер может быть любым кратным степени двойки, т.е. 128х128, 512х512, 1024х1024 и т.д. Начинаем рисовать расположение объектов на уровне в соответствии с тем цветом, который назначен в редакторе Detail Objects. Напомню, что альфа канал отвечает за плотность объектов. Мой вариант текстуры можно увидеть справа(рисовал для наглядности). Сохраняем получившуюся текстуру в папку SDK/import в формате Targa(TGA - 32bit/px, без сжатия). Применяем детальную текстуру к уровню Редактор нашёл текстуру Увеличить Редактор нашёл текстуру Свойства детальных объектов Увеличить Свойства детальных объектов Диалог импорта текстур Увеличить Диалог импорта текстур Переходим к работе с Level Editor-ом. Сначала добавим нашу текстуру в редактор, Images -> Check New Textures. Данная команда заставляет редактор просмотреть папку SDK/Import и добавить новые файлы в Texture List. Не меняя ничего в диалоге импорта текстур нажимаем ОК. Всё теперь наша карта есть в списке текстур редактора. Напоминаю, что редактор должен быть в режиме работы с детальными объектами. Лезем Tools->Properties, либо просто нажимаем "Enter", если не меняли настройки горячих клавиш. В свойствах детальных объектов нам необходимо выбрать в качестве базовой текстуры нашу, щёлкаем по полю Base Texture. Откроется диалог Select Texture, в котором находим нашу текстуру. Snap List -> Commands -> Make List From Selected Snap List -> Commands -> Make List From Selected Теперь переключаемся на режим редактировани Object, выбираем объекты, которые хотим покрыть детальными объектами, т.е. в нашем примере, что на данном этапе выберем, то и будет покрыто травой. Переключаемся обратно в режим редактирования Detail Objects, необходимо заполнить Snap List, для этого даём команду Snap List -> Commands -> Make List From Selected. Список заполнен, проводим первую инициализацию(DO Commands -> First Initialize). В итоге у нас должно получиться что-то типа того, что изображено на левом скриншоте ниже, я специально вставил скрин исходника текстуры для сравнения. Работа закончена, осталось собрать и откомпилировать уровень. Вид на наш уровень сверху Увеличить Вид на наш уровень сверху Более близкий взгляд Увеличить Более близкий взгляд Компиляция Компиляция детальных объектов осуществляется компилятором xrDO_light. Т.е. после сборки уровня(Compile -> Build) компилируется уровень(xrLC), а потом просчитывается освещение для детальных объектов(xrDO_light). Таким образом, если пришлось поменять что-то в детальных объектах, нет необходимости заново компилировать уровень, достаточно просчитать освещение детальных объектов и всё, т.е. Compile -> Make Detail + xrDO_light Вот как это выглядит в игре. Детальные объекты в игре
|