Архивы: по дате | по разделам | по авторам

Псевдовиртуальная псевдореальность

Архив
автор : МИХАИЛ ЛЕБЕДЕВ    10.08.1999

Обзор технологий создания виртуальной реальности для Интернета, и не только для него, был бы неполон без рассмотрения еще одной категории программных средств создания VR. Как упомянул Сергей Кащавцев, все средства создания виртуальной реальности можно подразделить на две категории: языки описания VR (типа рассмотренных ранее 3DML и VRML) и программы для создания псевдо-VR, которые на основе существующих фотографий, видеосъемок или трехмерных сцен просчитывают файл, аналогичный сжатой видеопоследовательности, а после отображают его с помощью программы-плейера.


Наиболее известной технологией подобного рода является одно из ответвлений кросс-платформного стандарта QuickTime, предложенного фирмой Apple, - QuickTimeVR.

QuickTimeVR изнутри

В QuickTimeVR (в дальнейшем - QTVR), как и в VRML, используется идеология графов, однако сам мир строится по совершенно другому принципу. Данные для создания виртуальной реальности хранятся в файле в виде QTVR-мира. Каждый QTVR-мир состоит из одной сцены, в которую может входить один и более узлов. В отличие от VRML, где узлом является объект или их совокупность, в QTVR узел определяется как точка виртуального мира, с которой может быть рассмотрена панорама этого мира, или как объект, принадлежащий этому миру. Узлы бывают двух типов: объектный, представляющий собой описание внешнего вида объекта со всех сторон, и панорамный, описывающий окружающий наблюдателя мир. В первом случае наблюдатель как бы находится вне узла и может рассматривать его снаружи, во втором наблюдатель рассматривает QTVR-узел изнутри.

Каждый узел в QTVR-мире получает уникальный идентификатор, с помощью которого к узлу проводятся все обращения.

Простейший QTVR-мир состоит всего из одного узла - панорамного или объектного. Примеры таких миров можно посмотреть на www.virtualstudio.com.hk/samples.htm. Подобные QTVR-фильмы просто незаменимы, если необходимо дать представление о реальном объекте со всех сторон или воссоздать картину реально существующего мира, поскольку каждый узел может быть получен путем обработки фотографий предмета или места со всех ракурсов.

Если в QTVR-мире более одного узла, то между ними возможно создание связей, позволяющих пользователю переходить от одного узла к другому. Для активизации перехода пользователь должен выбрать мышью активную область узла, представляющую собой часть виртуального мира, описанного этим узлом. Таким образом, например, можно построить виртуальную модель квартиры из нескольких комнат - достаточно создать панорамный узел для каждой отдельной комнаты и обозначить в них участки, соответствующие изображениям дверей, как активную область, позволяющую перейти "в следующую комнату". Кстати, активизация связи может быть проведена как пользователем, так и программно с помощью QTVR-менеджера. Используя его, можно инициировать переходы и между не связанными узлами.

Конструкция узла

Узел является наиболее важным базовым объектом в QTVR-фильме. Я не оговорился, QTVR-файл правильнее называть именно фильмом, поскольку он построен на базе QuiсkTime - технологии, изначально ориентированной на воспроизведение аудио- и видеопоследовательностей. Оба типа узлов составляются из готовых изображений, однако технология их построения разительно отличается.

Объектный узел

Для создания объектного узла необходимо иметь фотографии (или отрендеренные изображения) объекта со всех сторон. Согласно стандарту QTVR, фотографирование объекта проводится сначала в вертикальной плоскости с шагом в 10 градусов. При этом камера как бы облетает объект, вращаясь относительно его центра (см. рис.), - получается 36 фотографий. Затем плоскость движения камеры наклоняется на -10. по вертикали, и операция повторяется. Для полного описания объекта требуется 19х36=684 кадра. Правда, эти значения являются не правилом, а рекомендацией Apple. Вы можете выбрать и другое количество кадров, и больший или меньший шаг движения камеры, а также ограничиться, допустим, описанием объекта лишь с одной стороны.

