Ru/3D Skybox: Difference between revisions
m (→Testing) |
No edit summary |
||
Line 39: | Line 39: | ||
* Примечание насчет [[sky_camera]]: точечные ентити не изменяют масштаб. | * Примечание насчет [[sky_camera]]: точечные ентити не изменяют масштаб. | ||
Самый эффективный способ создания скайбокса, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее подробное пошаговое объяснение: | |||
# | # Добавьте в центр карты энтитю [[sky_camera]] (в координаты 0, 0, 0). [[sky_camera]] это ориентировочная точка отсчета, используемая движком для ориентирования скайбокса относительно карты. Другими словами, [[sky_camera]] играет роль центра основной карты. Скайбокс будет перемещен (и отмасштабирован) в центр карты относительно этой энтити. | ||
# | # Выберите несколько заметных деталей уровня, которые помогут вам создавать скайбокс. Для этого отлично подойдут стены, строения, дисплейсменты и другие браши, которые образуют границы карты. Проверьте чтобы [[sky_camera]] была так же выделена. {{note|Это важно, '''НЕ''' выделяйте для использования модели, потому что они не могут быть масштабируемы в редакторе.}} | ||
# | # Выберите пункт '''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'''. {{note|If you want textures on the geometry to scale accordingly, make sure you have texture lock enabled.}} | ||
# | # Теперь у вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где вы хотите делать скайбокс. Не имеет значения где он расположен, главное чтобы он не касался остальной части карты. | ||
# | # Удалите первую [[sky_camera]] с центра нормальной карты. ''важно'': На карте должна остаться только одна [[sky_camera]] - непосредственно в скайбоксе. | ||
# | # Постройте геометрию скайбокса вокруг ваших ориентировочных брашей. Таким образом можно сделать совершенно незаметными швы между скайбоксом и границами карты. Можно использовать браши и дисплейсменты. Заметте, что модели помещаемые в скайбокс тоже должны соответствовать масштабу 1/16. <code>hl2\models\props_skybox\coast01.mdl</code> - типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст вам хорошее представление о том как будет выглядеь скайбокс в игре (??? 0_о) | ||
# | # Создайте вокруг вашего скайбокса полый куб закрашенный текстурой <code>tools\toolsskybox</code> . Куб должен плотно облегать браши и модели скайбокса, без дырок во "внешнее пространство". | ||
# | # Когда вы закончите, удалите или спрячте геометрию ориентиров, '''исключая''' энтитю [[sky_camera]]. Для облегчения работы можно спрятать геометрию как отдельную vis группу, и потом показывать её при необходимости. Главное убедитесь перед компилированием что она скрыта. | ||
# | # На оригинальной части карты следует создать браши с текстурой <code>tools\toolsskybox</code>, везде где планировалось показывать игроку скайбокс. | ||
== | ==Проверка== | ||
Если ты коректно запёк свой 3D skybox, можешь компилировать свою карту и | Если ты коректно запёк свой 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

Преимущества
Обычные скайбоксы - это простые двухмерные изображения, наложенные на грани куба, т.к. они окружают уровень. 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: точечные ентити не изменяют масштаб.
Самый эффективный способ создания скайбокса, точно вписывающегося в границы вашей карты - использование нескольких брашей карты, которые будут ориентирами при построении скайбокса. Далее подробное пошаговое объяснение:
- Добавьте в центр карты энтитю 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.
Примечание:If you want textures on the geometry to scale accordingly, make sure you have texture lock enabled.
- Теперь у вас есть версия вашей опорной геометрии в масштабе 1/16. Теперь переместите это туда, где вы хотите делать скайбокс. Не имеет значения где он расположен, главное чтобы он не касался остальной части карты.
- Удалите первую sky_camera с центра нормальной карты. важно: На карте должна остаться только одна sky_camera - непосредственно в скайбоксе.
- Постройте геометрию скайбокса вокруг ваших ориентировочных брашей. Таким образом можно сделать совершенно незаметными швы между скайбоксом и границами карты. Можно использовать браши и дисплейсменты. Заметте, что модели помещаемые в скайбокс тоже должны соответствовать масштабу 1/16.
hl2\models\props_skybox\coast01.mdl
- типичный пример модели такого масштаба. Попробуйте поместить камеру на уровне зрения игрока, это даст вам хорошее представление о том как будет выглядеь скайбокс в игре (??? 0_о) - Создайте вокруг вашего скайбокса полый куб закрашенный текстурой
tools\toolsskybox
. Куб должен плотно облегать браши и модели скайбокса, без дырок во "внешнее пространство". - Когда вы закончите, удалите или спрячте геометрию ориентиров, исключая энтитю sky_camera. Для облегчения работы можно спрятать геометрию как отдельную vis группу, и потом показывать её при необходимости. Главное убедитесь перед компилированием что она скрыта.
- На оригинальной части карты следует создать браши с текстурой
tools\toolsskybox
, везде где планировалось показывать игроку скайбокс.
Проверка
Если ты коректно запёк свой 3D skybox, можешь компилировать свою карту и смотреть что получилось в игре.
Примеры
- Смотри
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
Статьи об окружающей среде | |
---|---|
Текстуры неба и создание неба | ![]() |
Создание рельефа местности и деформация поверхностей | Деформированные поверхности • Создание отверстий в деформированных поверхностях • Цифровые модели местности • Создание рельефа в Worldmachine |