Hardware

Виртуальная реальность

Что такое виртуальная реальность (столь любимая англичанами под названием VR)? В идеале это полная имитация окружающей среды средствами компьютера: звуков, запахов, ощущений и, конечно же, всего, что мы видим. С запахами и ощущениями дело пока обстоит туго, со стереозвуком ситуация получше. Но зрение все равно остается основным источником информации, так что на нем все усилия сосредоточились в первую очередь. А что, собственно говоря, надо, чтобы получить впечатление реальности с помощью компьютера? Посмотрите на монитор. Теперь запустите Quake или Doom и снова посмотрите. Как-то они плосковаты. То есть вроде все как надо, но не хватает объема, не чувствуется расстояние. Вот если бы увидеть все как в реальной жизни, то бишь объемным (или стереоскопическим).

Самое время устроить небольшой экскурс в основы стереоскопического зрения. Мы все видим двумя глазами. Причем, поскольку глаза разнесены в пространстве (находятся по разные стороны переносицы), то один и тот же предмет они видят немного по-разному. И чем ближе к нам этот предмет, тем более по разному они его видят. Мозг интерпретирует полученную картину и оценивает расстояние до объекта. Если перенести изображения для каждого глаза на бумагу, то окажется, что все объекты на рисунке повернуты немного по-разному. Дальние будут выглядеть практически одинаково, для ближних же различие будет заметно сразу (см. рис.).

На эту тему много чего интересного написано у Перельмана в "Занимательной физике", так что я не буду вдаваться в детали. Нам важен один факт - если нарисовать две картинки (по одной для каждого глаза) и смотреть на каждую "своим" глазом, то получится эффект объема. Но на бумаге это делать неудобно. То есть рисовать, конечно, удобно. А вот как разделить глаза? На компьютере для этого есть несколько вариантов.

Во-первых, традиционные разноцветные очки (один глаз синий, другой - красный). Для них надо выводить на экран две картинки. Одна в красных тонах (видимая "красным" глазом), другая в синих. Естественно, картинки для каждого глаза должны рассчитываться отдельно, с учетом расположения точки зрения (то бишь глаза) и перспективы. (В играх это сделать достаточно просто, надо только задать две разных точки зрения и рассчитывать для каждого игрового кадра по две картинки). Затем они накладываются друг на друга (если посмотреть на результат невооруженным взглядом, то получится какое-то размазанное красно-синее мельтешение). В очках же эффект объема вполне отчетливый (правда, темно и не видно зеленого цвета). Кому интересно - такой механизм был реализован в древней игрушке Depth Dwellers (была на одной из первых трех сборок Best Games for IBM PC). Плюс этого метода в том, что можно сразу брать старые очки, красить их маркером и писать программки для иллюстрации стереоэффекта. Ну а недостаток в неправильной передаче цветов и слишком темном изображении.

Во-вторых, поляризационные очки, вроде тех, которые используются в стерео-кино. Один глаз видит один кадр (с правой круговой поляризацией), другой глаз - другой (с левой). В компьютерах этот метод практически не используется, так как неоткуда взять кадры с разными поляризациями. Впрочем, одно (а может и не одно) такое устройство все же существует. Называется оно Zscreen, надевается на монитор и синхронизируется от него же. Один кадр выводится с правой поляризацией, другой с левой. Смотреть на это чудо техники надо в эти самые поляризованные очки. Ну а выводом кадров занимается программа: первый кадр для одного глаза, второй - для другого.

Теперь перейдем к чисто компьютерным примочкам. Самая известная публике - это шлем. Вроде знаменитого VFX1, Cybermaxx или i-glasses. Собственно говоря, шлем - наиболее виртуально реалистичное устройство. Глаза он закрывает полностью, так что ничего, кроме изображения, не видно. Наушники в нем встроенные, поэтому со звуком тоже все в порядке. Еще есть микрофон и специальная штуковина для отслеживания движений головы (называется это headtracking). Headtracking может заменить мышь, джойстик или клавиатуру, которых в шлеме все равно не видно. Впрочем, это тема сложная и заслуживающая отдельного разговора. Что же касатся стереоскопического зрения, то в шлеме его реализовать проще простого: одна картинка подается на один глаз, другая - на другой. Впрочем, это может быть и не стереоизображение, а две абсолютно одинаковых картинки, все зависит от программы. Преимущество шлемов заключается как раз в количестве программ, поскольку их обычно поддерживают в первую очередь. К тому же для шлемов не надо специальных драйверов. Зато недостаток у них тоже весьма существенный - низкое (263x240 на глаз) разрешение жидкокристаллических дисплеев, на которых формируется изображение. Это вам не привычные 800X600, это даже не 320X200.

