Как сделать скайбокс

Обновлено: 08.07.2024

Вступление
Вы наверняка хотели бы создать уровни, содержащие большие открытые пространства. Ну или небольшие. Ну или совсем маленькие. Неважно. Главное - то, что в каждом таком уровне у Вас должно быть небо вверху. Вот о процессе создания неба и будет повествоваться в этой статье.
SkyBox
Небо в Unreal устроено следующим образом: у Вас есть собственно уровень, с открытыми пространствами, и небольшой отдельный кусочек(SkyBox), в котором где-то есть объект SkyZoneInfo, который играет роль "камеры". Внутри этого кусочка Вы делаете Ваше небо, горы, планеты, солнце и т.д. В Вашем уровне есть несколько поверхностей с установленным атрибутом "Fake backdrop". Сквозь эти поверхности Вы можете видеть изображение, передаваемое камерой (т.е. объектом SkyZoneInfo). Эти поверхности - как бы мониторы, передающие изображение неба. Таким образом, для создания неба нам нужно 2 компонента - SkyBox и несколько поверхностей-"мониторов".
Небо
Мда, в теории это выглядит сложно, однако давайте сделаем наш первый SkyBox и Вы сразу разберетесь, что к чему. Для начала сделайте квадратную комнату 512x512x512. Загрузите файл GenEarth.utx с текстурами травы, земли, камней и т.д. и назначьте одну из текстур полу Вашей комнаты. Теперь выделите все остальные плоскости комнаты, нажмите на одной из них правую кнопку мыши и выберите "Surface Properties (x selected). ". В закладке Effects отметьте флажок Fake Backdrop. Теперь эти поверхности в игре не будут видны, а сквозь них мы будем видеть небо. Но чтобы его увидеть, его надо сначала создать. Сделайте комнату 512x1024x1024 где-нибудь в Вашем уровне. Теперь загрузите файл SkyBox.utx с текстурами неба, гор и т.д. Измените размер куба на 256x256x256, выберите из файла SkyBox.utx текстуру земли (GRD) и добавьте этот куб прямо в центр Вашей комнаты:

Это будет поверхность земли. Теперь мы на эту поверхность добавим горы. Посмотрите на такие текстуры из packag'а SkyBox, как LND1, LND2, LND3 и т.д. Они выглядят как горы, но только на черном фоне. Чтобы черный фон стал прозрачным, для этих текстур надо установить атрибут Masked, который заменяет все черные пиксели в текстуре на прозрачные. Для этого мы используем специальную заготовку "Masked wall". Нажмите правой кнопкой мыши на кнопку Build a sheet и вызовите окно Sheet properties. В поле Orientation поставьте X-Wall, и установите размеры U=256 V=128. Теперь подвиньте поверхность на край нашей поверхности земли:

Нажмите на кнопку Add Special Brush. В поле Predefined выберите Masked Wall, а в поле Visibility выберите 2-sided. Теперь в браузере текстур выберите текстуру LND2_1 и нажмите кнопку Add Special. Поверхность появится в 3D окне:

Теперь поверните поверхность по часовой стрелке на следующий край:

Справа выберите текстуру LND2_2 и добавьте эту поверхность точно также как и предыдущую. Затем переместите поверхность на следующую позицию, измените текстуру на LND2_3 и добавьте поверхность. И, наконец, проделайте то же самое для последней позиции. Итак, Вы сделали горы. Теперь можно приступать собственно к созданию неба. Небо у нас будет состоять из двух поверхностей над горами: одна поверхность - непрозрачное статичное изображение облаков. Вторая - прозрачное изображение плывущих облаков. Вызовите окно sheet properties, установите Orientation в Floor/Ceiling и размеры 1024x1024. Поместите эту поверхность на две клетки выше гор. Выберите справа текстуру SkytstAX и нажмите кнопку Add Special Brush. Из списка predefined выберите Regular brush, в поле Visibility выберите 2-sided и добавьте поверхность. Теперь мы добавим плывущие облака. Переместите поверхность на 1 клетку вниз, выберите текстуру NCld, нажмите Add Special Brush и поставьте такие же параметры, как и для предыдущей поверхности, только на этот раз отметьте флажок Transparent. Как Вы видите, в 3D окне появились облака. Чтобы сделать их плывущими, выберите поверхность с облаками, вызовите окно Surface properties и в закладке Effects установите флажок U-Pan или V-Pan. Теперь перейдем к освещению. Выберите поверхности гор и земли, вызовите для них окно Surface properties и установите флажок Unlit - для гор цветное освещение не очень нужно. Ну а теперь, освещайте Ваше небо как душа пожелает - добавляйте источники света, меняйте их цвет, яркость и т.д., пока не создадите нормальное освещение. В итоге у Вас должно получиться что-то вроде этого:

