Ru/3D Skybox: Difference between revisions
m (Kr0tchet moved page 3D Skybox:ru to 3D Skybox/ru)  | 
				No edit summary  | 
				||
| Line 1: | Line 1: | ||
{{langsp|title=  | {{langsp|title=Объёмное небо(трёхмерный небосвод)}}  | ||
Включение   | Включение области трёхмерного небосвода в карту станет мощным дополнением к визуальной составляющей карты. Это отдельная область, которую разработчик карты располагает за границами игрового мира. Сразу после загрузки карты, движок увеличивает объекты, находящиеся в области трёхмерного небосвода и помещает их за пределы карты, между [[Skybox (2D)|небосводом(двумерным)]] и игроком. Это визуально расширяет мир вашего уровня и экономит ресурсы, т.к. по умолчанию используется масштаб 1:16. Область трёхмерного небосвода - неинтерактивная часть карты - игрок и другие объекты мира не могут попасть в него. Геометрия 3D-скайбокса ничем не отличается от обычной геометрии карты. Возможен бесшовный переход от обычной геометрии карты к области трёхмерного небосвода (см. официальные карты на [[Counter-Strike: Source]]).  | ||
{{Note|  | {{Note|Область трёхмерного небосвода не заменяет [[Skybox (2D)|небосвод(двумерный)]]. Небосвод всегда находится на фоне объёмного неба. Чтобы изменить небосвод, см. [[Skybox (2D)|небосвод(двумерный)]]}}  | ||
==Преимущества==  | ==Преимущества==  | ||
Небосвод - это простые двухмерные изображения, наложенные на внутренние поверхности короба, окружающего карту. Объёмное небо - это полностью трёхмерная геометрия, точно синхронизированная с перемещением игрока. Т.к. они обрабатываются в реальном времени, они масштабируются с текущим разрешением видеокарты и поддерживают шейдеры в реальном времени, недоступные для небосвода.  | |||
Основным преимуществом   | Основным преимуществом объёмного неба является возможность визуально расширить карту. Максимальный размер карты без объемного неба - 32768 единиц по каждой оси координат. Используя объёмное небо, мир игры визуально увеличивается в 16 раз.  | ||
Карты такого размера возможны, т.к.   | Карты такого размера возможны, т.к. области трёхмерного небосвода создаются в редакторе карт Hammer в масштабе 1/16. При компиляции карты, движок игры масштабирует их. Это не только сохраняет место в редакторе, но и ускоряет компиляцию и рендеринг.  | ||
В связи с масштабированием   | В связи с масштабированием областей трёхмерного неба, их карты освещённости имеют меньший размер. Поэтому объекты в области трёхмерного небосвода не так ресурсоёмки, как обычные.  | ||
Объёмное небо может быть использовано для преодоления ограничения расстояний между локациями, если они будут созданы как основная карта в малом разрешении. Команда разработчиков мода должна учитывать это для облегчения перехода от одной карты к другой.  | |||
===Основные характеристики===  | ===Основные характеристики===  | ||
Области трёхмерного небосвода имеют следующие характеристики:  | |||
* По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты.  | * По-умолчанию, создаются в редакторе в масштабе 1/16, и во время игры увеличиваются в 16 раз, чтобы соответствовать геометрии карты.  | ||
* Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.  | * Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.  | ||
*   | * Области трёхмерного небосвода - не интерактивные зоны – игроки и другие объекты мира не могут перемещаться внутри области трёхмерного небосвода.    | ||
* Создаются из   | * Создаются из элементов мира, деформированных ландшафтов, статичных и динамичных моделей, источников освещения, объёмных и точечных объектов мира (таких как [[env_sprite]]).  | ||
* Любые модели в   | * Любые модели в области трёхмерного неба должны соответствовать масштабу 1/16. Стандартные модели ([[Prop_Types_Overview|props]]) не масштабированы для 3D-скайбокса. Необходимо использовать масштаб 1/16. Для [[Half-Life 2]], все такие модели находятся в папке <code>models/props_skybox</code> или имеют суффикс <code>_skybox</code>.  | ||
* Не должны содержать <code>[[info_player_start]]</code>, NPC или монстров.  | * Не должны содержать объекты типа <code>[[info_player_start]]</code>, NPC или монстров.  | ||
* Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.  | * Имеют меньшие по размеру карты освещённости и разрешение текстур из-за масштаба, в котором они созданы.  | ||
* Должны иметь собственные источники освещения, хотя <code>[[light_environment]]</code>, находящийся на локации, будет применяться.  | * Должны иметь собственные источники освещения, хотя <code>[[light_environment]]</code>, находящийся на локации, будет применяться.  | ||
* Используйте   | * Используйте объект мира <code>[[sky_camera]]</code> для контроля совпадения с не-скайбоксовской геометрией.  | ||
* У   | * У областей трёхмерного небосвода собственные параметры тумана, настраиваемые в объекте мира <code>[[sky_camera]]</code>.  | ||
* Геометрия в   | * Геометрия в областях трёхмерного небосвода никак не обрезается. Добавление множества моделей может существенно снизить производительность.  | ||
* На карте должен быть размещён <code>[[light_environment]]</code>, иначе модели в   | * На карте должен быть размещён объект мира <code>[[light_environment]]</code>, иначе модели в области трёхмерного небосвода будут освещены неправильно. <code>light_environment</code> в основной части карты избавит от проблем.  | ||
==Создание   | ==Создание областей трёхмерного небосвода==  | ||
* Примечание для карт Portal: ''  | * Примечание для карт Portal: ''области трёхмерного небосвода не видны сквозь порталы.''  | ||
* Примечание насчёт <code>[[sky_camera]]</code>: точечные   | * Примечание насчёт <code>[[sky_camera]]</code>: точечные объекты мира не изменяют масштаб.  | ||
Самый эффективный способ создания   | Самый эффективный способ создания области трёхмерного небосвода, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее - подробное пошаговое объяснение:  | ||
# Добавьте в центр карты энтити <code>[[sky_camera]]</code> (в координаты 0, 0, 0). <code>[[sky_camera]]</code> - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, <code>[[sky_camera]]</code> играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити.  | # Добавьте в центр карты энтити <code>[[sky_camera]]</code> (в координаты 0, 0, 0). <code>[[sky_camera]]</code> - это ориентировочная точка отсчёта, используемая движком для определения местоположения скайбокса относительно карты. Другими словами, <code>[[sky_camera]]</code> играет роль центра основной карты. Скайбокс будет перемещён (и отмасштабирован) в центр карты относительно этой энтити.  | ||
# Выберите несколько заметных деталей уровня, которые помогут   | # Выберите несколько заметных деталей уровня, которые помогут Вам создать область трёхмерного небосвода. Для этого отлично подойдут стены, строения, дисплейсменты и другие элементы карты, которые образуют границы карты. Проверьте, чтобы объект мира <code>[[sky_camera]]</code> тоже был выделен.  | ||
{{Note|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}}  | {{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>[[sky_camera]]</code> с центра нормальной карты. {{Note|На карте должна остаться только один объект мира <code>[[sky_camera]]</code> - непосредственно в области трёхмерного небосвода.}}  | ||
# Постройте геометрию   | # Постройте геометрию области трёхмерного небосвода вокруг ваших ориентировочных элементов карты. Таким образом можно сделать совершенно незаметными швы между областью трёхмерного небосвода и границами карты. Можно использовать элементы карты и дисплейсменты. Заметьте, что модели, помещаемые в область трёхмерного небосвода, тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст Вам хорошее представление о том как будет выглядеть объёмное небо в игре.  | ||
# Создайте вокруг   | # Создайте вокруг вашей область трёхмерного небосвода полый короб, закрашенный текстурой <code>tools\toolsskybox</code>. Короб должен плотно облегать элементы карты и модели скайбокса, без дырок во "внешнее пространство".  | ||
# Когда   | # Когда Вы закончите, удалите или спрячьте геометрию ориентировочных элементов, '''исключая''' объект мира <code>[[sky_camera]]</code>. Для облегчения работы можно спрятать геометрию как отдельную [[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]  | ||
| Line 62: | Line 62: | ||
==Уроки по   | ==Уроки по созданию Объёмного неба==  | ||
Группа автора уроков в ВК [https://vk.com/project_source Project-S]  | Группа автора уроков в ВК [https://vk.com/project_source Project-S]  | ||
Revision as of 11:30, 5 March 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 |