Архив 23 мая 2009

Стереокино и стереоигры на компьютере

Иногда считают, что наличие в человеческом организме парных органов – это своего рода “дублирование”. В самом деле, можно жить с одной почкой или одним легким – следовательно, наличие двух “одинаковых” органов нужно для защиты от их отказов. Но все может оказаться несколько сложнее, чем кажется на первый взгляд.

Все животные на Земле имеют по два глаза. Казалось бы, для того, чтобы видеть окружающий мир, достаточно лишь одного светочувствительного органа – но наличие двух глаз позволяет увидеть намного больше за счет стереоскопического эффекта.

vision

И левый, и правый глаз видят очень похожую картинку – но предметы в них сдвинуты чуть-чуть левее или правее. За счет этой разницы та часть мозга, которая отвечает за восприятие изображений, способна делать выводы о том, какое приблизительно расстояние до каждого из предметов на основании информации о том, под каким углом эти предметы видит каждый глаз. Согласитесь, что это очень полезный “бонус”. Он полезен не только “сам по себе” – то, что один предмет ближе другого, можно увидеть и одним глазом, но и помогает быстро сфокусировать взгляд на конкретном предмете.

О существовании стереоэффекта было известно еще в XIX веке. Нельзя сказать, что он не использовался – использовался, да еще как! Например, принцип работы вот такого дальномера (системы Барра и Струда, ЕВПОЧЯ) основан на совмещении двух изображений, наблюдаемых из двух разных точек.

barr-and-stroud

Между прочим, стереоэффект присутствует и в бинокле, позволяя довольно точно оценивать расстояние до наблюдаемых объектов.

Почти одновременно с изобретением фотографии появились и первые стереофотоснимки. Выпускались несложные устройства для просмотра стереопар, а сами стереопары печатались массовыми тиражами.

stereoscope

При просмотре стереоизображений необходимо, чтобы каждый глаз видел только свою картинку. Принцип работы простого стереоскопа очевиден. Более того, многие после некоторой тренировки могут смотреть стереопары и без приборов.

Стереопары, то есть картинки для левого и правого глаза, могут быть параллельными – слева картинка для левого глаза, справа для правого, или перекрестными – слева картинка для правого глаза, справа – для левого. Естественно, что в стереоскопе просматривают параллельные стереопары, перекрестные же стереопары якобы более пригодны для просмотра невооруженным взглядом. Не знаю, так ли это – у меня ни разу не получилось посмотреть перекрестную стереопару. Вообще, просмотр стереопар со скрещиванием глаз – не очень естественная штука, надо одновременно свести взгляд в одной точке и сфокусировать его на точке, в два раза более удаленной. Мозг отказывается вытворять такие извращения.

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

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

В США для демонстрации стереофильмов по телевизору применяется вариант с желтым и темно-синим светофильтрами – так как система NTSC не совсем точно воспроизводит оттенки красного цвета. Кроме того, иногда применяются очки с красным и синим фильтрами.

Достоинство этого метода – в универсальности и дешевизне. Анаглифическая картинка может быть напечатана на бумаге, спроецирована на экран, или быть отображена на дисплее компьютера – во всех этих случаях будет присутствовать стереэффект. Очки с целлулоидными фильтрами стоят очень дешево. Из недостатков – иногда возникает “двоение” объектов, особенно при неправильной цветопередаче или плохих светофильтрах, очки пропускают лишь малую часть света, искажается цветопередача стереоизображения – ярко-красные объекты кажутся почти черными, желтый цвет становится похож на зеленый.

Анаглифический метод применялся и применяется при демонстрации стереофильмов в кинотеатрах. В отличие от поляризационного метода с двумя проекторами, он не предъявлял каких либо особых требований к квалификации персонала кинотеатра. Особенно популярными стереофильмы были в 50-е годы. Кстати, в фильме “Назад в будущее”, точнее, в той его части, где дело происходит в 1955 году, один из персонажей “для прикола” ходит в таких очках, используя их вместо солнцезащитных.

back_to_the_future

Некоторые недостатки анаглифического метода исправлены в системе Dolby 3D, где используются гораздо более качественные многопленочные светофильтры. К сожалению, стоимость очков возрастает на порядок.

Второй метод, применявшийся исключительно в кинотеатрах – использование поляризационных очков. Одна линза пропускала свет с вертикальной поляризацией, другая – с горизонтальной. На металлизированный экран проецировалось изображение с двух проекторов, каждый из которых был оснащен соответствующим фильтром. Требовалась полная синхронизация обоих проекторов, а при исправлении повреждений пленки было необходимо “согласовывать” вырезание кадров на обеих копиях – “левой” и “правой”. Сейчас, правда, выпускаются жидкокристаллические дисплеи, имеющие два набора точек – с вертикальной и горизонтальной поляризацией, но в продаже они практически не встречаются, да и стоимость оставляет желать лучшего.

