Pull to refresh

Способы визуализации в многомерных играх

Reading time 3 min
Views 12K
… Пару лет назад здесь уже был топик на сходную тему, хочу поделиться своими соображениями…

Одной из проблем, возникающих при написании игры, пространство действия которой содержит больше трех пространственных измерений, является визуализация сцены действия, в достаточной мере понятная пользователю, и пригодная для управления как персонажем (или объектом) игры, так и виртуальной камерой, создающей изображение.
Большинство многомерных игр, которые попадались мне в последнее время, были головоломками — аналогами кубика Рубика. Но для разных размерностей головоломки авторам приходилось использовать различные способы визуализации.



Четырехмерные аналоги кубика Рубика

В этих играх рабочим объектом является выпуклый четырехмерный многогранник, чаще всего обладающий высокой степенью симметрии (например, равногранный). Первоначально каждая его грань окрашена в свой цвет, но при поворотах граней цвета перемешиваются. Цель — восстановить исходный порядок цветов.
Все вершины многогранника лежат на четырехмерной сфере. Для визуализации берется стереографическая проекция этой сетки (набора вершин) на трехмерное пространство, и в нем строятся трехмерные многогранники — проекции граней исходного кубика. Грани делятся на многогранники поменьше («стикеры» — аналоги маленьких квадратов у обычного кубика), у которых слегка уменьшается размер (чтобы можно было видеть внутренние стикеры, если они есть). Полученная модель изображается в 3D-вьюере с камерой, постоянно направленной на центр модели. В частном случае тессеракта оказывается видно 7 граней, этого достаточно для игры. Управлять можно фокусным расстоянием камеры (углом зрения) и расстоянием от камеры до центра.
image

Пятимерный кубик Рубика

Визуализация идет примерно так же, но стереографическая проекция идет на 4-мерное пространство. Далее оно переспективно проектируется на трехмерное. Четырехмерные стикеры изображаются в виде реберных моделей, цвета ребер соответствуют цветам исходных стикеров.
image

Семимерный кубик

Выбираются четыре «основных» измерения и три «дополнительных». Рассматривается 7 граней в основных измерениях, каждая из них — это шестимерный куб. Этот куб изображается фрактальным способом: он делится по основным измерениям на N^3 кубиков, каждый из которых, в свою очередь, состоит из N^3 стикеров в дополнительных измерениях.
Основные грани располагаются так же, как грани 4-мерного кубика в стереографической проекции.
Чтобы показать хотя бы часть граней в дополнительных измерениях, рассматриваются их стикеры. смежные с «основными» гранями, и размещаются по поверхности маленьких кубиков каждой грани (тем самым, они оказываются не N^3, а (N+2)^3).
Как выясняется, собрать такой семимерный кубик вполне реально.
image

Четырехмерный тетрис

В нем даже не используется трехмерный вьюер — проекция идет сразу в 2D. Смотрим на стакан сверху, видим прямоугольный параллелепипед, каждая клетка которого засыпана на свою высоту. Клетки изображаются стандартным образом (прямоугольник, состоящий из диагональных цепочек клеток), высота кодируется цветом. Падающая фигура изображается во-первых, своей каркасной моделью, во-вторых, тенью (часть клеток заштрихована), и в третьих — на вертикальной проекции стакана (где виден порядок цветов и положение фигуры)
image

>Пятимерный пэкмэн

Используется каркасная модель лабиринта (отрезки, по которым можно ходить). Модель проектируется в трехмерное пространство (дополнительные коородинаты показаны цветом — желто-фиолетовая ось для U и красно-голубая для V). Лабиринт показывается в 3D-вьюере. Поворачивать камеру (она же служит для управления пэкмэном) можно как в 3D (направо/налево и вверх/вниз), так и в цветовом пространстве (в желтую, фиолетовую, синюю и т.д. стороны). Эти повороты выглядят как перекосы модели — часть вершин приближается, часть удаляется, и некоторые части лабиринта меняют цвет.
image

Головоломка в пространстве Лобачевского

Для визуализации используется обычный 3D вьюер, камера находится внутри пространства, лучи распространяются по прямым (геодезическим пространства Лобачевского). Сенсор камеры почти плоский.
image

«Трехмерная сетчатка»

Есть еще один способ визуализации (применяется в BlockBuilding-игре) — честное зрение с трехмерной сетчаткой: сначала вычисляется, что видит камера (это раскрашенное трехмерное пространство), а потом оно проектируется на 2D. Вероятно, это имеет смысл только при визуализации в виде отрезков или полупрозрачных 2D-граней.

Tags:
Hubs:
+66
Comments 108
Comments Comments 108

Articles