Документация/Уроки/Создание неба (sky box, sky dome и другие способы)
From NeoAxis Engine Wiki
| Language: | Status: | Approved |
Contents |
Введение
В этом уроке мы поговорим о том, как создается небо в вашей игре на движке NeoAxis Engine.
В NeoAxis Engine имеется несколько способов создать небо.
- С помощью стандартного типа Sky Box, представляющим собой куб, внутрь которого помещается игровой мир и на стенки которого накладываются текстуры неба (кубическая текстура).
- С помощью стандартного типа Sky Dome, представляющим собой полусферу, с текстурой неба и плывущими облаками.
- С помощью CameraAttachedObject, в котором вы сами решаете, на основе какого меша будет строиться небо и какие материалы будут к нему присоединены.
О том, как создать небо тем или иным способом, а также, какие отличия будут иметь полученные результаты, написано ниже.
Небо мы будем создавать в Map Editor, на карте, состоящей из одного WaterPlane.
Создание Sky Box
Первый способ создать небо в Map Editor - это использование Sky Box. Другими словами, наш мир будет помещен внутрь огромного куба, на стенки которого будут наложены текстуры неба (кубическая текстура). Выберем SkyBox в списке типов Types -> Base. После того, как SkyBox выбран, нажмем на окно редактора.
Небо создано, можно приступить к его настройке. Выделим SkyBox в окне Map Entities.
В окне Properties, можно настроить яркость, цвет и другие свойства Sky Box. Подробнее о параметрах Sky Box можно узнать здесь.
Создание Sky Dome
Второй способ создание неба - создание Sky Dome или, иначе, небесного купола. В отличии от Sky Box, основой Sky Dome является полусфера. Важные особенности Sky Dome:
- наличие анимированного неба,
- использование до четырех текстур в режиме смешивания,
- отдельная текстура для настройки плавного смешивания линии горизонта.
В списке типов Types -> Base выберем тип SkyDome и щелкнем по окну редактора.
Для настройки Sky Dome выделим его в окне Map Entities.
Теперь можно изменить параметры Sky Dome. Полное описание данного типа доступно здесь.
Создание неба с помощью CameraAttachedObject
Описание
Наконец, третий способ для создания неба - использование CameraAttachedObject. CameraAttachedObject - это объект, который присоединяется к камере и следует за ней, в какой бы точке мира она не оказалась.
Пример такого объекта присутствует в SDK на карте TankDemo. Смотрите папку \Data\Types\Sky\BlueDaySky\ в редакторе ресурсов.
Урок
Для начала нужно создать тип в редакторе ресурсов. Начнем с того, что создадим директорию для нашего неба. Щелкнем правой кнопкой мыши на папке Types -> Sky и нажмем кнопку New Directory.
Назовем папку, например, NewSky. Щелкнем по ней правой кнопкой мыши и нажмем кнопку New Resource.
В появившемся окне выберем Entity type и нажмем кнпоку Continue.
Теперь укажем имя нового типа: например, NewSky, и класс создаваемого объекта: CameraAttachedObject. После этого нажмем кнопку Next.
Начнем настраивать наше будущее небо, для чего сделаем двойной щелчок по файлу NewSky.type.
Сначала разрешим создавать объект в редакторе карт. Для этого установим параметр AllowEditorCreate в значение True.
Теперь добавим непосредственно присоединяемый объект. Нажмем кнопку "..." в поле Items.
Добавим в список объектов меш. Для этого нажмем кнопку Add и выберем пункт MeshItem.
Теперь выберем файл с мешем, нажав на кнопку "..." в поле MeshName.
В качестве примера можно выбрать меш уже имеющегося в NeoAxis Engine типа BlueDaySky, который так же, как и создаваемый нами тип, является CameraAttachedObject. Когда меш выбран, нужно нажать кнопку Ok.
Укажем еще три параметра для нашего MeshItem. Во-первых, AllowFrustumGlobalClipPlaining сделаем False, потому что небу не нужны плоскости отсечения. Во-вторых, RenderQueueGroup выставим параметр SkiesEarly, чтобы движок знал в какую очередь рисовать небо. В-третьих, ThisIsSkyGeometry установим в True, чтобы движок знал, что это небо. После этого нажмем кнопку Ok.
Сохраним наш объект, нажав на изображение дискеты в главной панели.
Запустим редактор карт, чтобы посмотреть на созданное нами небо в действии. Добавим небо на карту. Выберем созданный объект в списке Types -> Sky и щелкнем по экрану редактора.
У нас получилось настоящее небо с живыми облаками.
А теперь вернемся немного назад, вспомним, что, в качестве прикрепляемого к камере объекта, мы выбрали уже готовый меш - BlueDaySky.mesh. Откроем его в редакторе (директория Data\Types\Sky) и посмотрим, как он выглядит.
Как видим, меш представляет собой внутреннюю часть полусферы с натянутой на нее текстурой. Теперь рассмотрим материал, который назначен этому мешу. Откроем BlueDaySky.highMaterial.
Посмотрим как устроен этот материал. Щелкнем дважды на файле материала, чтобы перейти в режим редактирования.
Среди параметров материала, главным образом, нас интересует свиток Diffuse.
Как видим, материалу назначены две текстуры. Первая текстура - Sky.dds, является панорамным изображением неба.
Вторая текстура - Clouds.dds, на которой изображены облака.
Кроме того, если раскрыть свиток Diffuse2Map, можно увидеть, что, помимо файла с текстурой, указан еще один параметр: Transform. Раскрыв его, обратим внимание на параметр Animation. Анимация задана параметром Scroll (прокрутка). Как вы уже догадались, за счет этого осуществляется перемещение облаков по небу.
В заключении, отметим, что с помощью CameraAttachedObject можно создать и Sky Box, используя в качестве присоединенного меша куб, и Sky Dome, используя полусферу. Но, в отличии от стандартных типов NeoAxis Engine, у CameraAttachedObject нет таких параметров как Color и Power.
Добиться тех же эффектов, что и от параметров Color и Power' Sky Box/Sky Dome, у CameraAttachedObject можно меняя настройки, назначенного мешу, материала.
Итоги урока
Мы научились создавать небо тремя различными способами:
- с помощью Sky Box,
- с помощью Sky Dome,
- и с помощью объекта на основе CameraAttachedObject.
В своих проектах можно использовать любой из этих способов. В NeoAxis Engine SDK есть стандартные материалы для Sky Box и Sky Dome, а также тип BlueDaySky - готовое анимированное небо на основе CameraAttachedObject. Можно менять текстуры, настройки материалов и даже использовать свою трехмерную модель для CameraAttachedObject. Кроме того, не стоит забывать о настройке параметров Sky Box и Sky Dome, изменяя которые можно, например, реализовывать эффекты дня и ночи или же создавать красивые закаты.


















