Объёмное небо (трёхмерный небосвод)

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Deutsch (de)Italiano (it)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)
Edit Tabs

Включение области трёхмерного небосвода в карту станет мощным дополнением к визуальной составляющей карты. Это отдельная область, которую разработчик карты располагает за границами игрового мира. Сразу после загрузки карты, движок увеличивает объекты, находящиеся в области трёхмерного небосвода и помещает их за пределы карты, между небосводом(двумерным)(en) и игроком. Это визуально расширяет мир вашего уровня и экономит ресурсы, т.к. по умолчанию используется масштаб 1:16. Область трёхмерного небосвода - неинтерактивная часть карты - игрок и другие объекты мира не могут попасть в него. Геометрия области объёмного неба ничем не отличается от обычной геометрии карты. Возможен бесшовный переход от обычной геометрии карты к области трёхмерного небосвода (см. официальные карты на Counter-Strike: Source(en)).

Icon-Bug.pngБаг:В Portal Portal трёхмерный небосвод отображается неправильно при просмотре через порталы - смотрите здесь.
Icon-Important.pngВажно: Область трёхмерного небосвода не заменяет небосвод(двумерный)(en). Небосвод всегда находится на фоне объёмного неба. Чтобы изменить небосвод, см. небосвод(двумерный)(en)
Note.pngПримечание: In Portal 2 Portal 2 some skybox geometry won't be visible unless you set the cvar r_skybox_draw_last to 0.

Преимущества

Небосвод - это простые двухмерные изображения, наложенные на внутренние поверхности короба, окружающего карту. Объёмное небо - это полностью трёхмерная геометрия, точно синхронизированная с перемещением игрока. Т.к. они обрабатываются в реальном времени, они масштабируются с текущим разрешением видеокарты и поддерживают шейдеры в реальном времени, недоступные для небосвода.

Основным преимуществом объёмного неба является возможность визуально расширить карту. Максимальный размер карты без объемного неба - 32768 единиц по каждой оси координат. Используя объёмное небо, мир игры визуально увеличивается в 16 раз.

Карты такого размера возможны, т.к. области трёхмерного небосвода создаются в редакторе карт Hammer в масштабе 1/16. При компиляции карты, движок игры масштабирует их. Это не только сохраняет место в редакторе, но и ускоряет компиляцию и рендеринг.

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

Объёмное небо может быть использовано для преодоления ограничения расстояний между локациями, если они будут созданы как основная карта в малом разрешении. Команда разработчиков мода должна учитывать это для облегчения перехода от одной карты к другой.

Основные характеристики

Области трёхмерного небосвода имеют следующие характеристики:

  • По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты.
  • Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
  • Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода.
  • Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как env_sprite(en)).
    • Due to their scale, lightmap and texture resolution may need to be increased to fit with the main level geometry better.
  • Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели (props(en)) не масштабированы для объёмного неба. Необходимо использовать масштаб 1/16. Для Half-Life 2(en), все такие модели находятся в папке models/props_skybox или имеют суффикс _skybox.
    • For props that do not have skybox counterparts, (ex: refinery_04_skybox.mdl in Half-Life 2) use Propper++ (included with Hammer++) to scale the prop down to match the 3D skybox scale.
    • In all branches since Alien Swarm aswell as Source 2013, Dynamic props can be scaled using the Model Scale (modelscale) KV. In games derived from the CS:GO branch, static props can be scaled using the uniformscale KV.
Icon-Important.pngВажно: Using Hammer++ is highly recommended for this workaround, as regular Hammer does not support previewing (modelscale).
  • Не должны содержать объекты типа info_player_start(en), NPC или монстров.
  • Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.
  • Должны иметь собственные источники освещения, хотя light_environment(en), находящийся на локации, будет применяться.
  • Используйте объект sky_camera(en) для контроля совпадения с геометрией элементов карты.
  • У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира sky_camera(en).
  • Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность.
  • На карте должен быть размещён объект light_environment(en), иначе модели в области трёхмерного небосвода будут освещены неправильно. light_environment в основной части карты избавит от проблем.

Создание областей трёхмерного небосвода

  • Примечание насчёт sky_camera(en): точечные объекты мира не изменяют масштаб.

Самый эффективный способ создания области трёхмерного небосвода, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее - подробное пошаговое объяснение:

  1. Добавьте в центр карты объект sky_camera(en) (в координаты 0, 0, 0). sky_camera(en) - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, sky_camera(en) играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этого объекта.
  2. Выберите несколько заметных деталей уровня, которые помогут Вам создать область трёхмерного небосвода. Для этого отлично подойдут стены, строения, деформированные поверхности(en) и другие элементы карты, которые образуют границы карты. Проверьте, чтобы объект sky_camera(en) тоже был выделен.
    Note.pngПримечание: Это важно, НЕ выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.
  1. Выберите пункт Copy из меню Edit, или нажмите CTRL+C.
  2. Выберите пункт Paste Special из того же меню. Задайте Number of copies to paste как 1, и все другие параметры выставите в 0. Нажмите OK. На карте появится дубликат того, что вы выделяли.
  3. Включите на панели инструментов кнопку Scaling Texture Lock, если она отключена. Это иконка с надписью <tl>. Это заставит текстуры масштабироваться вместе с геометрией.
  4. Не снимая выделения, выберите пункт Transform из меню Tools. Установите флажок напротив Scale. Выставите значение.0625 для X, Y, Z. Это уменьшит выделение в 16 раз, как раз под масштаб области трёхмерного небосвода. Нажмите OK.
    Note.pngПримечание: Если Вы хотите, чтобы текстуры растянулись на элементах карты, убедитесь в том, что включен режим "Texture Lock"
  1. Теперь у Вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где Вы хотите разместить область трёхмерного небосвода. Не имеет значения, где она расположена, главное чтобы она не касалась остальной части карты.
  2. Удалите объект sky_camera(en) с центра нормальной карты.
    Icon-Important.pngВажно: На карте должен остаться только один объект sky_camera(en) - непосредственно в области трёхмерного небосвода.
  1. Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и деформированные поверхности(en). Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16. hl2\models\props_skybox\coast01.mdl - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре.
  2. Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой tools\toolsskybox. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство".
  3. Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, исключая объект sky_camera(en). Для облегчения работы можно спрятать геометрию как отдельную видовую группу(en), и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта.
  4. На оригинальной части карты следует создать элементы карты со служебной текстурой tools\toolsskybox, везде, где планировалось показывать игроку небо (а значит, и область трёхмерного небосвода).

Проверка

Если Вы закончили создание области трёхмерного небосвода, можете компилировать свою карту и смотреть, что получилось в игре.

Tip.pngСовет: Hammer++ Hammer++ allows previewing the 3D skybox in the editor. The 3D skybox must be converted into an instance first, which can be done by selecting the entire 3D skybox and running Tools -> Convert Instance to Selection. Use the 3D sky preview button in the toolbar to toggle the preview.

Примеры

Создание объёмного неба в 3ds Max

You can also create your 3D Skybox in a much simpler way than the traditional Hammer method if you build your level inside 3ds Max with Wall Worm Model Tools. Wall Worm lets you build your 3D Skybox at the scale of the map and avoids the need to shrink down the skybox.

To do this, simply "tag" the skybox geometry with the Tag functions in the Anvil tools that come with Wall Worm.

See a demonstration and download a sample scene here.

Уроки по созданию Объёмного неба

Группа автора уроков в ВК Project-S

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