Документация/Уроки/Создание неба (sky box, sky dome и другие способы)

From NeoAxis Engine Wiki

Jump to: navigation, search
Перейти на уровень выше
Creating sky29.jpg

Contents

Введение

В этом уроке мы поговорим о том, как создается небо в вашей игре на движке NeoAxis Engine.

В NeoAxis Engine имеется несколько способов создать небо.

  • С помощью стандартного типа Sky Box, представляющим собой куб, внутрь которого помещается игровой мир и на стенки которого накладываются текстуры неба (кубическая текстура).
  • С помощью стандартного типа Sky Dome, представляющим собой полусферу, с текстурой неба и плывущими облаками.
  • С помощью CameraAttachedObject, в котором вы сами решаете, на основе какого меша будет строиться небо и какие материалы будут к нему присоединены.

О том, как создать небо тем или иным способом, а также, какие отличия будут иметь полученные результаты, написано ниже.

Небо мы будем создавать в Map Editor, на карте, состоящей из одного WaterPlane.

Creating sky1.jpg

Создание Sky Box

Первый способ создать небо в Map Editor - это использование Sky Box. Другими словами, наш мир будет помещен внутрь огромного куба, на стенки которого будут наложены текстуры неба (кубическая текстура). Выберем SkyBox в списке типов Types -> Base. После того, как SkyBox выбран, нажмем на окно редактора.

Creating sky2.jpg

Небо создано, можно приступить к его настройке. Выделим SkyBox в окне Map Entities.

Creating sky3.jpg

В окне Properties, можно настроить яркость, цвет и другие свойства Sky Box. Подробнее о параметрах Sky Box можно узнать здесь.

Creating sky4.jpg

Создание Sky Dome

Второй способ создание неба - создание Sky Dome или, иначе, небесного купола. В отличии от Sky Box, основой Sky Dome является полусфера. Важные особенности Sky Dome:

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

В списке типов Types -> Base выберем тип SkyDome и щелкнем по окну редактора.

Creating sky5.jpg

Для настройки Sky Dome выделим его в окне Map Entities.

Creating sky6.jpg

Теперь можно изменить параметры Sky Dome. Полное описание данного типа доступно здесь.

Creating sky7.jpg

Создание неба с помощью CameraAttachedObject

Описание

Наконец, третий способ для создания неба - использование CameraAttachedObject. CameraAttachedObject - это объект, который присоединяется к камере и следует за ней, в какой бы точке мира она не оказалась.

Пример такого объекта присутствует в SDK на карте TankDemo. Смотрите папку \Data\Types\Sky\BlueDaySky\ в редакторе ресурсов.

Урок

Для начала нужно создать тип в редакторе ресурсов. Начнем с того, что создадим директорию для нашего неба. Щелкнем правой кнопкой мыши на папке Types -> Sky и нажмем кнопку New Directory.

Creating sky8.jpg

Назовем папку, например, NewSky. Щелкнем по ней правой кнопкой мыши и нажмем кнопку New Resource.

Creating sky9.jpg

В появившемся окне выберем Entity type и нажмем кнпоку Continue.

Creating sky10.jpg

Теперь укажем имя нового типа: например, NewSky, и класс создаваемого объекта: CameraAttachedObject. После этого нажмем кнопку Next.

Creating sky11.jpg

Начнем настраивать наше будущее небо, для чего сделаем двойной щелчок по файлу NewSky.type.

Creating sky12.jpg

Сначала разрешим создавать объект в редакторе карт. Для этого установим параметр AllowEditorCreate в значение True.

Creating sky13.jpg

Теперь добавим непосредственно присоединяемый объект. Нажмем кнопку "..." в поле Items.

Creating sky14.jpg

Добавим в список объектов меш. Для этого нажмем кнопку Add и выберем пункт MeshItem.

Creating sky15.jpg

Теперь выберем файл с мешем, нажав на кнопку "..." в поле MeshName.

Creating sky16.jpg

В качестве примера можно выбрать меш уже имеющегося в NeoAxis Engine типа BlueDaySky, который так же, как и создаваемый нами тип, является CameraAttachedObject. Когда меш выбран, нужно нажать кнопку Ok.

Creating sky17.jpg

Укажем еще три параметра для нашего MeshItem. Во-первых, AllowFrustumGlobalClipPlaining сделаем False, потому что небу не нужны плоскости отсечения. Во-вторых, RenderQueueGroup выставим параметр SkiesEarly, чтобы движок знал в какую очередь рисовать небо. В-третьих, ThisIsSkyGeometry установим в True, чтобы движок знал, что это небо. После этого нажмем кнопку Ok.

Creating sky18.jpg

Сохраним наш объект, нажав на изображение дискеты в главной панели.

Creating sky19.jpg

Запустим редактор карт, чтобы посмотреть на созданное нами небо в действии. Добавим небо на карту. Выберем созданный объект в списке Types -> Sky и щелкнем по экрану редактора.

Creating sky20.jpg

У нас получилось настоящее небо с живыми облаками.

Creating sky21.jpg

А теперь вернемся немного назад, вспомним, что, в качестве прикрепляемого к камере объекта, мы выбрали уже готовый меш - BlueDaySky.mesh. Откроем его в редакторе (директория Data\Types\Sky) и посмотрим, как он выглядит.

Creating sky22.jpg

Как видим, меш представляет собой внутреннюю часть полусферы с натянутой на нее текстурой. Теперь рассмотрим материал, который назначен этому мешу. Откроем BlueDaySky.highMaterial.

Creating sky23.jpg

Посмотрим как устроен этот материал. Щелкнем дважды на файле материала, чтобы перейти в режим редактирования.

Creating sky24.jpg

Среди параметров материала, главным образом, нас интересует свиток Diffuse.

Creating sky25.jpg

Как видим, материалу назначены две текстуры. Первая текстура - Sky.dds, является панорамным изображением неба.

Creating sky26.jpg

Вторая текстура - Clouds.dds, на которой изображены облака.

Creating sky27.jpg

Кроме того, если раскрыть свиток Diffuse2Map, можно увидеть, что, помимо файла с текстурой, указан еще один параметр: Transform. Раскрыв его, обратим внимание на параметр Animation. Анимация задана параметром Scroll (прокрутка). Как вы уже догадались, за счет этого осуществляется перемещение облаков по небу.

Creating sky28.jpg

В заключении, отметим, что с помощью 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, изменяя которые можно, например, реализовывать эффекты дня и ночи или же создавать красивые закаты.

Creating sky29.jpg