Существует еще одно обширное семейство устройств. В просторечье они зовутся очками, а по-английски - shutterglasses, то бишь очки с заслонками. Идея здесь вот какая: в каждой линзе таких очков находится слой прозрачного жидкого кристалла. Точнее, прозрачен он в обычном состоянии, а если к нему приложить напряжение, то свет он пропускать сразу перестанет. Дальше все понятно: рисуем на экране картинку для правого глаза, посылаем на очки сигнал закрыть левый глаз, потом наоборот. Метод достаточно простой и действенный. Разрешение картинки такое же, как у монитора (потому что смотрим мы ее на мониторе). Потери цветов и затемнения экрана не происходит, потому что очки в открытом состоянии прозрачные. Есть, правда, и недостатки: при ярком свете видно мигание (flicker), иногда на экране заметна часть иозбражения для другого глаза (ghosting) - это происходит, если очки не очень хорошо синхронизированы со сменой кадров или если люминофор на мониторе слишком долго светится (на LCD-дисплеях стереоэффект вообще не получится). Основной же недостаток очков - разнообразие моделей и недостаток программ. Одни очки, к примеру, синхронизируются от COM или LPT порта, другие - от выхода видеокарты. Третьим нужен дополнительный код на картинке (например, белая линия в последней строке). В общем, сложностей хватает. Но сам по себе подход один из самых удачных.

Представителями этого почетного семейства являются очки CrystalEyes и SimulEyes от фирмы Stereographics (www.stereographics.com). Первые выпускаются в основном для серьезных рабочих станций (Silicon Graphics и Sun) и поддерживают, соответственно, серьезные приложения - всяческие системы автоматического проектирования, GIS, молекулярную химию и Duke Nukem 3D (удивительно). Вторые - наоборот, предназначены для PC и развлечений, список поддерживаемых игр прилагается: Shattered Steel, Descent 2 и Descent просто (но с патчем), Whiplash, Slipstream, ZAR, Madspace, Rise of the Triad и Wolf 3D (стерео вроде бы включается кнопкой F7?). Кстати, именно этими очками пользовались в NASA при обработке данных с марсианского Pathfinder'а. В общем, идея стереозрения в компьютере сама по себе хороша. Но вот с поддержкой туго, хоть тенденции в будущем просматриваются (ZAR и Madspace). Впрочем, Descent 2 - это уже неплохо. Но самое интересное (для владельцев очков, если таковые имеются среди читателей), под них можно приручить Quake. С чем вас и поздравляю. Кого все это заинтересовало, по адресу http://ourworld.compuserve.com/homepages/bungert/ имеется масса ценной информации и куча ссылок.

Константин АФАНАСЬЕВ,
AKG_Monster@usa.net

 

Приручение кваки

Quake - безусловно, самая подходящая игра для стерео. Все трехмерное, монстры полигональные, разрешение хоть 1200х1000 - чего еще желать. Поддержки вот только не сделано, точнее, не было сделано. Сперва для H3D, а потом и для всех очков, совместимых с LCDBios (то есть для всех, кроме Simuleyes). А совсем потом и для Simuleyes. Во-первых, нужен Quake версии 1.08 (легко поднять патчами с любой версии) для DOS или Quake для Windows. Во-вторых, нужны LCDBios (www-personal.engin.umich.edu/~dsawdai/) и стерео патчи.

Драйверы и патчи для H3D есть на их сайте (www.h3d-media.com). А вот для остальных надо программку под названием MPM3DB (искать по адресу www.digicash.com/~marius/) - она делает из обычной кваки стереоскопическую. Для Simuleyes нужна другая программка (Qlcd где-то по адресу Geocities.com/siliconvalley/way/1280/qlcd.zip). Еще нужно предварительно запустить univbe (бывает практически со всем VESA'вскими игрушками). И все будет работать. В самом Quake стерео включается командами консоли LCD_X x и LCD_YAW x (x лучше задавать от 1 до 3, впрочем, каждый должен подбирать сам). Лучший видеорежим 640X480: и монстры, как живые, и не тормозит. Впечатление отвальное, особено когда из экрана высовывается окровавленная бензопила. Очень рекомендую.

С WinQuake я не экспериментировал, но он тоже поддерживает разные очки. Подробности смотрите на ourworld.compuserve.com/homepages/bungert/. Кстати говоря, Hexen 2 работает на том же движке, поэтому в нем наверняка тоже можно включить стереорежим. Да и Quake 2 он, возможно, пока где-то прячется.