Ru/3D Skybox: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
m (Multipage removal)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{langsp|title=Объёмное небо(трёхмерный небосвод)}}
{{LanguageBar|title = Объёмное небо(трёхмерный небосвод)}}
{{subpage|[[Skybox Basics]]}}


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


{{Note|Область трёхмерного небосвода не заменяет [[Skybox (2D)|небосвод(двумерный)]]. Небосвод всегда находится на фоне объёмного неба. Чтобы изменить небосвод, см. [[Skybox (2D)|небосвод(двумерный)]]}}
{{Note|Область трёхмерного небосвода не заменяет {{L|Skybox (2D)|небосвод(двумерный)}}. Небосвод всегда находится на фоне объёмного неба. Чтобы изменить небосвод, см. {{L|Skybox (2D)|небосвод(двумерный)}}}}


==Преимущества==
==Преимущества==
Line 22: Line 23:
* Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
* Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
* Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода.  
* Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода.  
* Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как [[env_sprite]]).
* Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как {{L|env_sprite}}).
* Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели ([[Prop_Types_Overview|props]]) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для [[Half-Life 2]], все такие модели находятся в папке <code>models/props_skybox</code> или имеют суффикс <code>_skybox</code>.
* Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели ({{L|Prop_Types_Overview|props}}) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для {{L|Half-Life 2}}, все такие модели находятся в папке <code>models/props_skybox</code> или имеют суффикс <code>_skybox</code>.
* Не должны содержать объекты типа <code>[[info_player_start]]</code>, NPC или монстров.
* Не должны содержать объекты типа <code>{{L|info_player_start}}</code>, NPC или монстров.
* Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.
* Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.
* Должны иметь собственные источники освещения, хотя <code>[[light_environment]]</code>, находящийся на локации, будет применяться.
* Должны иметь собственные источники освещения, хотя <code>{{L|light_environment}}</code>, находящийся на локации, будет применяться.
* Используйте объект мира <code>[[sky_camera]]</code> для контроля совпадения с не-скайбоксовской геометрией.
* Используйте объект мира <code>{{L|sky_camera}}</code> для контроля совпадения с не-скайбоксовской геометрией.
* У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира <code>[[sky_camera]]</code>.
* У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира <code>{{L|sky_camera}}</code>.
* Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность.
* Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность.
* На карте должен быть размещён объект мира <code>[[light_environment]]</code>, иначе модели в области трёхмерного небосвода будут освещены неправильно. <code>light_environment</code> в основной части карты избавит от проблем.
* На карте должен быть размещён объект мира <code>{{L|light_environment}}</code>, иначе модели в области трёхмерного небосвода будут освещены неправильно. <code>light_environment</code> в основной части карты избавит от проблем.


==Создание областей трёхмерного небосвода==
==Создание областей трёхмерного небосвода==
* Примечание для карт Portal: ''области трёхмерного небосвода не видны сквозь порталы.''
* Примечание для карт Portal: ''области трёхмерного небосвода не видны сквозь порталы.''
* Примечание насчёт <code>[[sky_camera]]</code>: точечные объекты мира не изменяют масштаб.
* Примечание насчёт <code>{{L|sky_camera}}</code>: точечные объекты мира не изменяют масштаб.


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


# Добавьте в центр карты энтити <code>[[sky_camera]]</code> (в координаты 0, 0, 0). <code>[[sky_camera]]</code> - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, <code>[[sky_camera]]</code> играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити.
# Добавьте в центр карты энтити <code>{{L|sky_camera}}</code> (в координаты 0, 0, 0). <code>{{L|sky_camera}}</code> - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, <code>{{L|sky_camera}}</code> играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити.
# Выберите несколько заметных деталей уровня, которые помогут Вам создать область трёхмерного небосвода. Для этого отлично подойдут стены, строения, дисплейсменты и другие элементы карты, которые образуют границы карты. Проверьте, чтобы объект мира <code>[[sky_camera]]</code> тоже был выделен.
# Выберите несколько заметных деталей уровня, которые помогут Вам создать область трёхмерного небосвода. Для этого отлично подойдут стены, строения, {{L|Displacement|деформированные поверхности}} и другие элементы карты, которые образуют границы карты. Проверьте, чтобы объект мира <code>{{L|sky_camera}}</code> тоже был выделен.
{{Note|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}}
{{Note|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}}
# Выберите пункт '''Copy''' из меню '''Edit''', или нажмите CTRL+C.
# Выберите пункт '''Copy''' из меню '''Edit''', или нажмите CTRL+C.
Line 46: Line 47:
# Не снимая выделения, выберите пункт '''Transform''' из меню '''Tools'''. Установите флажок напротив '''Scale'''. Выставите значение'''.0625 для X, Y, Z.''' Это уменьшит выделение в 16 раз, как раз под масштаб области трёхмерного небосвода. Нажмите '''OK'''. {{Note|Если Вы хотите, чтобы текстуры растянулись на элементах карты, убедитесь в том, что включен режим '''"Texture Lock"'''}}
# Не снимая выделения, выберите пункт '''Transform''' из меню '''Tools'''. Установите флажок напротив '''Scale'''. Выставите значение'''.0625 для X, Y, Z.''' Это уменьшит выделение в 16 раз, как раз под масштаб области трёхмерного небосвода. Нажмите '''OK'''. {{Note|Если Вы хотите, чтобы текстуры растянулись на элементах карты, убедитесь в том, что включен режим '''"Texture Lock"'''}}
# Теперь у Вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где Вы хотите разместить область трёхмерного небосвода. Не имеет значения, где она расположена, главное чтобы она не касалась остальной части карты.
# Теперь у Вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где Вы хотите разместить область трёхмерного небосвода. Не имеет значения, где она расположена, главное чтобы она не касалась остальной части карты.
# Удалите объект мира <code>[[sky_camera]]</code> с центра нормальной карты. {{Note|На карте должен остаться только один объект мира <code>[[sky_camera]]</code> - непосредственно в области трёхмерного небосвода.}}
# Удалите объект мира <code>{{L|sky_camera}}</code> с центра нормальной карты. {{Note|На карте должен остаться только один объект мира <code>{{L|sky_camera}}</code> - непосредственно в области трёхмерного небосвода.}}
# Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и дисплейсменты. Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре.
# Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и {{L|Displacement|деформированные поверхности}}. Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре.
# Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой <code>tools\toolsskybox</code>. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство".
# Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой <code>tools\toolsskybox</code>. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство".
# Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, '''исключая''' объект мира <code>[[sky_camera]]</code>. Для облегчения работы можно спрятать геометрию как отдельную [[VisGroups|видовую группу]], и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта.
# Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, '''исключая''' объект мира <code>{{L|sky_camera}}</code>. Для облегчения работы можно спрятать геометрию как отдельную {{L|VisGroups|видовую группу}}, и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта.
# На оригинальной части карты следует создать элементы карты со служебной текстурой <code>tools\toolsskybox</code>, везде, где планировалось показывать игроку небо (а значит, и область трёхмерного небосвода).
# На оригинальной части карты следует создать элементы карты со служебной текстурой <code>tools\toolsskybox</code>, везде, где планировалось показывать игроку небо (а значит, и область трёхмерного небосвода).


