Ru/3D Skybox: Difference between revisions
m (→Преимущества) |
m (Multipage removal) |
||
(27 intermediate revisions by 13 users not shown) | |||
Line 1: | Line 1: | ||
{{LanguageBar|title = Объёмное небо(трёхмерный небосвод)}} | |||
{{subpage|[[Skybox Basics]]}} | |||
{{ | Включение области трёхмерного небосвода в карту станет мощным дополнением к визуальной составляющей карты. Это отдельная область, которую разработчик карты располагает за границами игрового мира. Сразу после загрузки карты, движок увеличивает объекты, находящиеся в области трёхмерного небосвода и помещает их за пределы карты, между {{L|Skybox (2D)|небосводом(двумерным)}} и игроком. Это визуально расширяет мир вашего уровня и экономит ресурсы, т.к. по умолчанию используется масштаб 1:16. Область трёхмерного небосвода - неинтерактивная часть карты - игрок и другие объекты мира не могут попасть в него. Геометрия 3D-скайбокса ничем не отличается от обычной геометрии карты. Возможен бесшовный переход от обычной геометрии карты к области трёхмерного небосвода (см. официальные карты на {{L|Counter-Strike: Source}}). | ||
{{Note|Область трёхмерного небосвода не заменяет {{L|Skybox (2D)|небосвод(двумерный)}}. Небосвод всегда находится на фоне объёмного неба. Чтобы изменить небосвод, см. {{L|Skybox (2D)|небосвод(двумерный)}}}} | |||
==Преимущества== | ==Преимущества== | ||
Небосвод - это простые двухмерные изображения, наложенные на внутренние поверхности короба, окружающего карту. Объёмное небо - это полностью трёхмерная геометрия, точно синхронизированная с перемещением игрока. Т.к. они обрабатываются в реальном времени, они масштабируются с текущим разрешением видеокарты и поддерживают шейдеры в реальном времени, недоступные для небосвода. | |||
Основным преимуществом объёмного неба является возможность визуально расширить карту. Максимальный размер карты без объемного неба - 32768 единиц по каждой оси координат. Используя объёмное небо, мир игры визуально увеличивается в 16 раз. | |||
Карты такого размера возможны, т.к. области трёхмерного небосвода создаются в редакторе карт Hammer в масштабе 1/16. При компиляции карты, движок игры масштабирует их. Это не только сохраняет место в редакторе, но и ускоряет компиляцию и рендеринг. | |||
В связи с масштабированием областей трёхмерного неба, их карты освещённости имеют меньший размер. Поэтому объекты в области трёхмерного небосвода не так ресурсоёмки, как обычные. | |||
Объёмное небо может быть использовано для преодоления ограничения расстояний между локациями, если они будут созданы как основная карта в малом разрешении. Команда разработчиков мода должна учитывать это для облегчения перехода от одной карты к другой. | |||
===Основные характеристики=== | ===Основные характеристики=== | ||
Области трёхмерного небосвода имеют следующие характеристики: | |||
* По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты. | |||
* По умолчанию создаются в масштабе 1/16 | |||
* Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п. | * Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п. | ||
* | * Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода. | ||
* Создаются из | * Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как {{L|env_sprite}}). | ||
* Любые модели в | * Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели ({{L|Prop_Types_Overview|props}}) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для {{L|Half-Life 2}}, все такие модели находятся в папке <code>models/props_skybox</code> или имеют суффикс <code>_skybox</code>. | ||
* Не должны содержать | * Не должны содержать объекты типа <code>{{L|info_player_start}}</code>, NPC или монстров. | ||
* Имеют меньшие по размеру карты | * Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы. | ||
* Должны иметь собственные источники освещения, хотя | * Должны иметь собственные источники освещения, хотя <code>{{L|light_environment}}</code>, находящийся на локации, будет применяться. | ||
* Используйте | * Используйте объект мира <code>{{L|sky_camera}}</code> для контроля совпадения с не-скайбоксовской геометрией. | ||
* У | * У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира <code>{{L|sky_camera}}</code>. | ||
* Геометрия в | * Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность. | ||
* На карте должен быть | * На карте должен быть размещён объект мира <code>{{L|light_environment}}</code>, иначе модели в области трёхмерного небосвода будут освещены неправильно. <code>light_environment</code> в основной части карты избавит от проблем. | ||
==Создание | ==Создание областей трёхмерного небосвода== | ||
* Примечание для карт Portal: '' | * Примечание для карт Portal: ''области трёхмерного небосвода не видны сквозь порталы.'' | ||
* Примечание | * Примечание насчёт <code>{{L|sky_camera}}</code>: точечные объекты мира не изменяют масштаб. | ||
Самый эффективный способ создания | Самый эффективный способ создания области трёхмерного небосвода, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее - подробное пошаговое объяснение: | ||
# Добавьте в центр карты | # Добавьте в центр карты энтити <code>{{L|sky_camera}}</code> (в координаты 0, 0, 0). <code>{{L|sky_camera}}</code> - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, <code>{{L|sky_camera}}</code> играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити. | ||
# Выберите несколько заметных деталей уровня, которые помогут | # Выберите несколько заметных деталей уровня, которые помогут Вам создать область трёхмерного небосвода. Для этого отлично подойдут стены, строения, {{L|Displacement|деформированные поверхности}} и другие элементы карты, которые образуют границы карты. Проверьте, чтобы объект мира <code>{{L|sky_camera}}</code> тоже был выделен. | ||
{{Note|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}} | |||
# Выберите пункт '''Copy''' из меню '''Edit''', или нажмите CTRL+C. | # Выберите пункт '''Copy''' из меню '''Edit''', или нажмите CTRL+C. | ||
# Выберите пункт '''Paste Special''' из того же меню. Задайте '''Number of copies to paste''' как '''1''', и все другие параметры выставите в '''0'''. Нажмите '''OK'''. На карте появится дубликат того, что вы выделяли. | # Выберите пункт '''Paste Special''' из того же меню. Задайте '''Number of copies to paste''' как '''1''', и все другие параметры выставите в '''0'''. Нажмите '''OK'''. На карте появится дубликат того, что вы выделяли. | ||
# Включите на панели инструментов кнопку '''Scaling Texture Lock''', если она отключена. Это иконка с надписью <tl>. Это заставит | # Включите на панели инструментов кнопку '''Scaling Texture Lock''', если она отключена. Это иконка с надписью <tl>. Это заставит текстуры масштабироваться вместе с геометрией. | ||
# Не снимая выделения, выберите пункт '''Transform''' из меню '''Tools'''. Установите флажок напротив '''Scale'''. Выставите значение'''.0625 для X, Y, Z.''' Это уменьшит выделение в 16 раз, как раз под масштаб | # Не снимая выделения, выберите пункт '''Transform''' из меню '''Tools'''. Установите флажок напротив '''Scale'''. Выставите значение'''.0625 для X, Y, Z.''' Это уменьшит выделение в 16 раз, как раз под масштаб области трёхмерного небосвода. Нажмите '''OK'''. {{Note|Если Вы хотите, чтобы текстуры растянулись на элементах карты, убедитесь в том, что включен режим '''"Texture Lock"'''}} | ||
# Теперь у | # Теперь у Вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где Вы хотите разместить область трёхмерного небосвода. Не имеет значения, где она расположена, главное чтобы она не касалась остальной части карты. | ||
# Удалите | # Удалите объект мира <code>{{L|sky_camera}}</code> с центра нормальной карты. {{Note|На карте должен остаться только один объект мира <code>{{L|sky_camera}}</code> - непосредственно в области трёхмерного небосвода.}} | ||
# Постройте геометрию | # Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и {{L|Displacement|деформированные поверхности}}. Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре. | ||
# Создайте вокруг | # Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой <code>tools\toolsskybox</code>. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство". | ||
# Когда | # Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, '''исключая''' объект мира <code>{{L|sky_camera}}</code>. Для облегчения работы можно спрятать геометрию как отдельную {{L|VisGroups|видовую группу}}, и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта. | ||
# На оригинальной части карты следует создать | # На оригинальной части карты следует создать элементы карты со служебной текстурой <code>tools\toolsskybox</code>, везде, где планировалось показывать игроку небо (а значит, и область трёхмерного небосвода). | ||
==Проверка== | ==Проверка== | ||
Если Вы закончили создание области трёхмерного небосвода, можете компилировать свою карту и смотреть, что получилось в игре. | |||
Если | |||
== Примеры == | == Примеры == | ||
* См. <code>sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf</code> для примера | * См. <code>sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf</code> для примера области трёхмерного небосвода. | ||
* [http://www.steamreview.org/external/vdc/3dskybox/3dskybox_drawdistextend.zip An example of extending draw distances with 3D skyboxes] (commented) | * [http://www.steamreview.org/external/vdc/3dskybox/3dskybox_drawdistextend.zip An example of extending draw distances with 3D skyboxes] (commented) | ||
* [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/akg_3Dskybox01.zip 3D Skybox Video Tutorial] | * [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/akg_3Dskybox01.zip 3D Skybox Video Tutorial] | ||
* [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/wiseEscape.zip HL2 sample VMF for 3D Skybox water/world] | * [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/wiseEscape.zip HL2 sample VMF for 3D Skybox water/world] | ||
==Уроки по созданию Объёмного неба== | |||
Группа автора уроков в ВК [https://vk.com/project_source Project-S] | |||
*[https://www.youtube.com/watch?v=XjH3PqMIu8c About 3D Skybox (Rus)] | |||
*[https://www.youtube.com/watch?v=oK64g7bm98k Ocean Skybpx (Rus)] | |||
*[https://www.youtube.com/watch?v=EfV477qMKOY 3D Models (Rus)] | |||
*[https://www.youtube.com/watch?v=tosebp1MSeg Easy Displacement (Rus)] | |||
*[https://www.youtube.com/watch?v=q8htPBT-0ng Brush World and disp (Rus)] | |||
*[https://www.youtube.com/watch?v=qgb0fNCaYaE Source SDK - Custom Skybox (How to create Skybox - 360 Panorama) (на Русском)] | |||
{{envart}}{{envart}} | |||
{{ACategory|Level Design}}{{ACategory|Tutorials}}{{ACategory|Skybox}}{{ACategory|Source}} | |||
Latest revision as of 03:54, 12 July 2024
Включение области трёхмерного небосвода в карту станет мощным дополнением к визуальной составляющей карты. Это отдельная область, которую разработчик карты располагает за границами игрового мира. Сразу после загрузки карты, движок увеличивает объекты, находящиеся в области трёхмерного небосвода и помещает их за пределы карты, между небосводом(двумерным) и игроком. Это визуально расширяет мир вашего уровня и экономит ресурсы, т.к. по умолчанию используется масштаб 1:16. Область трёхмерного небосвода - неинтерактивная часть карты - игрок и другие объекты мира не могут попасть в него. Геометрия 3D-скайбокса ничем не отличается от обычной геометрии карты. Возможен бесшовный переход от обычной геометрии карты к области трёхмерного небосвода (см. официальные карты на Counter-Strike: Source ).

Преимущества
Небосвод - это простые двухмерные изображения, наложенные на внутренние поверхности короба, окружающего карту. Объёмное небо - это полностью трёхмерная геометрия, точно синхронизированная с перемещением игрока. Т.к. они обрабатываются в реальном времени, они масштабируются с текущим разрешением видеокарты и поддерживают шейдеры в реальном времени, недоступные для небосвода.
Основным преимуществом объёмного неба является возможность визуально расширить карту. Максимальный размер карты без объемного неба - 32768 единиц по каждой оси координат. Используя объёмное небо, мир игры визуально увеличивается в 16 раз.
Карты такого размера возможны, т.к. области трёхмерного небосвода создаются в редакторе карт Hammer в масштабе 1/16. При компиляции карты, движок игры масштабирует их. Это не только сохраняет место в редакторе, но и ускоряет компиляцию и рендеринг.
В связи с масштабированием областей трёхмерного неба, их карты освещённости имеют меньший размер. Поэтому объекты в области трёхмерного небосвода не так ресурсоёмки, как обычные.
Объёмное небо может быть использовано для преодоления ограничения расстояний между локациями, если они будут созданы как основная карта в малом разрешении. Команда разработчиков мода должна учитывать это для облегчения перехода от одной карты к другой.
Основные характеристики
Области трёхмерного небосвода имеют следующие характеристики:
- По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты.
- Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
- Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода.
- Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как env_sprite ).
- Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели (props ) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для Half-Life 2 , все такие модели находятся в папке
models/props_skybox
или имеют суффикс_skybox
. - Не должны содержать объекты типа
info_player_start
, NPC или монстров. - Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.
- Должны иметь собственные источники освещения, хотя
light_environment
, находящийся на локации, будет применяться. - Используйте объект мира
sky_camera
для контроля совпадения с не-скайбоксовской геометрией. - У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира
sky_camera
. - Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность.
- На карте должен быть размещён объект мира
light_environment
, иначе модели в области трёхмерного небосвода будут освещены неправильно.light_environment
в основной части карты избавит от проблем.
Создание областей трёхмерного небосвода
- Примечание для карт Portal: области трёхмерного небосвода не видны сквозь порталы.
- Примечание насчёт
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.
Примечание:Если Вы хотите, чтобы текстуры растянулись на элементах карты, убедитесь в том, что включен режим "Texture Lock"
- Теперь у Вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где Вы хотите разместить область трёхмерного небосвода. Не имеет значения, где она расположена, главное чтобы она не касалась остальной части карты.
- Удалите объект мира
sky_camera
с центра нормальной карты.Примечание:На карте должен остаться только один объект мира
sky_camera
- непосредственно в области трёхмерного небосвода. - Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и деформированные поверхности . Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16.
hl2\models\props_skybox\coast01.mdl
- типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре. - Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой
tools\toolsskybox
. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство". - Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, исключая объект мира
sky_camera
. Для облегчения работы можно спрятать геометрию как отдельную видовую группу , и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта. - На оригинальной части карты следует создать элементы карты со служебной текстурой
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) (на Русском)
Статьи об окружающей среде | |
---|---|
Текстуры неба и создание неба | ![]() |
Создание рельефа местности и деформация поверхностей | Деформированные поверхности • Создание отверстий в деформированных поверхностях • Цифровые модели местности • Создание рельефа в Worldmachine |
Статьи об окружающей среде | |
---|---|
Текстуры неба и создание неба | ![]() |
Создание рельефа местности и деформация поверхностей | Деформированные поверхности • Создание отверстий в деформированных поверхностях • Цифровые модели местности • Создание рельефа в Worldmachine |