Объекты игрового мира

Материал из SkyXEngine wiki
Версия от 07:30, 15 декабря 2018; Byurrer (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Все рисуемые составные части уровня основываются на рендерных сущностях, в том числе и объекты игрового мира.

Рендерные сущности

Рендерные сущности - объекты движка, которые могут быть отрисованы, либо требуют рендера для своего существования. Имеют в себе четко составленные вершинные и индексный буферы, которые представляют из себя определенную форму. Каждая рендерная сущность имеет свою структуру вершин и требует соответствующих шейдеров для рендера. Применение шейдеров, несовместимых с рендерной сущностью может привести к ошибкам рендера.

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

Ответственность за применение шейдеров к рендерным сущностям несет дизайнер материалов.

Движок поддерживает определенный набор рендерных сущностей, который состоит из двух видов:

  • материальные
  • нематериальные
  • gui

Материальные рендерные сущности

Материальные рендерные сущности - это объекты движка, которые имеют материал и используются непосредственно только для рендера сцены (игрового мира). К таким сущностным относятся:

  • статическая геометрия - неподвижная (не трансформируемая) геометрия уровня, которая не изменяется в течении всей игры. Как правило она составляет большую часть уровня (здания, ландшафт, прочее). Является простейшей сущностью. Рисуется обычным рендером.
  • растительность - автоматически анимированная статическая геометрия уровня, которой присущи элементарные анимации. Неподвижна (в плане перемещения, поворотов, масштабирования) и неизменяема в течении все игры. Представляет из себя деревья/кусты/траву. Является сложной сущностью. Рисуется при помощи hardware instancing.
  • анимационные модели - динамические объекты уровня, которые могут быть изменены в любой момент игры. Присущи анимации, перемещения, повороты. Является сложной сущностью. Рисуется прямым рендером с реализацией скелетной анимации на стороне шейдеров.

Каждая из материальных сущностей имеет свои особенности рендера и не может быть унифицирована с любой другой. Рассматривая этот вопрос в контексте материалов - каждая материальная сущность может использовать только тот шейдер, который специально сделан для обработки такой сущности. Список сущностей и директорий с соответствующими шейдерами:

  • статическая геометрия - mtrlgeom
  • растительность - mtrlgreen
  • анимационные модели - mtrlanim

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

Нематериальные рендерные сущности

Нематериальные рендерные сущности - это объекты движка, которые не имеют характеристик материала. Такие сущности делятся на 2 вида:

  • сущности игрового мира
  • сущности рабочего пространства

Нематериальные сущности игрового мира

Нематериальные сущности игрового мира - это объекты движка, которые не имеют характеристик материала, но участвуют в визуальном формировании игрового мира, являясь при этом его элементами. Такими объектами являются:

  • партиклы
  • декали
  • SkyBox
  • SkyClouds

Нематериальные сущности рабочего пространства

Нематериальные сущности игрового мира - это объекты движка, которые не имеют характеристик материала, и не участвуют в формировании игрового мира. Такими объектами являются:

  • ai сетка

Виды объектов

Основные объекты игрового мира делятся на:

  • статическую геометрию
  • растительность
  • игровые объекты

Статическая геометрия

Статическая геометрия (сокр. 'статика') - неподвижная (не трансформируемая и не анимированная) геометрия уровня, которая не изменяется в течении всей игры. Как правило она составляет большую часть уровня (здания, ландшафт, прочее). Является простейшей сущностью. Рисуется обычным рендером.

Может состоять из множества моделей (объекты расставляются в редакторе уровней), либо из одной целой (модель собирается 3d редакторе, а затем загружается в редакторе уровней).

Модели должны быть формата dse экспортированные как статические модели.

Каждая модель имеет:

  • имя (name) (опционально) - для идентификации пользователем в редакторе уровня
  • трансформации (position - позиция, rotation - повороты, scale - масштаб)
  • лод (LOD - level of detail)(опционально) - упрощенная модель, которая рисуется на дальних от наблюдателя расстояниях в целях экономии вычислительных ресурсов
  • физическая модель (physics)(опционально) - упрощенная модель для просчетов физики
  • свойство сегментации (segmentation) (опционально) - деление модели на куски, с целью экономии вычислений при рендере. Применяется в случаях если модель является объемной в плане габаритов и количества полигонов (модель 100х100х100 метров в 100 000 полигонов надо загружать, устанавливая свойство сегментации).

Отличие лода от физической модели заключается в том, что лод может значительно отличатся в плане расположения полигонов, его цель заключается в максимальном визуальном сходстве с исходной моделью на расстоянии, а в физической модели полигоны обязательно должны быть максимально схожи с расположением в исходной модели, но в то же время должно быть упрощение. Иными словами цель лода - визуальное сходство, цель физической модели - физическое сходство.

Статическая геометрия поддерживает обработку полупрозрачных поверхностей. При загрузке модели в редактор уровней, библиотека статической геометрии извлекает все полупрозрачные подгруппы, дополнительно извлекая из них замкнутые фигуры, формируя при этом зависимые (от основной модели) модели. То есть, информация о полупрозрачности должна быть известна еще до загрузки модели в редактор уровней, а именно полупрозрачный материал на статической геометрии должен быть настроен.

Для статической геометрии применяются соответствующие шейдеры материалов.

Растительность

Растительность - автоматически анимируемая статическая геометрия уровня, которой присущи элементарные анимации. Неподвижна (в плане перемещения, поворотов, масштабирования) и неизменяема в течении все игры. Представляет из себя деревья/кусты/траву. Является сложной сущностью. Рисуется при помощи hardware instancing.

Для рендера растительности существует 3 дистанции рендера:

  1. 50 метров от наблюдателя
  2. от 50 до 100 метров до наблюдателя
  3. от 100 метров до наблюдателя и до конца видимости

Деревья и кусты являются однотипными объектами, для них необходимо наличие основной модели и двух лодов. Такие объекты рисуются на всю дистанцию видимости:

  • модель рисуется на первой дистанции
  • первый лод рисуется на второй дистанции
  • третий лод рисуется на третьей дистанции

Трава имеет только одну модель и не может иметь лоды. Трава рисуется только на первой дистанции, причем с уменьшением по дальности, начиная с 30 метров и до 50 объекты уменьшаются от 100% до 0%. При перемещении по уровню с травой, можно увидеть как трава появляется и увеличивается при уменьшении расстояния до нее.

Только вершинные шейдеры определяют как рисовать объекты: либо как деревья/кусты, либо как траву (с уменьшением по дальности). Поэтому при установке шейдеров материалам, необходимо удостоверится, что шейдер рисует объект так как предполагается (например стандартные шейдеры материалов).

Игровые объекты

Основная статья Игровые объекты.

Игровые объекты - динамические объекты уровня, которые могут быть изменены в любой момент игры. Присущи анимации, перемещения, повороты.

Игровые объекты могут быть:

Другие объекты

Также свой вклад в итоговый игровой мир вносят:

См. также: