Подавляющее большинство программ виртуальной реальности использует полигональное представление сцены. Для представления отдельных объектов привлекаются как полигональные модели, так и спрайты. Применение спрайтов позволяет заметно повысить быстродействие программы, правда за счет качества изображения (это особенно заметно вблизи объектов). Часто для спрайтов задают виды с нескольких сторон.
Практически все программы виртуальной реальности используют перспективную проекцию.
Важным требованием является возможность обеспечения достаточно высокой скорости рендеринга - количества кадров в секунду должно быть не менее 10-12 (иначе теряется иллюзия непрерывности движения).
*
13.1. Wolfenstein 3-D. Ray Casting
Одной из самых первых серьезных игр для IBM PC, использующей принципы (элементы) виртуальной реальности (не считая различных имитаторов полетов), мойжно считать игру Wolfewstei« 3-D фирмы idSoftware. Эта игра имела огромный успех, и на протяжении длительного времени многие программисты обсуждали, как это можно было сделать. К данному моменту времени все исходные тексты этой игры уже известны, однако их большой объем затрудняет понимание принципов, лежащих в ее основе. Поэтому неудивительно, что мы начнем именно с этой игры.
В W<?lfe«stei« 3-D вся сцена представляет собой прямоугольный лабиринт (вершины стен лежат на прямоугольной сетке, и стены могут быть либо вертикальными, либо горизонтальными) с постоянной высотой пола и потолка. Размер лабиринта (количество клеток) в самой игре был 64x64, однако мы рассмотрим уменьшенный вариант.
Лабиринт задается прямоугольной матрицей, где каждая клетка либо свободна, либо содержит стену с заданной текстурой (рис. 13.1). Можно считать, что лабиринт
13. Элементы виртуальной реальности как бы строится из одинаковых кубиков с текстурированными боковыми гранями. При этом пол и потолок текстуры не имеют.
При этом игрок может свободно перемещаться по всему лабиринту (рис. 13.2), однако высота глаз над уровнем пола все время остается неизменной.