Создание неба в UnrealED
Автор: Hruka
Введение
Вы наверняка хотели бы создать уровни содержащие большие
открытые пространства. Ну или небольшие. Ну или совсем маленькие. Неважно.
Главное - то, что в каждом таком уровне у вас должно быть небо вверху. Вот о
процессе создания неба и будет повествоваться в этой статье.
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 в уровне может быть только один. Просто в
оригинальных уровнях один используется для низких разрешений, другой - для
высоких.