Наконец, довольно часто для просмотра стереоизображений на экране компьютера используют затворные стереочки. Перед каждым глазом помещена жидкокристаллическая панель, которая может пропускать или не пропускать свет. На экране кадры показываются с удвоенной частотой – для каждого из глаз, при этом соответствующая панель синхронизирована со сменой кадров и открывается только тогда, когда на экране есть изображение для “ее” глаза. Недостаток – необходимость довольно высокой скорости обновления изображения. Если ЭЛТ-мониторы довольно легко обеспечивали частоту кадровой развертки в 120 Гц, что давало довольно приемлемые 60 Гц для стереоизображения, то ЖК-мониторы из-за “инерции” жидких кристаллов для этого сособа неприменимы.

Соответственно, единственным более-менее доступным в “домашних условиях” методом получения стереоэфекта для кино и компьютерных игр (да-да, я расскажу и об этом) остается анаглифический, несмотря на его недостатки. Сначала о том, где достать стереоочки.

Как это не удивительно, но стереоочки найти “в природе” довольно просто. Например, можно купить книжку или журнал с “удивительными 3D-картинками” и пользоваться очками из комплекта. Иногда в кинотеатрах показывают стереофильмы – обычно это детские мультики, типа “Дети шпионов 3D”. Наконец, можно купить анаглифические очки в фирме “СТЭЛ”. Самые распространенные сейчас анаглифические очки – с красным и сине-зеленым (cyan) фильтрами. Их и рекомендую искать. Иногда встречаются очки с красным и синим фильтрами, в изобилии предлагаемые на dealextreme. Их использовать не так удобно – большинство анаглифических фотографий сейчас предназначены для просмотра c очками первого типа.

red-cyan

Так или иначе, очки можно “достать”. Следующий шаг – поиск 3D-”контента”. Рассматривание даже самых высокохудожественных фотоснимков быстро надоедает. Хочется чего-то более интересного. Например, посмотреть кино в стереоформате.

Здесь надо рассказать о том, какие есть форматы у стереокино. Самое простое – кодирование фильма в анаглиф. Достоинство этого способа – можно смотреть любым плеером, недостаток – невозможность просмотра другими методами (а вдруг у кого-то из моих читателей найдется два LCD-проектора и поляризационные фильтры?). Поэтому чаще применяются другие форматы, которые переводятся в анаглиф (или во что угодно) непосредственно во время воспроизведения.

Стереофильм – это обычный avi или vob (в случае DVD) файл, в котором присутствуют два изображения, “смешанные” особым образом (об этом – чуть дальше). Для его просмотра нужен стереоплеер – программа, умеющая восстанавливать левую и правую картинки. Лично мне больше всего нравится iZ3D Movie Player Classic, представляющий собой доработанный Media Player Classic, на его примере я и расскажу о просмотре стереофильмов.

player

Первым делом надо указать, как мы собираемся выводить изображение. В настройках плеера есть закладка “Stereo rendering”, на котрой надо указать тип используемого “дисплея”. У нас это Anaglyph или Optimized anaglyph. Обратите внимание на предупреждение – на закладке Video Output в качестве метода вывода должен быть указан VMR9.

player-options

Теперь достаточно лишь указать то, как в файле видео совмещаются левый и правый ракурсы. Открываем любой файл (например, скачанный отсюда) и в меню File указываем нужный вариант.

player-selection

Эти опции означают следующее:

Monoscopic – никакого преобразования не производится, применяется при просмотре “обычных” видеофайлов

Interlaced – в файле чередуются строки, соответствующие левому и правому изображению, при просмотре обычным плеером это выглядит примерно так:

simpsons-interlace

Side-by-side – перекрестная или параллельная стереопара, ракурсы находятся сбоку друг от друга

Over/under – стереопара, в которой разные ракурсы находятся сверху и снизу

“Галочка” Swap Left/Right позволяет поменять местами левый и правый ракурсы. Если стереоэффекта нет или он “какой-то странный” – попробуйте проверить, не перепутаны ли ракурсы.

К сожалению, ассортимент стереофильмов очень ограничен, и всегда хочется чего-то совсем нового. Не предлагаю снимать свои стереофильмы – это довольно сложно, а вот поиграть в какой-нибудь Counter Strike с анаглиф-режимом – согласитесь, будет довольно интересно.

