Обзор нескольких способов представления сферических панорам


Год назад в статье, посвященной съемке сферических панорам, я демонстрировал панорамы, полученные с помощью классической программы Хельмута Дерша PTViewer. А на локальной машине предлагал рассматривать панорамы с помощью программы Panini.

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

Сегодня существует около десятка программ для просмотра и представления в интернете сферических панорам. Как работают основные из них при показе одной и той же панорамы, можно посмотреть вот на этом сайте. Как видно из приведенной на этом сайте таблицы, чаще всего используются три метода представления панорам: это проигрыватель, основанный на технологии Java, проигрыватель, основанный на технологии Flash, и проигрыватель, основанный на технологии QuickTime. Проигрыватель, основанный на технологии Apple QuickTime, я рассматривать не буду, поскольку его невозможно использовать на моей машине, работающей на ОС Linux. Проигрыватели, основанные на Java, мало отличаются по функциональности от вышеупомянутого PTViewer, сегодняшняя же статья будет посвящена показу панорам с помощью технологии Flash. Основанных на этой технологии проигрывателей довольно много, большая часть из них коммерческие. На мой взгляд, функционально они не сильно превосходят программы с открытым исходным кодом, и их основное преимущество, за которое, возможно, и стоит заплатить, это наличие интерфейса для создания собственных проектов. Другими словами, в них вы потратите меньше времени, чтобы создать свою первую презентацию сферической панорамы в интернете, чем если будете использовать свободные программы. Если же делать серьезный проект с множеством панорам и развитой интерактивностью, то время на изучение проприетарных и свободных программ становится сопоставимым. Для создания же простейшей презентации для одной панорамы есть и очень простые открытые проекты. С них и начнем.

pan0 — open-source, Flash 9 based panorama player

Проект pan0

Поскольку после сшивки панорамы в программе hugin мы получаем панорамы в эквидистантной проекции, то самым простым способом выложить ее в интернете без дополнительных преобразований является открытый проект Pan0. Скачиваем swf-файл, вставляем в свою html-страницу нижеприведенный кусок кода, прописываем в двух местах название файла со своей панорамой. Все.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
width="100%" height="100%" title="Hello, Panorama">
<param name="allowFullScreen" value="true" />
<param name="movie" value="pan0.swf?panoSrc=pano.jpg" />
<param name="quality" value="high" />
<param name="BGCOLOR" value="#AAAAAA" />
<embed src="pan0.swf?panoSrc=pano.jpg" allowFullScreen="true"
width="100%" height="100%" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" bgcolor="#DDDDDD">
</embed>
</object>

Можно смотреть на локальной машине или выкладывать на сервер. По сравнению с PTViewer плюсом данной программы является масштабируемое окно, однако и здесь есть проблемы с большими файлами. Показ начинается после полной загрузки, и могут возникнуть проблемы с отображением панорам размером больше 8000×4000 пикселей или с файлами больше 6 МБ даже на относительно мощных машинах.

Программа распространяется по лицензии GNU GPL.

CuTy, QTVR viewer based on Flash 10

Проект CuTy

Еще один простой способ представить единственную панораму с помощью Flash. Предварительных телодвижений здесь несколько больше, чем в предыдущем случае, зато потом все очень просто. Скачиваем файлы проекта, скачиваем Adobe Open Source Flex SDK, создаем swf-файл командой:

mxmlc -target-player=10.0.0 -use-network=false CuTy.as

Преобразуем нашу панораму из эквидистантной проекции в формат QTVR (Quicktime Virtual Reality) с помощью, например, программы Panotools-Script командой:

erect2qtvr [options] --erect=mypanorama.tif

Переименовываем swf-файл таким образом, чтобы название до точки совпадало с названием панорамы, — и все, можно смотреть панораму с помощью автономного флеш-плеера или вставлять в html-страницу. Иногда, правда, становятся заметными грани куба, на который разбита панорама.

Программа распространяется по лицензии Creative Commons Attribution version 3.0 или новее.

Проект PanoSalado и его ветки

Проект PanoSalado

