Ru/3D Skybox: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 30: | Line 30: | ||
* 3D-скайбоксы - не интерактивные зоны – игроки и другие энтити уровня не могут перемещаться внутри 3D скайбокса. | * 3D-скайбоксы - не интерактивные зоны – игроки и другие энтити уровня не могут перемещаться внутри 3D скайбокса. | ||
* Создаются из брашей, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, брашевых и точечных энтитей (таких как [[env_sprite]]). | * Создаются из брашей, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, брашевых и точечных энтитей (таких как [[env_sprite]]). | ||
* Любые модели в 3D-скайбоксе должны соответствовать масштабу 1/16. Стандартные модели ([[Prop_Types_Overview|props]]) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для [[Half-Life 2]], все такие модели находятся в папке <code>models/props_skybox</code> или имеют суффикс <code>_skybox</code>. | * Любые модели в 3D-скайбоксе должны соответствовать масштабу 1/16. Стандартные модели ([[Prop_Types_Overview:ru|props]]) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для [[Half-Life 2]], все такие модели находятся в папке <code>models/props_skybox</code> или имеют суффикс <code>_skybox</code>. | ||
* Не должны содержать [[info_player_start]], NPC или монстров. | * Не должны содержать <code>[[info_player_start]]</code>, NPC или монстров. | ||
* Имеют меньшие по размеру карты | * Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы. | ||
* Должны иметь собственные источники освещения, хотя [[light_environment]], находящийся на локации, будет применяться. | * Должны иметь собственные источники освещения, хотя <code>[[light_environment:ru|light_environment]]</code>, находящийся на локации, будет применяться. | ||
* Используйте | * Используйте энтити <code>[[sky_camera]]</code> для контроля совпадения с не-скайбоксовской геометрией. | ||
* У 3D-скайбоксов собственные параметры тумана, настраиваемые в энтити [[sky_camera]]. | * У 3D-скайбоксов собственные параметры тумана, настраиваемые в энтити <code>[[sky_camera]]</code>. | ||
* Геометрия в 3D-скайбоксах никак не обрезается. Добавление множества моделей может существенно снизить производительность. | * Геометрия в 3D-скайбоксах никак не обрезается. Добавление множества моделей может существенно снизить производительность. | ||
* На карте должен быть | * На карте должен быть размещён <code>[[light_environment:ru|light_environment]]</code>, иначе модели в 3d-скайбоксе будут освещены неправильно. <code>light_environment</code> в основной части карты избавит от проблем. | ||
==Создание 3D-скайбоксов== | ==Создание 3D-скайбоксов== | ||
* Примечание для карт Portal: ''3D-скайбоксы не видны сквозь порталы.'' | * Примечание для карт Portal: ''3D-скайбоксы не видны сквозь порталы.'' | ||
* Примечание | * Примечание насчёт <code>[[sky_camera]]</code>: точечные энтити не изменяют масштаб. | ||
Самый эффективный способ создания скайбокса, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее - подробное пошаговое объяснение: | Самый эффективный способ создания скайбокса, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее - подробное пошаговое объяснение: | ||
# Добавьте в центр карты энтитю [[sky_camera]] (в координаты 0, 0, 0). [[sky_camera]] - это ориентировочная точка | # Добавьте в центр карты энтитю <code>[[sky_camera]]</code> (в координаты 0, 0, 0). <code>[[sky_camera]]</code> - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, <code>[[sky_camera]]</code> играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити. | ||
# Выберите несколько заметных деталей уровня, которые помогут вам создавать скайбокс. Для этого отлично подойдут стены, строения, дисплейсменты и другие браши, которые образуют границы карты. Проверьте, чтобы энтити [[sky_camera]] тоже была выделена. | # Выберите несколько заметных деталей уровня, которые помогут вам создавать скайбокс. Для этого отлично подойдут стены, строения, дисплейсменты и другие браши, которые образуют границы карты. Проверьте, чтобы энтити <code>[[sky_camera]]</code> тоже была выделена. | ||
{{note:ru|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}} | {{note:ru|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}} | ||
# Выберите пункт '''Copy''' из меню '''Edit''', или нажмите CTRL+C. | # Выберите пункт '''Copy''' из меню '''Edit''', или нажмите CTRL+C. | ||
Line 53: | Line 53: | ||
# Не снимая выделения, выберите пункт '''Transform''' из меню '''Tools'''. Установите флажок напротив '''Scale'''. Выставите значение'''.0625 для X, Y, Z.''' Это уменьшит выделение в 16 раз, как раз под масштаб скайбокса. Нажмите '''OK'''. {{note:ru|Если вы хотите, чтобы текстуры растянулись на брашах, убедитесь в том, что включен режим '''"Texture Lock"'''}} | # Не снимая выделения, выберите пункт '''Transform''' из меню '''Tools'''. Установите флажок напротив '''Scale'''. Выставите значение'''.0625 для X, Y, Z.''' Это уменьшит выделение в 16 раз, как раз под масштаб скайбокса. Нажмите '''OK'''. {{note:ru|Если вы хотите, чтобы текстуры растянулись на брашах, убедитесь в том, что включен режим '''"Texture Lock"'''}} | ||
# Теперь у вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где вы хотите делать скайбокс. Не имеет значения где он расположен, главное чтобы он не касался остальной части карты. | # Теперь у вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где вы хотите делать скайбокс. Не имеет значения где он расположен, главное чтобы он не касался остальной части карты. | ||
# Удалите первую [[sky_camera]] с центра нормальной карты. {{note:ru|На карте должна остаться только одна [[sky_camera]] - непосредственно в скайбоксе.}} | # Удалите первую <code>[[sky_camera]]</code> с центра нормальной карты. {{note:ru|На карте должна остаться только одна <code>[[sky_camera]]</code> - непосредственно в скайбоксе.}} | ||
# Постройте геометрию скайбокса вокруг ваших ориентировочных брашей. Таким образом можно сделать совершенно незаметными швы между скайбоксом и границами карты. Можно использовать браши и дисплейсменты. Заметьте, что модели, помещаемые в скайбокс, тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст вам хорошее представление о том как будет выглядеть скайбокс в игре. | # Постройте геометрию скайбокса вокруг ваших ориентировочных брашей. Таким образом можно сделать совершенно незаметными швы между скайбоксом и границами карты. Можно использовать браши и дисплейсменты. Заметьте, что модели, помещаемые в скайбокс, тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст вам хорошее представление о том как будет выглядеть скайбокс в игре. | ||
# Создайте вокруг вашего скайбокса полый куб, закрашенный текстурой <code>tools\toolsskybox</code>. Куб должен плотно облегать браши и модели скайбокса, без дырок во "внешнее пространство". | # Создайте вокруг вашего скайбокса полый куб, закрашенный текстурой <code>tools\toolsskybox</code>. Куб должен плотно облегать браши и модели скайбокса, без дырок во "внешнее пространство". | ||
# Когда вы закончите, удалите или спрячьте геометрию ориентиров, '''исключая''' энтитю [[sky_camera]]. Для облегчения работы можно спрятать геометрию как отдельную vis группу, и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта. | # Когда вы закончите, удалите или спрячьте геометрию ориентиров, '''исключая''' энтитю <code>[[sky_camera]]</code>. Для облегчения работы можно спрятать геометрию как отдельную vis группу, и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта. | ||
# На оригинальной части карты следует создать браши с текстурой <code>tools\toolsskybox</code>, везде, где планировалось показывать игроку небо (а значит, и наш скайбокс). | # На оригинальной части карты следует создать браши с текстурой <code>tools\toolsskybox</code>, везде, где планировалось показывать игроку небо (а значит, и наш скайбокс). | ||
Revision as of 01:08, 1 May 2021
Template:Otherlang2 Включение 3D-скайбокса в карту станет мощным дополнением к визуальной составляющей уровня. Это отдельная область, которую разработчик карты располагает за границами игрового мира. Сразу после загрузки карты, движок увеличивает объекты, находящиеся в области 3D-скайбокса и помещает их за пределы уровня, между скайбоксом и игроком. Это визуально расширяет мир вашего уровня и экономит ресурсы, т.к. по умолчанию используется масштаб 1:16. 3D-скайбоксы - неинтерактивные части уровня - игрок и другие энтити не могут попасть в него. Геометрия 3D-скайбокса ничем не отличается от обычной геометрии уровня. Возможен бесшовный переход от обычной геометрии к объектам 3D-скайбокса (см. официальные карты на Counter-Strike: Source).
Преимущества
Стандартные скайбоксы - это простые двухмерные изображения, наложенные на куб, окружающий уровень. 3D скайбоксы - это полностью трёхмерная геометрия, точно синхронизированная с перемещением игрока. Т.к. они обрабатываются в реальном времени, они масштабируются с текущим разрешением видеокарты и поддерживают шейдеры в реальном времени, недоступные для 2D-скайбоксов.
Основным преимуществом 3D-скайбокса является возможность визуально расширить карту. Максимальный размер карты без 3D-скайбокса - 32768 юнитов на каждой стороне. Используя 3D-скайбокс, карта увеличивается в 16 раз.
Карты такого размера возможны, т.к. 3D-скайбоксы создаются в редакторе в масштабе 1/16. При компиляции карты, движок игры масштабирует их. Это не только сохраняет место в редакторе, но и ускоряет компиляцию и рендеринг.
В связи с масштабированием 3D-скайбоксов, их карты освещённости имеют меньший размер. Поэтому объекты 3D-скайбокса не так ресурсоёмки, как обычные.
3D-скайбоксы могут быть использованы для преодоления ограничения расстояний между локациями, если они будут созданы как основная карта в малом разрешении. Команда разработчиков мода должна учитывать это для облегчения перехода от одной карты к другой.
Основные характеристики
3D-скайбоксы имеют следующие характеристики:
- По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты.
- Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
- 3D-скайбоксы - не интерактивные зоны – игроки и другие энтити уровня не могут перемещаться внутри 3D скайбокса.
- Создаются из брашей, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, брашевых и точечных энтитей (таких как env_sprite).
- Любые модели в 3D-скайбоксе должны соответствовать масштабу 1/16. Стандартные модели (props) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для Half-Life 2, все такие модели находятся в папке
models/props_skybox
или имеют суффикс_skybox
. - Не должны содержать
info_player_start
, NPC или монстров. - Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.
- Должны иметь собственные источники освещения, хотя
light_environment
, находящийся на локации, будет применяться. - Используйте энтити
sky_camera
для контроля совпадения с не-скайбоксовской геометрией. - У 3D-скайбоксов собственные параметры тумана, настраиваемые в энтити
sky_camera
. - Геометрия в 3D-скайбоксах никак не обрезается. Добавление множества моделей может существенно снизить производительность.
- На карте должен быть размещён
light_environment
, иначе модели в 3d-скайбоксе будут освещены неправильно.light_environment
в основной части карты избавит от проблем.
Создание 3D-скайбоксов
- Примечание для карт Portal: 3D-скайбоксы не видны сквозь порталы.
- Примечание насчёт
sky_camera
: точечные энтити не изменяют масштаб.
Самый эффективный способ создания скайбокса, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее - подробное пошаговое объяснение:
- Добавьте в центр карты энтитю
sky_camera
(в координаты 0, 0, 0).sky_camera
- это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами,sky_camera
играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити. - Выберите несколько заметных деталей уровня, которые помогут вам создавать скайбокс. Для этого отлично подойдут стены, строения, дисплейсменты и другие браши, которые образуют границы карты. Проверьте, чтобы энтити
sky_camera
тоже была выделена.
- Выберите пункт 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. Template:Note:ru
- Теперь у вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где вы хотите делать скайбокс. Не имеет значения где он расположен, главное чтобы он не касался остальной части карты.
- Удалите первую
sky_camera
с центра нормальной карты. Template:Note:ru - Постройте геометрию скайбокса вокруг ваших ориентировочных брашей. Таким образом можно сделать совершенно незаметными швы между скайбоксом и границами карты. Можно использовать браши и дисплейсменты. Заметьте, что модели, помещаемые в скайбокс, тоже должны соответствовать масштабу 1/16.
hl2\models\props_skybox\coast01.mdl
- типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст вам хорошее представление о том как будет выглядеть скайбокс в игре. - Создайте вокруг вашего скайбокса полый куб, закрашенный текстурой
tools\toolsskybox
. Куб должен плотно облегать браши и модели скайбокса, без дырок во "внешнее пространство". - Когда вы закончите, удалите или спрячьте геометрию ориентиров, исключая энтитю
sky_camera
. Для облегчения работы можно спрятать геометрию как отдельную vis группу, и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта. - На оригинальной части карты следует создать браши с текстурой
tools\toolsskybox
, везде, где планировалось показывать игроку небо (а значит, и наш скайбокс).
Проверка
Если вы закончили 3D-скайбокс, можете компилировать свою карту и смотреть, что получилось в игре.
Примеры
- См.
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
Уроки по 3D скайбоксам
Группа автора уроков в ВК 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) (на Русском)
Статьи об окружающей среде | |
---|---|
Текстуры неба и создание неба | ![]() |
Создание рельефа местности и деформация поверхностей | Деформированные поверхности • Создание отверстий в деформированных поверхностях • Цифровые модели местности • Создание рельефа в Worldmachine |