Полученные кадры рассматриваются как двумерный массив, в котором в строке идут все изображения, полученные при панорамировании камерой при заданном угле наклона, а в столбце - все изображения, полученные при изменении наклона камеры для данного угла панорамирования. Координаты изображения в этом массиве однозначно определяют точку, с которой был снят объект. В файл этот массив записывается уже в виде одномерной последовательности как видеоролик в формате QuickTime, состоящий из отдельных кадров. Обращение к требуемому кадру проводится по тайм-коду, а QTVR-плейер показывает объект с нужной точки, "проматывая" QTVR-фильм вперед и назад до нужной временной точки.

Подобная технология помимо создания собственно трехмерного представления объекта позволяет создавать и разнообразные эффекты. Для каждого вида объекта может быть указан не один кадр, а видеопоследовательность или совокупность отдельных изображений. Это позволяет реагировать на действия пользователя, подменяя изображение в ответ на, скажем, щелчок мыши, а записанная для определенного вида объекта видеопоследовательность позволяет создавать, например, эффект движущегося пламени.

Панорамный узел

Данные для панорамного узла хранятся в виде одного изображения, описывающего всю панораму. Естественно, такое изображение выглядит искаженным. Компенсация этих искажений проводится QTVR-плейером в момент воспроизведения панорамы.

В настоящий момент QTVR поддерживает только цилиндрические панорамы, в которых изображение накладывается на внутреннюю сторону виртуального цилиндра, в центре которого находится наблюдатель. Это создает ряд ограничений для воспроизведения: невозможно создать или просмотреть участки изображения "прямо над головой" или "прямо под ногами", а при рассмотрении панорамы под большим вертикальным углом наклона возникают заметные искажения.

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

Наложение ограничений

Для любого узла могут быть установлены ограничивающие углы просмотра. Это полезно, к примеру, для создания диорам, неполных видов объекта и так далее. Поскольку ограничения могут накладываться и изменяться как при создании узла, так и при его просмотре, возможно использование этих ограничений в качестве интерфейсного элемента для внесения интерактивности. Допустим, при создании с помощью QTVR игрового сюжета можно запретить пользователю просмотр части панорамы до тех пор, пока он не выполнил каких-либо действий.

Создание сцены

После создания всех узлов возможно соединение их в сцену. Построение интерактивной сцены осуществляется очень просто: в каждом узле сцены определяется активная область, при щелчке по которой происходит переход к другому узлу. При этом возможен переход от панорамного узла к объектному, и наоборот. Активные области можно включать и выключать во время просмотра сцены с помощью QTVR Manager. Кроме того, с его же помощью можно осуществлять переходы между несвязанными узлами, переходы в ответ на действия пользователя или по временному интервалу.

QTVR и Интернет

Использование QTVR в сети Интернет в настоящий момент ограничивается малой пропускной способностью каналов. Из-за того, что QTVR-файл несет в себе большой объем графической информации, его размер даже при использовании алгоритмов сжатия редко опускается ниже 300-400К на узел, а для больших сцен 5-6 Мбайт является вполне нормальным средним значением. Для компенсации этого в QTVR, начиная с версии 3.0, была введена возможность поточной подгрузки. Поэтому в объектных узлах просмотр объекта можно начинать после загрузки первого кадра. В панорамных узлах применяется технология показа панорамы с низким разрешением во время подгрузки всего файла панорамы. Помимо этого, разработаны специальные кодеки, обладающие очень высокими коэффициентами сжатия изображений.

Дополнительная информация

Базовая информация по технологии QuckTime в целом и QTVR в частности находится по адресу www.apple.com/quicktime.

Технические материалы по QTVR можно найти на сайте Apple по адресу www.apple.com/quicktime/developers.

Информация о программных пакетах для разработки QTVR - www.apple.com/quicktime/authoring.



Михаил Лебедев - студент четвертого курса РГГУ. Виртуальная реальность - хобби, постепенно переходящее в профессию.



© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.