Стоп! А разве была версия “контры” с поддержкой анаглифа? Нет, не было. Но всем известная фирма nVidia предлагает в качестве “бонуса” к драйверам для своих видеокарт специальные “стереодрайверы”, поддерживающие в числе прочих устройств и анаглифические очки. Фанаты ATi нервно курят в сторонке.

Принцип работы стереодрайвера состоит в расчете двух изображений с точек, смещенных влево и вправо относительно “центральной”. Затем изображения выводятся на экран каким-нибудь способом. Это становится возможным за счет “перехвата” вызовов функций DirectX и OpenGL, осуществляемых на уровне драйвера видеокарты. Соответственно, стереодрайвер будет работать со всеми программами, использующими эти библиотеки (и не будет работать с программами, их не использующими – например, DOS-версиями Doom или какими-нибудь очень примитивными играми).

К сожалению, со стереодрайверами не все так просто. Начиная с некоторого момента, выпуск стереодрайверов был пристановлен, а затем возобновлен – но только для Windows Vista. Соотвественно, “вистоводам” достаточно лишь скачать последние Forceware и стереодрайвер с поддержкой анаглифа.

Пользователям же Windows XP придется извращаться. Надо скачать последние выпущенные стереодрайвера для XP, а затем поизвращаться с реестром. “По умолчанию” панель управления последними Forceware не может показывать настройки стереодрайвера, поэтому придется приводить ее к “классическому” виду. Делает это простой reg-файл:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\NvCplApi\Policies]
"ContextUIPolicy"=dword:00000001
"TaskbarUIPolicy"=dword:00000002
"CplGroupUIPolicy"=dword:00000003

После этого в свойствах дисплея на добавленной драйвером закладке появится вот такое окошко настройки:

detonator

Нас интересует появляющийся после установки стереодрайвера пункт “Настройки стерео”.

stereodriver

Как видно, поддерживается довольно большое количество устройств. Здесь и раздельные VGA-экраны, и поляризованные дисплеи типа iZ3D, и затворные очки всех вариантов, и интересующий нас анаглиф.

После выбора стереоустройства можно пройти “медицинский” тест на возможность стереовосприятия (довольно редко, но все же встречается такой физический недостаток, как отсутствие стереоскопического зрения) и посмотреть на тест от nVidia.

stereotest

В числе прочих настроек – установка “глубины” стереоэффекта, увеличения яркости для стереорежима, и выбор цветов светофильтров – но в этом всем довольно легко разобраться.

Наконец, можно играть во всевозможные игры. Согласитесь, что Mafia в стереорежиме выглядит очень и очень неплохо. Кроме того, я играл в Doom 3, Trackmania и еще некоторое количество разных игр, везде “третье измерение” выглядело просто здорово. Из недостатков стереодрайвера можно отметить возрастающую вдвое нагрузку на видеокарту, и невозможность включить стереоэффект в “свежих” играх (с DirectX 9 или 10) при использовании “старого” стереодрайвера в Windows XP. Висту я ставить не хочу, так что буду ждать Windows Se7en. Кроме того, иногда при попытке перейти из программы со стереорежимом на рабочий стол по Alt+Tab наблюдались вылеты в синий экран, связанные с несовместимостью довольно старого стереодрайвера и довольно свежего Forceware. Впрочем, в “штатных” режимах никаких глюков не наблюдалось.

mafia

На этой оптимистической ноте я и закончу.

Стереофото броненосца “Ретвизан”

Как это не удивительно, но в начале XX века стереофотография была очень популярна. Основным методом получения стереоизображений в те времена было использование раздельных стереопар – на картонной пластинке закреплялись “левый” и “правый” снимки, а просматривалось все это с использованием стереоскопа – несложного прибора, обеспечивавшего просмотр каждой картинки одним глазом.

stereoscope

“Ручной” стереоскоп был изобретен в 1851 году – спустя всего лишь 12 лет после открытия дагерротипии. Снимки делались на специальную двухобъективную камеру, вроде такой (1865 год):

stereocamera

Наверное, в 1904 году один из фотографов, оказавшийся в Порт-Артуре во время японской осады, имел среди прочего фотобарахла подобную камеру, благодаря чему сегодня можно купить, к примеру, на eBay стереопары начала XX века, изображающие, например, команду броненосца “Ретвизан”, или генерала Volkoff вместе с комендантом Stoessel’ем, или даже затопленные в порту броненосцы. Кстати, и в осаждавшей город японской армии тоже был “человек со стереофотоаппаратом”, но об этом – как-нибудь в другой раз.

volkoff

Мне удалось найти одну из этих стереопар – изображающую команду броненосца “Ретвизан” – в большом разрешении, пригодном для просмотра, и конвертировать ее в анаглиф. Этим, собственно, и хочу поделиться.

retvizan