Глобальное озеленение, добавляем траву на уровень — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Глобальное озеленение, добавляем траву на уровень — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
 
 
(не показаны 15 промежуточные версии 4 участников)
Строка 1: Строка 1:
 
+
{|align=right
 +
|''Автор:'' '''[[Участник:Neo|Neo][]]'''
 +
|}
 
__TOC__
 
__TOC__
В данном туториале я попытаюсь научить вас работать с детальными объектами. Пока это только трава, листья, но в будущем возможно этот список расширится.
+
В данном туториале я попытаюсь научить вас работать с детальными объектами. Пока это только трава и листья, но можно добавить мусор, который был в первых билдах,
 +
но, конечно, при наличии соответствующих моделей.
  
 
== Теория ==
 
== Теория ==
[[Категория:Уроки]][[Категория:Незаконченные статьи]]
+
В комплекте пакета SDK идёт уже откомпилированный и настроенный список детальных объектов([[Detail List]]), файл SDK/rawdata/detail_list.dti. Смысл Detail List заключается в привязке детальных объектов к цвету нарисованной особым образом текстуры, которая определяет положение и тип детального объекта на уровне.
 +
 
 +
'''''Структура текстуры:'''''
 +
*Цвет - определяет типа объекта в соответствии с Detail List.
 +
*Альфа канал - определяет плотность объектов.
 +
Не люблю теорию, поэтому переходим к практике, лучше один раз сделать, чем сто раз прочитать :)
 +
 
 +
== Практика ==
 +
Надеюсь у вас уже есть свой уровень на который вы хотите добавить траву и листья, я возьму свой тестовый уровень.
 +
[[Изображение:SDK Level-Editor.jpg|thumb|500px|left|Level Editor с загруженным уровнем]]
 +
<br clear="both" />
 +
 
 +
=== Рисуем детальную текстуру ===
 +
[[Изображение:SDK-Deatil-List-Load.gif|thumb|left|Загрузка списка детальных объектов]]
 +
[[Изображение:SDK-Details-Texture.gif|thumb|Детальная текстура]]
 +
Первым делом надо нарисовать детальную текстуру для своего уровня, для чего она смотри в разделе "Теория".
 +
Перед тем как начать рисовать, узнаем какими же цветами мы можем рисовать, для этого:
 +
 
 +
1. В Level Editore переключимся на режим редактирования детальных объектов;<br>
 +
2. В группе DO Commands, нажмём Object List. Откроется редактор Detail Objects;<br>
 +
3. Загрузим уже настроенный список деталей(SDK/rawdata/detail_list.dti).
 +
 
 +
После загрузки списка в правой колонке вы увидите цвета и соответствующие им объекты, можно создавать новые цвета и им присваивать произвольные объекты, это даёт возможность иметь различные объекты в любых сочетаниях.
 +
Ну что ж, теперь мы знаем какому цвету что соответствует можем приступить и к рисованию. Запустим Photoshop, создадим новый файл размером 512х512. Вообще размер может быть любым кратным степени двойки, т.е. 128х128, 512х512, 1024х1024 и т.д.
 +
 
 +
Начинаем рисовать расположение объектов на уровне в соответствии с тем цветом, который назначен в редакторе Detail Objects. Напомню, что альфа канал отвечает за плотность объектов.
 +
Мой вариант текстуры можно увидеть справа(рисовал для наглядности).
 +
 
 +
Сохраняем получившуюся текстуру в папку SDK/import в формате Targa(TGA - 32bit/px, без сжатия).
 +
<br clear="both" />
 +
=== Применяем детальную текстуру к уровню ===
 +
{|align=left
 +
|[[Изображение:SDK-Find-new-texture.gif|thumb|left|200px|Редактор нашёл текстуру]]
 +
|-
 +
|[[Изображение:SDK-Properties-DO.gif|thumb|200px|left|Свойства детальных объектов]]
 +
|}
 +
[[Изображение:SDK-Update-Image-Dialog.gif|thumb|300px|Диалог импорта текстур]]
 +
 
 +