Ну и еще Вы наверное захотите добавить солнце или планету. Это делается очень легко, просто добавляется обыкновенная поверхность с изображением планеты. Измените размер поверхности на 64x64, поместите ее на небо, в любое место, и разверните в сторону центра. Теперь выберите текстуру планеты (напр. Rpl), нажмите Add Special Brush и используйте те же параметры что и для прозрачных облаков. Скорее всего, размер текстуры Вашей планеты больше чем 64x64(например, размер Rpl - 128x128). В этом случае выберите поверхность с планетой, вызовите окно Surface properties, и в поле Scale->Simple scaling установите необходимый масштаб. Например, для текстуры Rpl надо установить значение 0,5. Ну и, наконец, самое главное - добавьте объект Info.ZoneInfo.SkyZoneInfo прямо в центр Вашего SkyBox'a:

Все, теперь Ваше небо готово. Можете это проверить, нажав Ctrl+P. Как Вы видите, небо видно сквозь все поверхности с установленным атрибутом Fake backdrop. Создается видимость того, что весь уровень поместили в ту маленькую комнатку, в SkyBox, точно на место где находится объект SkyZoneInfo. Теперь, надеюсь, всем понятно устройство неба в Unreal.
Заключение
И в заключение я хочу дать несколько советов по созданию неба:
Скорость плывущих облаков можно менять. Откройте окно параметров SkyZoneInfo и изменяйте параметры ZoneLight->TexUPanSpeed, TexVPanSpeed. Рекомендую ставить эти значения где-то в 0.3-0.5 для хорошей скорости;
Никогда не используйте динамических источников света в SkyBox'e - это будет очень сильно тормозить;
При осмотре оригинальных уровней Unreal, Вы можете заметить, что там 2 SkyBox'а. На самом деле SkyBox в уровне может быть только один. Просто в оригинальных уровнях один используется для низких разрешений, другой - для высоких;
Автор
Hruka

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


Построим карту, ну вот такую:



Важно то, чтобы браш земли игровой зоны был в центре координат в Хаммере, ну или хотя бы не выше и не ниже. Именно с той точки отрисовывается то место, которое видит sky_camera в 3D скайбоксе.Вот так браш должен располагаться:


Далее займёмся 3D скайбоксом.Сделаем коробку, покроем её текстурой tools/toolsskybox, сделаем браш земли, покрытый такой же текстурой, что и браш земли в игровом пространстве, поставим солнце. Поставим sky_camera, и вгоним её наполовину в землю.Вот так это будет выглядеть:


Выставим желаемые параметры, можно оставить всё как есть. Можно сделать для лучшего эффекта туман на горизонте. Не забудьте уменьшить масштаб текстуры на браше в столько раз, сколько стоит увеличение в sky_camer'е.Готово.Вот в итоге что получилось у меня.Как видите, переход на 3D скайбокс совсем незаметен, даже текстура легла почти идеально.


Еще раз напомню что skybox это ничто иное как анимированные меши в Kf2 формате. Необязательно использовать skybox как фиксированное небо. К примеру можно сделать уровень поезд и анимировать skybox'ом окружение в движении, что оставит статичным поезд и менее баговым соответственно. Так же отмечу что skybox привязан к игроку и всегда двигается с ним. Так же можно использовать несколько skybox'ов в одном уровне но уже создавая их внутри уровня в виде мешей maxed'a а не kf2 таким образом чтобы основной skybox был за видимым нужным на данный момент skybox'ом.






Recently, many people asked me how am I changing skies in my demos, that's why I decided to create this guide. In this guide you will learn how to change skies and use it in your edits or highlights.

В последнее время меня часто спрашивали как изменить небо в демках и поэтому я решил сделать этот гайд. В этом гайде вы научитесь менять небо и использовать его как только хотите.

Examples of videos with custom skies / Примеры применения кастомного неба:

Installing skyboxes is really simple, you just need to drag them into the folder of your HLAE resources or into the game folder. See Screenshots below.

Установка скайбоксов - это очень легко, их только нужно перекинуть в папку ХЛАЕ или в папку игры. Смотреть скрины.

NOT HLAE path / Куда кидать если не ХЛАЕ :

HLAE path / Куда кидать если HLAE :

If you don't have skybox folder just create it / Если нету папки - создайте ее!

To initialize custom skybox in game:
1. Open your demo
2. Open console " ` "
3. Check if r_3dsky is set to 0
4. Type in sv_skyname "skyboxname" - For ex: sv_skyname pink1


Чтобы применить в игре:
1. Включаете демо
2. Открываете констоль " ` "
3. Проверяете чтобы r_3dsky было 0
4. Вписываете комaнду sv_skyname "назвниескайбокса" - Для примера: sv_skyname pink1

So now you know how to install and change skies! If you have any questions or problems, use the comment section or ask me in PM.

Теперь вы умеете пользоваться кастомным небом!! Если возникнут вопросы или проблемы, обращайтесь в комментарии или ко мне в ЛС.

Enjoy!

Читайте также: