Difference between revisions of "3D Skybox:ru"

From Valve Developer Community
Jump to: navigation, search
m (Testing)
Line 39: Line 39:
 
* Примечание насчет  [[sky_camera]]: точечные ентити не изменяют масштаб.
 
* Примечание насчет  [[sky_camera]]: точечные ентити не изменяют масштаб.
  
The most efficient way of creating a 3D skybox that matches or "lines up" with the your current map is to use some of the geometry in the main part of the level. Follow these steps after you've created your main level geometry:
+
Самый эффективный способ создания скайбокса, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее подробное пошаговое объяснение:
  
# Add a [[sky_camera]] entity at the world origin (coordinates 0, 0, 0), the center of the map grid. The [[sky_camera]] is a reference point used by the renderer to align the 3D skybox with the main part of the map. In other words, it acts as a marker telling the renderer how the 3D skybox's origin and the world's origin relate to one another. You can think of this process as being similar to selecting all the 3D skybox geometry and then aligning the [[sky_camera]] entity in that selection with the world's origin (0,0,0). The geometry is ''translated'' back to that position in the world. This is the same concept used when the skybox is rendered in the engine.
+
# Добавьте в центр карты энтитю [[sky_camera]] (в координаты 0, 0, 0). [[sky_camera]] это ориентировочная точка отсчета, используемая движком для ориентирования скайбокса относительно карты. Другими словами, [[sky_camera]] играет роль центра основной карты. Скайбокс будет перемещен (и отмасштабирован) в центр карты относительно этой энтити.
# Select some distinct parts of the level that you can use a guideline for scale and position in the 3D skybox. Common elements to select for this purpose would be some of the larger structures, as well as the walls, cliffs, hills, etc. that define the edges of the map. Make sure you also have the [[sky_camera]] you created selected as well. {{note|It is important '''not''' to select any model entities, only brushes. Models cannot be used as reference geometry, because models cannot be scaled down in the Hammer editor.}}
+
# Выберите несколько заметных деталей уровня, которые помогут вам создавать скайбокс. Для этого отлично подойдут стены, строения, дисплейсменты и другие браши, которые образуют границы карты. Проверьте чтобы [[sky_camera]] была так же выделена. {{note|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}}
# Choose '''Copy''' from the '''Edit''' menu, or hit CTRL-C.
+
# Выберите пункт '''Copy''' из меню '''Edit''', или нажмите CTRL-C.
# Choose '''Paste Special''' from the '''Edit''' menu. Set the '''Number of copies to paste''' to '''1''', and all other values to '''0'''. Hit '''OK'''. This makes a duplicate of the geometry you had selected.
+
# Выберите пункт '''Paste Special''' из того же меню. Задайте '''Number of copies to paste''' как '''1''', и все другие параметры выставите в '''0'''. Нажмите '''OK'''. На карте появится дубликат того что вы выделяли.
# Turn on '''Scaling Texture Lock''' in the toolbar, if it is not already on. Its icon resembles <tl>. This will shrink the textures along with the geometry.
+
# Включите на панели инструментов кнопку '''Scaling Texture Lock''', если она отключена. Это иконка с надписью <tl>. Это заставить текстуру масштабироваться вместе с геометрией.
# Leaving geometry selected, choose '''Transform''' from the '''Tools''' menu. Select the radio button next to '''Scale'''. Type in a value of '''.0625 for X, Y and Z.''' This is the decimal equivalent to 1/16 – the scale of the 3D skybox. Click '''OK'''. {{note|If you want textures on the geometry to scale accordingly, make sure you have texture lock enabled.}}
+
# Не снимая выделения, выберите пункт '''Transform''' из меню '''Tools'''. Установите флажок напротив '''Scale'''. Выставите значение'''.0625 для X, Y, Z.''' Это уменьшит выделение в 16 раз, как раз под масштаб скайбокса. Нажмите '''OK'''. {{note|If you want textures on the geometry to scale accordingly, make sure you have texture lock enabled.}}
# You now have a 1/16 scale version of your reference geometry. Now drag (move) it to another part of the map where you wish build your 3D skybox. It doesn't matter where it is as long as it's not touching any part of the main level geometry area.
+
# Теперь у вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где вы хотите делать скайбокс. Не имеет значения где он расположен, главное чтобы он не касался остальной части карты.
# Delete the [[sky_camera]] entity from the normal world map area you started from. ''Important'': only the [[sky_camera]] entity in the 3D skybox should remain in the map.
+
# Удалите первую [[sky_camera]] с центра нормальной карты. ''важно'': На карте должна остаться только одна [[sky_camera]] - непосредственно в скайбоксе.
# Build your 3D skybox geometry around the reference geometry, using it as a guide. You can build skybox geometry that meets the reference geometry seamlessly. You can use brush and displacement geometry. Models can also be placed, but since the 3D skybox is at 1/16 scale, any models must also be at 1/16 scale. The model <code>hl2\models\props_skybox\coast01.mdl</code> is a sample model in 1/16 scale. Try positioning the 3D view camera near the height of the player. This will give you a good idea of how the 3D skybox will look when it's rendered in the engine.
+
# Постройте геометрию скайбокса вокруг ваших ориентировочных брашей. Таким образом можно сделать совершенно незаметными швы между скайбоксом и границами карты. Можно использовать браши и дисплейсменты. Заметте, что модели помещаемые в скайбокс тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст вам хорошее представление о том как будет выглядеь скайбокс в игре (??? 0_о)
# Add a hollow cube of brushes around your reference geometry and assign the <code>tools\toolsskybox</code> material to it. The standard 2D cubic skybox will appear on these surfaces. The 3D skybox area must be sealed with these brushes.
+
# Создайте вокруг вашего скайбокса полый куб закрашенный текстурой <code>tools\toolsskybox</code> . Куб должен плотно облегать браши и модели скайбокса, без дырок во "внешнее пространство".
# When you're done, delete or hide all of the reference geometry '''except''' for the [[sky_camera]] entity. You may find that it work best to add the reference geometry to its own visgroup so that it can be toggled on and off or re-placed. Just make sure you turn it off before you save and compile the level, or it will be compiled into the 3D skybox.
+
# Когда вы закончите, удалите или спрячте геометрию ориентиров, '''исключая''' энтитю [[sky_camera]]. Для облегчения работы можно спрятать геометрию как отдельную vis группу, и потом показывать её при необходимости. Главное убедитесь перед компилированием что она скрыта.
# Your original map still needs the <code>tools\toolsskybox</code> material wherever you want to see the sky, however it will now show the 3D skybox as well as the 2D skybox (which is what it did previously).
+
# На оригинальной части карты следует создать браши с текстурой <code>tools\toolsskybox</code>, везде где планировалось показывать игроку скайбокс.
  
