Ru/3D Skybox

Включение области трёхмерного небосвода в карту станет мощным дополнением к визуальной составляющей карты. Это отдельная область, которую разработчик карты располагает за границами игрового мира. Сразу после загрузки карты, движок увеличивает объекты, находящиеся в области трёхмерного небосвода и помещает их за пределы карты, между и игроком. Это визуально расширяет мир вашего уровня и экономит ресурсы, т.к. по умолчанию используется масштаб 1:16. Область трёхмерного небосвода - неинтерактивная часть карты - игрок и другие объекты мира не могут попасть в него. Геометрия 3D-скайбокса ничем не отличается от обычной геометрии карты. Возможен бесшовный переход от обычной геометрии карты к области трёхмерного небосвода (см. официальные карты на ).
==Преимущества==
Небосвод - это простые двухмерные изображения, наложенные на внутренние поверхности короба, окружающего карту. Объёмное небо - это полностью трёхмерная геометрия, точно синхронизированная с перемещением игрока. Т.к. они обрабатываются в реальном времени, они масштабируются с текущим разрешением видеокарты и поддерживают шейдеры в реальном времени, недоступные для небосвода.
Основным преимуществом объёмного неба является возможность визуально расширить карту. Максимальный размер карты без объемного неба - 32768 единиц по каждой оси координат. Используя объёмное небо, мир игры визуально увеличивается в 16 раз.
Карты такого размера возможны, т.к. области трёхмерного небосвода создаются в редакторе карт Hammer в масштабе 1/16. При компиляции карты, движок игры масштабирует их. Это не только сохраняет место в редакторе, но и ускоряет компиляцию и рендеринг.
В связи с масштабированием областей трёхмерного неба, их карты освещённости имеют меньший размер. Поэтому объекты в области трёхмерного небосвода не так ресурсоёмки, как обычные.
Объёмное небо может быть использовано для преодоления ограничения расстояний между локациями, если они будут созданы как основная карта в малом разрешении. Команда разработчиков мода должна учитывать это для облегчения перехода от одной карты к другой.
===Основные характеристики===
Области трёхмерного небосвода имеют следующие характеристики:
* По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты.
* Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
* Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода. 
* Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как ).
* Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели () не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для , все такие модели находятся в папке models/props_skybox или имеют суффикс _skybox.
* Не должны содержать объекты типа , NPC или монстров.
* Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.
* Должны иметь собственные источники освещения, хотя , находящийся на локации, будет применяться.
* Используйте объект мира для контроля совпадения с не-скайбоксовской геометрией.
* У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира .
* Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность.
* На карте должен быть размещён объект мира , иначе модели в области трёхмерного небосвода будут освещены неправильно. light_environment в основной части карты избавит от проблем.
==Создание областей трёхмерного небосвода==
* Примечание для карт Portal: области трёхмерного небосвода не видны сквозь порталы.
* Примечание насчёт : точечные объекты мира не изменяют масштаб.
Самый эффективный способ создания области трёхмерного небосвода, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее - подробное пошаговое объяснение:
# Добавьте в центр карты энтити (в координаты 0, 0, 0). - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити.
# Выберите несколько заметных деталей уровня, которые помогут Вам создать область трёхмерного небосвода. Для этого отлично подойдут стены, строения, и другие элементы карты, которые образуют границы карты. Проверьте, чтобы объект мира тоже был выделен.
# Выберите пункт Copy из меню Edit, или нажмите CTRL+C.
# Выберите пункт Paste Special из того же меню. Задайте Number of copies to paste как 1, и все другие параметры выставите в 0. Нажмите OK. На карте появится дубликат того, что вы выделяли.
# Включите на панели инструментов кнопку Scaling Texture Lock, если она отключена. Это иконка с надписью <tl>. Это заставит текстуры масштабироваться вместе с геометрией.
# Не снимая выделения, выберите пункт Transform из меню Tools. Установите флажок напротив Scale. Выставите значение.0625 для X, Y, Z. Это уменьшит выделение в 16 раз, как раз под масштаб области трёхмерного небосвода. Нажмите OK. 
# Теперь у Вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где Вы хотите разместить область трёхмерного небосвода. Не имеет значения, где она расположена, главное чтобы она не касалась остальной части карты.
# Удалите объект мира с центра нормальной карты. 
# Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и . Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16. hl2\models\props_skybox\coast01.mdl - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре.
# Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой tools\toolsskybox. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство".
# Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, исключая объект мира . Для облегчения работы можно спрятать геометрию как отдельную , и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта.
# На оригинальной части карты следует создать элементы карты со служебной текстурой tools\toolsskybox, везде, где планировалось показывать игроку небо (а значит, и область трёхмерного небосвода).
==Проверка==
Если Вы закончили создание области трёхмерного небосвода, можете компилировать свою карту и смотреть, что получилось в игре.
== Примеры ==
* См. sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf для примера области трёхмерного небосвода.
* An example of extending draw distances with 3D skyboxes (commented)
* 3D Skybox Video Tutorial
* HL2 sample VMF for 3D Skybox water/world
==Уроки по созданию Объёмного неба==
Группа автора уроков в ВК Project-S
*About 3D Skybox (Rus)
*Ocean Skybpx (Rus)
*3D Models (Rus)
*Easy Displacement (Rus)
*Brush World and disp (Rus)
*Source SDK - Custom Skybox (How to create Skybox - 360 Panorama) (на Русском)