Переходим к работе с Level Editor-ом. Сначала добавим нашу текстуру в редактор, Images -> Check New Textures. Данная команда заставляет редактор просмотреть папку SDK/Import и добавить новые файлы в Texture List.
 +
Не меняя ничего в диалоге импорта текстур нажимаем ОК. Всё теперь наша карта есть в списке текстур редактора.
 +
Напоминаю, что редактор должен быть в режиме работы с детальными объектами.
 +
 
 +
Лезем Tools->Properties, либо просто нажимаем "Enter", если не меняли настройки горячих клавиш. В свойствах детальных объектов нам необходимо выбрать в качестве базовой текстуры нашу, щёлкаем по полю Base Texture.
 +
Откроется диалог Select Texture, в котором находим нашу текстуру.
 +
<!--[[Изображение:SDK-Select-texture-Dialog.gif|thumb|300px|center|Диалог Select Texture]]-->
 +
<br clear="both" />
 +
[[Изображение:SDK-Fill-Snap-List.gif|frame|Snap List -> Commands -> Make List From Selected]]
 +
Теперь переключаемся на режим редактирования Object, выбираем объекты, которые хотим покрыть детальными объектами, т.е. в нашем примере, что на данном этапе выберем, то и будет покрыто травой. Переключаемся обратно в режим редактирования Detail Objects, необходимо заполнить Snap List, для этого даём команду Snap List -> Commands -> Make List From Selected.
 +
 
 +
Список заполнен, проводим первую инициализацию(DO Commands -> First Initialize). В итоге у нас должно получиться что-то типа того, что изображено на левом скриншоте ниже, я специально вставил скрин исходника текстуры для сравнения.
 +
 
 +
Работа закончена, осталось собрать и откомпилировать уровень.
 +
<br clear="both" />
 +
{|
 +
|[[Изображение:SDK Level-Editor DO.jpg|thumb|500px|Вид на наш уровень сверху]]
 +
|[[Изображение:SDK Level-Editor DO zoom.jpg|thumb|500px|Более близкий взгляд]]
 +
|}
 +
 
 +
== Компиляция ==
 +
Компиляция детальных объектов осуществляется компилятором xrDO_light. Т.е. после сборки уровня(Compile -> Build) компилируется уровень(xrLC), а потом просчитывается освещение для детальных объектов(xrDO_light). Таким образом, если пришлось поменять что-то в детальных объектах, нет необходимости заново компилировать уровень, достаточно просчитать освещение детальных объектов и всё, т.е. Compile -> Make Detail + xrDO_light
 +
 
 +
Вот как это выглядит в игре.
 +
{|
 +
|[[Изображение:Ss pavel 06-12-07 03-13-49 (ai).jpg|thumb|400px|Детальные объекты в игре]]
 +
|[[Изображение:Ss pavel 06-12-07 03-15-39 (ai).jpg|thumb|400px|Разная плотность детальных объектов]]
 +
|}
 +
 
 +
[[Категория: SDK]]

Текущая версия на 11:46, 27 ноября 2016

Автор: Neo][

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

Теория

В комплекте пакета SDK идёт уже откомпилированный и настроенный список детальных объектов(Detail List), файл SDK/rawdata/detail_list.dti. Смысл Detail List заключается в привязке детальных объектов к цвету нарисованной особым образом текстуры, которая определяет положение и тип детального объекта на уровне.

Структура текстуры:

  • Цвет - определяет типа объекта в соответствии с Detail List.
  • Альфа канал - определяет плотность объектов.

Не люблю теорию, поэтому переходим к практике, лучше один раз сделать, чем сто раз прочитать :)

Практика

Надеюсь у вас уже есть свой уровень на который вы хотите добавить траву и листья, я возьму свой тестовый уровень.

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

Теперь переключаемся на режим редактирования 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

Вот как это выглядит в игре.

Детальные объекты в игре
Разная плотность детальных объектов
Другие места
LANGUAGE