NeoAxis 1.1 — Технические Подробности и Комментарии к Релизу
Данный материал посвящён техническим деталям и более подробному описанию новых возможностей обновлённой версии игрового движка NeoAxis Engine 1.1. Если вы интересуетесь разработкой игр и игровыми движкам — настоятельно рекомендую к прочтению, будет интересно. Также не пропустите первый материал по теме — ссылка на него дана чуть выше.
Depth Buffer Access
Одним из главных технических нововведений версии 1.1 стал долгожданный программный доступ к буферу глубины ( depth buffer ) как к обычной текстуре. При помощи данной возможности становится возможным создание и применение различных современных техник рендеринга, таких как Soft Particles, Depth of Field, SSAO и др. С технической стороны данная возможность реализована при помощи Multiple Render Targets ( MRT ). Таким образом, у разработчиков отпадает необходимость в дополнительном Z pre-pass проходе или двойном рендеринге геометрии. Геометрия отрисовывается всего один раз. Доступ к depth buffer в движке пока реализован только для Direct3D. Чем темнее область на картинке — тем ближе объект к камере, и наоборот.
Soft Particles
Следствием появления доступа к буферу глубины стало добавление технологии Soft Particles. Теперь любая система частиц ( и любой материал, так как Soft Particles — это новый атрибут материала ) может стать "мягкой", значительно повысив реализм и качество визуальных эффектов. Задачей "мягких частиц" является ликвидация графических артефактов в местах пересечения отдельного элемента частицы (квада) и геометрии сцены. Существует множество способов борьбы с этой проблемой, один из которых, используемый в NeoAxis, заключается в том, чтобы частица "затухала" при приближении к геометрии сцены.
Чтобы реализовать такой эффект на практике, необходимо получить буфер глубины, способ получения которого был описан выше. Затем производится рендеринг частиц, глубина которых сравнивается с сохранённой глубиной сцены. При обнаружении близости какой-либо частицы к геометрии происходит "затухание" этой частицы соразмерно разницы, полученной из сравнения буферов глубины, при помощи плавного увеличения значения альфа-канала. В итоге мы имеем частицы, которые плавно "смешиваются" с геометрией сцены, таким образом избавляясь от артефактов в формировании итоговой картинки.
Animation Tree System
Не остались без внимания и аниматоры — значительным достижением стало добавление в версии 1.1 системы Animation Tree, при помощи которой можно проще настраивать проигрывание различных анимаций. Кроме того, исчезла необходимость написания большого количества программного кода для задействования сложной анимации ( такой как, например, персонажная анимация ). Настройка производится в специальном текстовом конфигурационном файле Animation Tree, который представляет собой схему анимаций с операциями и соединениями. В дальнейшем Animation Tree System в NeoAxis будет дополнена визуальным редактором, что в сумме позволит сэкономить уйму времени при разработке и добавлении персонажей со сложной и реалистичной анимацией. Кроме того, стоит отметить, что системы "дерева анимаций" используют и другие современные игровые движки — например, Unreal Engine 3 от Epic Games. Теперь подобная возможность доступна и в NeoAxis.
Navigation Mesh Pathfinding
Известной проблемой в разрабокте игр является реализация адекватной по скорости и качеству системы нахождения пути ( pathfinding ). В NeoAxis 1.1 была задействована открытая библиотека Recast pathfinding system для создания продвинутой техники навигационных мешей ( NavMesh ). Таким образом, в дополнение к ранее существующим системе поиска пути по точкам и системе на базе двумерной сетки в NeoAxis SDK 1.1 добавлена третья система обнаружения пути — Navigation Mesh Pathfinding. Одним из преимуществ создания Navigation mesh средствами, встроенными прямо в NeoAxis, является полная автоматизация процесса — система автоматически генерирует NavMesh по указанные настройкам.
Процесс создания navigation mesh в Recast можно разделить на три этапа:
1. На первом этапе из загруженной геометрии игрового уровня, разбитой на треугольники, путём растеризации в многослойный heightfield создаётся воксельная форма ( voxel mold ) уровня. Затем к полученной форме применяются некоторые фильтры, удаляющие места, в которых персонажи ( или как ещё называют объекты, управляемые АИ — "актёры" ) не смогут двигаться.
2. Области в полученной форме, в которых возможно движение, разделяются на упрощённые и наложенные друг на друга 2D-регионы. Полученные регионы не пересекают сами себя и имеют только один контур, что упрощает дальнейший процесс создания NavMesh'а.
3. На последнем этапе создаются навигационные полигоны путём выделения соответствующих областей из регионов исследованием границ и их упрощением. Полученные полигоны затем конвертируются в convex polygons, которые отлично подходят для задач нахождения пути и перемещения в пространстве.
В целом, нахождение пути при помощи навигационных мешей — это более современный и естественный способ создания возможностей для перемещения управляемых AI "актёров", нежели grid-based и waypoint-системы.
Кроме того, использование навигационных мешей позволяет значительно сократить плотность графа нахождения пути, т.к. одна большая открытая область может быть представлена одним полигоном вместо десятка или даже нескольких десятков waypoint'ов. Это позволяет не только снизить потребление памяти ( из-за уменьшение количества хранимых объектов ), но и ускорить нахождение пути ввиду сокращения общих размеров навигационного графа.
Ещё одним преимуществом navmesh-навигации над grid-based navigation — это возможность многоуровневой навигации, когда один уровень находится прямо над другим. При использовании grid-системы возможности создания многоуровневой навигации не было. Большую пользу из использования навигационных мешей могут извлечь и разработчики игр в жанре стратегий в реальном времени ( RTS ) — простой и постоянный доступ к информации об окружающем пространстве и его проходимости позволяет искуственному интеллекту проще и менее затратно в плане вычислительных ресурсов выстраиваться в отряды из нескольких юнитов, корректно группироваться на местности, выстраиваться в боевые построения и т.д.
Впрочем, новая система поиска пути не всегда заменяет старые. В некоторых случаях система на базе сетки подходит лучше. В конечном счёте выбор остаётся за разработчиками проектов.
New Vegetation Material
NeoAxis 1.1 может похвастаться и новым материалом для растительности, такой как трава, листва деревьев и кустарников. Новый материал представляет собой набор различных методик для получения реалистичной растительности.
Новый материал использует технику Half-Lambert освещения, задействованную компанией Valve в игре Half-Life 2. Движок также дополнен технологией Translucency Maps для имитации эффекта прохождения света сквозь растительность. Использование Translucency Maps является простой реализацией техники подповерхностного рассеивания ( subsurface scattering ), позволяющей достичь желаемого эффекта при хорошем соотношении скорость/качество. Итогом применения translucency maps в новом материале является характерное "подсвечивание" растительности при прохождении сквозь неё света. Похожие техники освещения растительности применялись и в игре Crysis — признанном технологическом лидере среди компьютерных игр прошлых лет.
Для ещё большего реализма и качества симуляции листва и растительность теперь может быть анимирована с использованием значений, хранящихся в vertex color геометрии. Значение vertex color оказывает влияние на амплитуду анимации движения листвы деревьев, где часть листа, находящаяся ближе к основанию, будет иметь меньшую амплитуду, а часть, находящаяся у края — большую, что соответствует поведению листвы в реальном мире. Условно можно утверждать, что значения vertex color могут являться аналогом "жёсткости" материала листа и таким образом влиять на его анимацию.
Наконец, ещё одной известной проблемой симуляции листвы и прочей растительности является сглаживание границ их отдельных элементов, так называемый "алиасинг", когда края объектов представлены в виде бросающейся в глаза "лесенки". В NeoAxis 1.1 эта проблема решается при помощи нового алгоритма сглаживания.
Fast Approximation Anti-Aliasing
Fast Approximation Anti-Aliasing ( FXAA ) — сравнительно новый алгоритм сглаживания, разработанный в недрах компании NVidia человеком по имени Тимоти Лоттс. Преимуществами FXAA является его высокая скорость работы и хороший результат. С технической точки зрения FXAA представляет собой однопроходный пиксельный шейдер, просчитывающий кадр на этапе постобработки. FXAA также менее требователен к ресурсам памяти и производительности "железа", нежели FSAA ( full-scene anti-aliasing ) или MSAA ( Multisample anti-aliasing ).
На этом всё. Спасибо за внимание!
- 2240 просмотров