4ёх-мерные игры
В топике о десятимерном пространстве, помимо идей об употреблении веществ и всяких астральных проекциях, высказывались идеи о четырёхмерной игре, чтобы «посмотреть, как это выглядит».
Тут имеется ввиду 4 пространственных измерения.
Фокусы с ветвлением и наложением во времени есть в играх типа Chronotron и аналогичных.
Обзор
NB: Часть перечисленных игр найдены через страницу 4D Euclidean space, где есть ещё много вкусных ссылок по теме.
Hypercube — «игра» с вращением тессеракта. java-applet.
Игрой можно назвать условно. Фактически вариация управляемого вращения тессеракта и ещё какие-то маловнятные бонусы за столкновения.
Если у вас нет стереоочков, и игра выпадет по нехватке памяти (у меня съедает гиг), есть риск остаться косоглазым :)
4D Maze — четырёхмерный лабиринт, состоящий из гиперкубов. jar.
Совершенно честный четырёхмерный лабиринт, со множеством параметров настройки проекций, перспективы итп.
Лабиринт изображается в виде стереопары в wireframe.
Ориентироваться в нём можно вращаясь по четырём осям, пока впереди не появится скопление безобразия одного цвета. Тогда можно идти вперёд.
Выхода, кажется, нет :)
4d building blocks. Паззл с построением фигур из объектов.
Объекты перемещаются по одной из осей.
Изображает wireframe стереопроекцию во всевозможных вариантах, включая стереочковую.
Magic Cube 4D. 4ёх мерный кубик-рубика.
Изображается в ввиде разнесённых в 3d пространстве сегментов.
На странице есть ссылки на другие реализации, в том числе — 5тимерного кубика.
Также есть ссылки на алгоритмы его сборки и математические характеристики.
Если ваш мозг готов — попробуйте попасть в таблицу рекордов! :)
4D Maze ещё один 4D лабиринт. загрузки не дождался.
Adanaxis — 4D шутер в открытом космическом пространстве.
Весьма и весьма добротно сделанная космическая стрелялка, есть GPL и неGPL версии, бинарники deb и rpm. Играть реально приятно.
Реализованы все 10 вращений. Но, как говорит мануал — для игры понадобятся только четыре, а остальные — просто повтыкать.
(Мануал врёт! Без скольжения сразу по четвёртой оси (без разворотов) догонять врагов весьма проблематично — потомучто они, судя по всему, перемещаются в 4D пространстве свободно.)
Управление по дефолту мышью, либо клавиша+движение мышью. Всё произвольно переназначается.
Поскольку пространство ничем не ограничено, геометрия пространства прослеживается не очень явно.
При вращении или перемещении в четвёртой оси 4ёхмерные объекты появляются и исчезают, проходя сквозь трёхмерный видимый срез — точь в точь, как это изображается в видеороликах, когда трёхмерное проходит через «флатляндию».
Изображается всё как в обычном космическом шутере — 3d пространство с перспективой.
Соображения.
Основная фишка в том, что изобразить 4D пространство в проекции на 2D экран — совершенно нереально.
Если использовать подход Adanaxis — спроецировать в 3D, а потом уже его привычной перспективной проекцией в 2D, то геометрия пространства прослеживается не очень наглядно.
При отображении 4D пространства просто необходимо генерить трёхмерное изображение.
Метод косоглазия не очень эффективен, потомучто не применим к большим изображениям, а маленькие не дадут эффекта «погружения» в пространство.
Одно время были в ходу ЖК-очки, синхронизирующие затемнение каждого «очка» с частотой смены кадров — они давали ошеломительный эффект.
Недавно на хабре проскакивала ссылка про технологию коррекции перспективы на экране в зависимости от положения головы. Вроде бы весьма простая и эффективная схема. Хотя непонятно, запустится ли это в производство, насколько запатентовано, и насколько сложно сделать в домашних/гаражных услвиях.
В конце концов остаются красно-синие очки, которые хоть и портят цветопередачу, но достаточно эффективны.
Передача гиперглубины в виде перспективы проволочной модели тоже не кажется очень удачной, потомучто ориентироваться в нагромождении линий сложновато, даже если они и выстраиваются в чёткие пространственные структуры. А если закрасить всё текстурами, то не будет видно никакого пространства.
В этом отношении эффективнее кажется метод «полупрозрачности» — более гиперглубокие объекты отображать «растворяющимися» в пространстве, как это весьма эффектно сделано в Adonaxis.
Ещё один момент в том, что для наблюдения топологии пространства нужны ориентиры — фиксированные объекты.
Наиболее интересным кажется вариант (достаточно просторного) лабиринта, где можно ориентироваться по стенам, их освещению и текстурам.
Однако по опыту курсовых по программированию многие знают, что в лабиринте из одинаковых кубов сбиться с ориентации весьма легко даже на простых развилках.
Более адекватны в этом плане тунелли наподобие Descent, которые намеренно были сделаны кривыми, что позволяло не терять ориентации относительно «оси» туннеля при любых переворотах в пространстве.
В качестве простой схемы для реализации я бы взял модель радиального лабиринта типа maze — с проходами между секторами 4D-сферы.
Конфигурация искажённости сегмента даст дополнительный визуальный фактор для определения направления до центра сферы.
Повороты в 4ёхмерном пространстве линейны и их эффект со сферическим искажением не спутать. Наверно :)
Ещё один возможный и проверенный вариант — полёты над ландшафтом.
Всегда визуально понятно, где «низ», а если ещё повесить пару солнц — то и «север».
Но необходимость иметь север и низ во всех измерениях может сильно попортить сам замысел демонстрации 4D пространства.
Disclaimer
Я сто лет не занимался компьютерной графикой, и в один присест ничего путного не напишу.
Хотя с чисто математической точки зрения трудностей здесь не вижу. То же евклидово пространство и матричные преобразования. Только перспективная проекция строится не на плоскость а в трёхмерное пространство. А сама 3D сцена рендерится немного модифицированным способом. Под очки, например.
Возможно, когда-нибудь займусь этой идеей, если никто к другой к тому моменту не реализует.
Цель данного поста — дать обзор существующим 4D играм и повод обсудить идеи возможных реализаций.
Upd.
В предыдущем и в этом треде я слегка облажался насчёт количества возможных вращений.
То, что назвается поворотом «вокруг плоскости» не является дополнительной степенью свободы. Такой поворот аналогичен повороту на плоскости вокруг точки — центра вращения — сама ось перпендикулярна этой плоскости и в ней не лежит.
Таким образом в 4D пространстве возможно 6 вращений: вокруг обычных, одномерных осей, перпендикулярных плоскостям: xy, xz, xw, yz, yw, zw.
Каждая из осей 0x 0y 0z и 0w перпендикулярна двум из плоскостей.
Это существенно меньшее, чем предполагалось, количество пальцев, необходимых для управления космокораблём, и можно снова взять мышь + три модификатора.