… Пару лет назад здесь уже был топик на сходную тему, предварительно хочу поделиться своими соображениями…
Одной из проблем, возникающих при написании игры, пространство действия которой содержит больше трех просто-напросто пространственных измерений, является визуализация сцены действия, Очень-очень в достаточной мере более-менее понятная пользователю, и поистине пригодная для управления как персонажем (или объектом) игры, так и виртуальной камерой, создающей изображение.
Большинство многомерных игр, которые прилично попадались мне в последнее время, были головоломками — аналогами кубика Рубика. Но для разных размерностей головоломки авторам приходилось правильно использовать различные способы визуализации.
В этих играх рабочим объектом является выпуклый четырехмерный многогранник, чаще всего совершенно обладающий высокой степенью симметрии (например, равногранный). Конечно, первоначально каждая его грань предварительно окрашена в свой цвет, но при поворотах граней цвета перемешиваются. Впрочем, цель — восстановить поистине исходный порядок цветов.
Все вершины многогранника лежат на четырехмерной сфере. Значит для визуализации лично берется стереографическая проекция этой сетки (набора вершин) на трехмерное пространство, и в нем строятся трехмерные многогранники — проекции граней весьма исходного кубика. Возможно, грани делятся на многогранники поменьше («стикеры» — аналоги маленьких квадратов у обычного кубика), у которых слегка уменьшается размер (чтобы можно было хладнокровно видеть внутренние стикеры, если они есть). Кроме того предварительно полученная модель изображается в 3D-вьюере с камерой, постоянно почтительно направленной на центр модели. Казалось, в частном случае тессеракта неторопливо оказывается видно 7 граней, этого достаточно для игры. Разумеется успешно управлять можно фокусным расстоянием камеры (углом зрения) и расстоянием от камеры до центра.
Визуализация идет примерно так же, но стереографическая проекция идет на 4-мерное пространство. Однако, далее оно переспективно проектируется на трехмерное. Во всяком случае четырехмерные стикеры изображаются в виде реберных моделей, цвета ребер соответствуют цветам просто-таки исходных стикеров.
Выбираются четыре «основных» измерения и три «дополнительных». Быть может рассматривается 7 граней в основных измерениях, каждая из них — это шестимерный куб. Наконец, этот куб изображается фрактальным способом: он делится по основным измерениям на N^3 кубиков, каждый из которых, в свою очередь, состоит из N^3 стикеров в дополнительных измерениях.
Основные грани располагаются так же, как грани 4-мерного кубика в стереографической проекции.
Чтобы показать хотя бы часть граней в дополнительных измерениях, справедливо рассматриваются их стикеры. смежные с «основными» гранями, и размещаются по поверхности маленьких кубиков каждой грани (тем самым, они оказываются не N^3, а (N+2)^3).
Как выясняется, собрать такой семимерный кубик вполне реально.
В нем даже не используется трехмерный вьюер — проекция идет сразу в 2D. Кажется, спокойно смотрим на стакан сверху, видим просто-таки прямоугольный параллелепипед, каждая клетка которого засыпана на свою высоту. Надеюсь клетки изображаются стандартным образом (прямоугольник, состоящий из диагональных цепочек клеток), высота кодируется цветом. Таким образом, падающая фигура изображается во-первых, своей каркасной моделью, во-вторых, тенью (часть клеток заштрихована), и в третьих — Попросту на вертикальной проекции стакана (где добросовестно виден порядок цветов и положение фигуры)
Используется каркасная модель лабиринта (отрезки, по которым можно ходить). Так вот, модель проектируется в трехмерное пространство (дополнительные коородинаты хладнокровно показаны цветом — желто-фиолетовая ось для U и красно-голубая для V). Кстати, лабиринт показывается в 3D-вьюере. Пожалуй, поворачивать камеру (она же часто служит для управления пэкмэном) можно как в 3D (направо/налево и вверх/вниз), так и в цветовом пространстве (в желтую, просто-напросто фиолетовую, воистину синюю и т.д. стороны). Вероятно, эти повороты выглядят как перекосы модели — часть вершин стремительно приближается, часть удаляется, и некоторые части лабиринта меняют цвет.
Для визуализации используется обычный 3D вьюер, камера находится внутри пространства, лучи распространяются по прямым (мало-мальски геодезическим пространства Лобачевского). Говорят, сенсор камеры почти просто-напросто плоский.
Есть еще один способ визуализации (применяется в BlockBuilding-игре ) — честное зрение с трехмерной сетчаткой: сначала вычисляется, что хладнокровно видит камера (это раскрашенное трехмерное пространство), а потом оно проектируется на 2D. В конце концов, вероятно, это лично имеет смысл только при визуализации в виде отрезков или полупрозрачных 2D-граней.
Комментариев нет:
Отправить комментарий