==Testing==
+
==Проверка==
  
Если ты коректно запёк свой 3D skybox, можешь компилировать свою карту и выбрать новый 3D skybox в движке.
+
Если ты коректно запёк свой 3D skybox, можешь компилировать свою карту и смотреть что получилось в игре.
  
== Examples ==
+
== Примеры ==
* See <code>sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf</code> for an example of a 3D skybox.
+
* Смотри <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]

Revision as of 18:45, 23 October 2008


Введение

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

Note.png Note:  3D-скайбокс не заменяет 2D skybox. 2D-скайбокс всегда на фоне 3D-скайбокса. Чтобы изменить 2D-скайбокс, см. Skybox (2D).

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

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

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

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

При их масштабе, у 3D-скайбоксов намного меньше карты освещенности и разрешение текстур. Поэтому объекты 3D-скайбокса не так ресурсоёмки, как обычные.

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

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

3D-скайбоксы имеют следующие характеристики:

  • По умолчанию создаются в масштабе 1/16 в редакторе и отображаются в 16 раз больше во время игры для увеличения геометрии локации.
  • Поддерживаются материалы с шейдерами, такими как карты нормалей, вода, карты окружения, прокси, и.т.п.
  • 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: точечные ентити не изменяют масштаб.

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

  1. Добавьте в центр карты энтитю sky_camera (в координаты 0, 0, 0). sky_camera это ориентировочная точка отсчета, используемая движком для ориентирования скайбокса относительно карты. Другими словами, sky_camera играет роль центра основной карты. Скайбокс будет перемещен (и отмасштабирован) в центр карты относительно этой энтити.
  2. Выберите несколько заметных деталей уровня, которые помогут вам создавать скайбокс. Для этого отлично подойдут стены, строения, дисплейсменты и другие браши, которые образуют границы карты. Проверьте чтобы sky_camera была так же выделена.
    Note.png Note: Это важно, НЕ выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.
  3. Выберите пункт Copy из меню Edit, или нажмите CTRL-C.
  4. Выберите пункт Paste Special из того же меню. Задайте Number of copies to paste как 1, и все другие параметры выставите в 0. Нажмите OK. На карте появится дубликат того что вы выделяли.
  5. Включите на панели инструментов кнопку Scaling Texture Lock, если она отключена. Это иконка с надписью <tl>. Это заставить текстуру масштабироваться вместе с геометрией.
  6. Не снимая выделения, выберите пункт Transform из меню Tools. Установите флажок напротив Scale. Выставите значение.0625 для X, Y, Z. Это уменьшит выделение в 16 раз, как раз под масштаб скайбокса. Нажмите OK.
    Note.png Note: If you want textures on the geometry to scale accordingly, make sure you have texture lock enabled.
  7. Теперь у вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где вы хотите делать скайбокс. Не имеет значения где он расположен, главное чтобы он не касался остальной части карты.
  8. Удалите первую sky_camera с центра нормальной карты. важно: На карте должна остаться только одна sky_camera - непосредственно в скайбоксе.
  9. Постройте геометрию скайбокса вокруг ваших ориентировочных брашей. Таким образом можно сделать совершенно незаметными швы между скайбоксом и границами карты. Можно использовать браши и дисплейсменты. Заметте, что модели помещаемые в скайбокс тоже должны соответствовать масштабу 1/16. hl2\models\props_skybox\coast01.mdl - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст вам хорошее представление о том как будет выглядеь скайбокс в игре (??? 0_о)
  10. Создайте вокруг вашего скайбокса полый куб закрашенный текстурой tools\toolsskybox . Куб должен плотно облегать браши и модели скайбокса, без дырок во "внешнее пространство".
  11. Когда вы закончите, удалите или спрячте геометрию ориентиров, исключая энтитю sky_camera. Для облегчения работы можно спрятать геометрию как отдельную vis группу, и потом показывать её при необходимости. Главное убедитесь перед компилированием что она скрыта.
  12. На оригинальной части карты следует создать браши с текстурой tools\toolsskybox, везде где планировалось показывать игроку скайбокс.

Проверка

Если ты коректно запёк свой 3D skybox, можешь компилировать свою карту и смотреть что получилось в игре.

Примеры

Environment articles:
Skies and environment maps Skybox (2D)Skybox (3D)HDR SkiesSkybox with TerragenSkybox with Terragen - AdvancedList of skies
Terrain and displacement mapping DisplacementsHoles in displacementsDigital Elevation Models

Template:Otherlang:en Template:Otherlang:en:ru