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

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

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

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

pan0 - open-source, Flash 9 based panorama player

Поскольку после сшивки панорамы в программе 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

Еще один простой способ представить единственную панораму с помощью 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 и его ветки

Технически сегодня можно получать очень большие панорамы, вплоть до гигантских, например, таких как 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 можно посмотреть здесь.

13.04.2011
Установите проигрыватель Flash

Облако тегов:
3D печать
Arduino
Raspberry Pi
Аэрофотосъемка
Байдарки
Геомеханика
История
Камеры
Макросъемка
Объективы
Освещение
Панорамы
Принадлежности
Принтеры
Программы
Сканеры
Стереосъемка
Фильтры
Фокусировка
Фотокубики
...
rss