Fog tutorial

From Valve Developer Community
< Ru
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
English (en)Русский (ru)中文 (zh)Translate (Translate)

Применение тумана для скайбоксов

Настройки тумана в ентити env_fog_controller(en) не влияют на скайбокс.

Когда у вас есть туман на карте, вы можете столкнуться с проблемой, что туман действует на геометрию и модели, но не на скайбокс(en).

Для скайбоксов вы можете использовать материалы, которые были использованы в других уровнях HL2(en) или создать новый. В последней версии движка улучшили производительность визуализации тумана и добавили новые возможности для настройки.

Note.pngПримечание:3D Skybox(en) использует свои собственные настройки тумана в энтити sky_camera(en). Для лучшего результата сопоставьте эти настройки с вашими env_fog_controller(en).

Быстрое решение проблемы

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

Чтобы добиться результата, когда скайбокс не виден в тумане, вам надо применить текстуру sky_day02_10 для скайбокса (если посмотреть на исходник, то это текстура с нарисованным эффектом тумана). Для списка текстур неба, смотрите статью Sky List(en).

Затем, в свойствах env_fog_controller(en) должны стоять такие настройки:

Primary fog color(первичный цвет тумана): 176 192 202
Secondary fog color(вторичный цвет тумана): 206 216 222

Эти настройки используется в главе Highway 17(en) на уровне с ж/д мостом в HL2(en).

Note.pngПримечание:Для быстрого решения проблемы этот способ подойдёт. Однако результат может отличаться от ожидаемого, если вы используете функцию "far z-clip plane" ентити env_fog_controller(en), т.к. вы ограничены одной настройкой цвета.

Создание своей текстуры неба (скайбокса)

В этой части статьи мы создадим скайбокс, который использует primary fog color. Обычно их 6, и разрешение каждого файла равно 1024x1024, но в этом уроке мы создадим один файл с меньшим размером для улучшения производительности.

Cоздадим .vtf-файл(en) с цветом вашего тумана. Лучше сохранить его в папку skybox. Запомните его имя. В этом уроке он называется sky_fog_tex.

Теперь создайте 6 .vmt-материалов(en), необходимых для скайбокса. В этом уроке текстура называется sky_fog:

sky_fogbk.vmt 		//Back - Задняя стенка скайбокса
sky_fogdn.vmt		//Down - Нижняя стенка скайбокса
sky_fogft.vmt		//Front - Передняя стенка скайбокса
sky_foglf.vmt		//Left - Левая стенка скайбокса
sky_fogrt.vmt		//Right - Правая стенка скайбокса
sky_fogup.vmt		//Up - Верхняя стенка скайбокса

Они все должны содержать следующие строки:

 "UnlitGeneric"
 {
 	"$baseTexture" "skybox/sky_fog"
 }

В отличии от обычных текстур неба, мы не используем переменную"$nofog" 1.

При использовании этого скайбокса и с использованием только primary fog color у ентити env_fog_controller(en), все затуманенные модели и геометрические примитивы будут иметь такой же цвет.

Note.pngПримечание:Это не значит, что не надо использовать значение secondary fog color. Просто с использованием этого параметра необходимо помнить, что расстояние между игроком и скайбоксом должно быть всегда меньше параметра Fog End(конец тумана), к тому же мы не стали использовать переменную "$nofog" 1 в файлах материалов нашего скайбокса. При отсутствии переменной "$nofog" 1 туман будет отображаться и на текстуре неба. Однако этот метод используется только тогда, когда перерисовывается вся геометрия уровня.
Tip.pngСовет:для этой цели можно использовать 3D Skybox(en).

Смотрите также