Технически сегодня можно получать очень большие панорамы, вплоть до гигантских, например, таких как 26-гигапиксельная панорама Парижа. Может быть сделано также огромное количество связанных между собой панорам, как в проектах Google Street View или Яндекс — Панорамы улиц. Компания Google сегодня позволяет рассматривать сферические панорамы, снятые ее передвижной лабораторией, почти с любой точки ряда столиц европейских государств. Правда, все эти точки лежат на проезжей части, потому как снимались с автомобиля. В проекте Google Art Project можно также детально рассматривать и десятки основных мировых музеев. Из наших пока доступны Эрмитаж и Третьяковская галерея. Проект поражает своим размахом, однако в меньших масштабах такой же и даже лучший результат можно получить и самостоятельно, например, с помощью программы SaladoPlayer. Идея о том, что большие панорамы надо загружать по частям и иметь несколько копий одного и того же изображения с разным разрешением, лежит на поверхности. Подобный прием используется, например, для карт в формате ozf2 в программе OziExplorer. Иногда что-то открытое перепадает и от гигантов программной индустрии. В начале этой статьи мы воспользовались подарком Adobe в виде Open Source Flex SDK, теперь же воспользуемся подарком Microsoft в виде формата Deep Zoom. Для преобразования в этот формат можно воспользоваться программой SaladoConverter. Программа написана на Java, преобразует эквидистантную проекцию в кубическую и создает целую систему папок. Основные папки: _f (от английского front) — передняя грань куба, _b (back) — соответственно, задняя, _d (down ) — нижняя, _u (up) — верхняя, _l (left) — левая, _r (right) — правая. Внутри этих папок, в свою очередь, расположены папки, в которых записано изображение граней куба с разными разрешениями. Причем, когда сторона куба превышает некий заранее заданный параметр, то эта сторона в свою очередь делится на несколько квадратов, для каждого из которых записывается уже свое изображение. Таким образом, при просмотре панорамы мы фактически сразу видим изображение с низким разрешением, которое далее, по мере загрузки, все более и более детализируется. Проигрыватель состоит из swf-файла и ряда дополнительных swf-модулей. Основной html-файл запускает проигрыватель и указывает на xml-файл, содержащий подробное описание панорамы и действий с ней. В этом файле содержатся имена файлов одной или нескольких панорам, месторасположение картинок с кнопками и описание действий, осуществляемых при нажатии на них, расположение стрелок или других картинок, указывающих на переходы между изображениями. С помощью дополнительных модулей может также вызываться навигационное окно, в котором, например, на карте будут нанесены точки съемки панорам, представленных в презентации.

Вышеописанная технология в том или ином виде используется как в проекте Panosalado, так и во многих коммерческих проектах, причем содержание xml-файла, естественно, везде разное. Проект Panosalado зародился в 2007 году, потом возник проект Panosalado2 и в октябре прошлого года от него отпочковалась ветка SaladoPlayer. До недавнего времени основной версией была Salado 0.7, а 16 марта этого года вышла версия SaladoPlayer 1.0. Функционально программы отличаются не очень сильно, так, в SaladoPlayer 1.0 добавилась масштабируемость окна (в обеих версиях можно вызвать, кроме того, полноэкранный режим), однако набор команд кардинально изменился. И файл xml, написанный для версии 0.7, не будет работать с версией 1.0. Разработчики утверждают, что новая версия более стабильна. Вскрытие покажет. Документация на английском довольно полная и хорошо проиллюстрированная примерами. Однако с некоторыми новыми функциями, например, direction, мне не удалось полностью разобраться, и, стоит отметить, мне в новой версии не хватает команды panShift в модуле ImageMap, чтобы сориентировать панораму по сторонам света на карте.

Примеры

Перемещение панорамы во всех программах осуществляется движением мыши при нажатой левой кнопке. Изменение масштаба в программах pan0 и SaladoPlayer — колесом мыши, в программе CuTy — клавишами Shift и Ctrl. Переход в полноэкраный режим в программах pan0 и CuTy — двойным щелчком по панораме, возврат клавишей Esc, в SaladoPlayer — специальной кнопкой в правом нижнем углу экрана.

Смотреть с помощью:
   
фото
Красная площадь
PTViewer

pan0


CuTy

SaladoPlayer 1.0
pan0

CuTy

SaladoPlayer 1.0

Галерею моих панорам с помощью SaladoPlayer 1.0 можно посмотреть здесь.
Панорамы нескольких юрт из Музея кочевой культуры с навигацией между ними можно посмотреть с помощью программы SaladoPlayer 0.7 здесь.




Дополнительно

ВИКТОРИНА TT

Материнские платы какого форм-фактора можно устанавливать в корпус Thermaltake Versa C22 RGB Snow Edition?

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.