Line 72: Line 73:
*[https://www.youtube.com/watch?v=qgb0fNCaYaE Source SDK - Custom Skybox (How to create Skybox - 360 Panorama) (на Русском)]
*[https://www.youtube.com/watch?v=qgb0fNCaYaE Source SDK - Custom Skybox (How to create Skybox - 360 Panorama) (на Русском)]


{{envart}}
{{envart}}{{envart}}
{{ACategory|Level Design}}{{ACategory|Tutorials}}{{ACategory|Skybox}}{{ACategory|Source}}

Latest revision as of 03:54, 12 July 2024

English (en)Deutsch (de)Italiano (it)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

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

Note.pngПримечание:Область трёхмерного небосвода не заменяет небосвод(двумерный)(en). Небосвод всегда находится на фоне объёмного неба. Чтобы изменить небосвод, см. небосвод(двумерный)(en)

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

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

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

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

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

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

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

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

  • По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты.
  • Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
  • Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода.
  • Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как env_sprite(en)).
  • Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели (props(en)) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для Half-Life 2(en), все такие модели находятся в папке models/props_skybox или имеют суффикс _skybox.
  • Не должны содержать объекты типа info_player_start(en), NPC или монстров.
  • Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.
  • Должны иметь собственные источники освещения, хотя light_environment(en), находящийся на локации, будет применяться.
  • Используйте объект мира sky_camera(en) для контроля совпадения с не-скайбоксовской геометрией.
  • У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира sky_camera(en).
  • Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность.
  • На карте должен быть размещён объект мира light_environment(en), иначе модели в области трёхмерного небосвода будут освещены неправильно. light_environment в основной части карты избавит от проблем.

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

  • Примечание для карт Portal: области трёхмерного небосвода не видны сквозь порталы.
  • Примечание насчёт 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"
  5. Теперь у Вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где Вы хотите разместить область трёхмерного небосвода. Не имеет значения, где она расположена, главное чтобы она не касалась остальной части карты.
  6. Удалите объект мира sky_camera(en) с центра нормальной карты.
    Note.pngПримечание:На карте должен остаться только один объект мира sky_camera(en) - непосредственно в области трёхмерного небосвода.
  7. Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и деформированные поверхности(en). Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16. hl2\models\props_skybox\coast01.mdl - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре.
  8. Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой tools\toolsskybox. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство".
  9. Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, исключая объект мира sky_camera(en). Для облегчения работы можно спрятать геометрию как отдельную видовую группу(en), и потом показывать её при необходимости. Главное - убедитесь перед компилированием в том, что она скрыта.
  10. На оригинальной части карты следует создать элементы карты со служебной текстурой tools\toolsskybox, везде, где планировалось показывать игроку небо (а значит, и область трёхмерного небосвода).

Проверка

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

Примеры


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

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

Статьи об окружающей среде
Текстуры неба и создание неба Source Source: Небосвод (2D)Объёмное небо (3D)HDR-текстуры небаСоздание текстур неба в TerragenСоздание текстур неба в Terragen - подробноСписок текстур неба


Source 2 Source 2: Объёмное небо (3D)

Создание рельефа местности и деформация поверхностей Деформированные поверхностиСоздание отверстий в деформированных поверхностяхЦифровые модели местностиСоздание рельефа в Worldmachine
Статьи об окружающей среде
Текстуры неба и создание неба Source Source: Небосвод (2D)Объёмное небо (3D)HDR-текстуры небаСоздание текстур неба в TerragenСоздание текстур неба в Terragen - подробноСписок текстур неба


Source 2 Source 2: Объёмное небо (3D)

Создание рельефа местности и деформация поверхностей Деформированные поверхностиСоздание отверстий в деформированных поверхностяхЦифровые модели местностиСоздание рельефа в Worldmachine