У цьому туторіалі я спробую навчити вас працювати з детальними об'єктами. Поки що це тільки трава та листя, але можна додати сміття, яке було у перших білдах, але, звичайно, за наявності відповідних моделей.
Теорія
У комплекті пакета SDK йде вже відкомпільований і налаштований список детальних об'єктів, файл SDK/rawdata/detail_list.dti. Сенс Detail List полягає у прив'язці детальних об'єктів до кольору намальованої особливим чином текстури, що визначає положення та тип детального об'єкта на рівні.
Структура текстури:
- Колір визначає тип об'єкта відповідно до Detail List.
- Альфа канал визначає щільність об'єктів.
Не люблю теорію, тому переходимо до практики, краще один раз зробити, ніж сто разів прочитати 🙂
Практика
Сподіваюся у вас вже є свій рівень на який ви хочете додати траву та листя, я візьму свій тестовий рівень.
Малюємо детальну текстуру
1. У Level Editor перейдемо на режим редагування детальних об'єктів;
2. У групі DO Commands натиснемо Object List. Відкриється редактор Detail Objects;
3. Завантажимо вже налаштований список деталей (SDK/rawdata/detail_list.dti).
Починаємо малювати розташування об'єктів на рівні відповідно до того кольору, що призначений у редакторі Detail Objects. Нагадаю, що альфа канал відповідає за густину об'єктів. Мій варіант текстури можна побачити праворуч (малював для наочності).
Зберігаємо текстуру в папку SDK/import у форматі Targa (TGA - 32bit/px, без стиснення).
Застосовуємо детальну текстуру до рівня
Лезем Tools->Properties, або просто натискаємо "Enter", якщо не змінювали налаштування гарячих клавіш. У властивостях детальних об'єктів нам необхідно вибрати як базову текстуру нашу, клацаємо по полю Base Texture. Відкриється діалог Select Texture, у якому знаходимо нашу текстуру.
Тепер переключаємося режим редагування 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