Виртуальные туры в узком смысле являются симуляцией существующей локации, которая состоит из последовательности видео- или фото-фрагментов. Они так же могут включать в себя и другие разнообразные мультимедийные элементы: звуковые эффекты, музыку или текст. Однако в более широком смысле, виртуальные туры могут быть отображением любого, даже несуществующего трехмерного пространства на экране.
В случае использования видео фрагментов как источника, осуществляется полное видео движения по локации. Если используются сферические панорамные снимки, то съемка часто производится с помощью одной камеры, которая делает оборот вокруг себя, в каждой обозначенной для съемки точке. В данном случае, чтобы получился полноценный виртуальный тур, нужно соединить панорамные снимки ссылками-переходами, которые называются хотспотами. Так же виртуальные туры могут быть организованы в смоделированных в 3D-движках локациях, как например это происходит в компьютерных играх.
Таким образом, в общем случае, виртуальный тур для наблюдателя является коллекцией сферических панорам, которые связаны между собой с помощью переходов, по которым можно переходить с одной панорамы на другую, и могут включать в себя интерактивные маркеры (например, поясняющий информативный текст).
Виртуальные туры позволяют нестандартным образом представить некоторую локацию, или возможно услугу, таким образом являясь мощным инструментом привлечения внимания, так как у наблюдателя создается так называемый «эффект присутствия». Так же появляется возможность виртуально посетить разнообразные локации в период, когда невозможно посетить их реальные прототипы, например в период карантина, реконструкции или же после уничтожения локации (в случае, если была проведена предварительная съемка).
Наиболее известными каждому пользователю русскоязычного сегмента сети Интернет сервисами с виртуальными турами являются включенные в сервисы карт Яндекс.Панорамы и Google Street View. Данные сервисы включают в себя панорамные туры по дорогам различных городов и стран и насчитывают огромное количество панорам. Также сервисы позволяют пользователям загружать панорамные снимки интерьеров каких-либо зданий. Также эти сервисы предоставляют API для использования плеера панорам и создания собственных туров по существующим, а также по пользовательским панорамам.
Кроме этих двух сервисов существуют различные менее известные онлайн-сервисы, а также программное обеспечение для создания виртуальных туров. Во многих онлайн-сервисах используется API Google и Яндекс, в некоторых используются собственные технологии или менее популярные API.
Большинство сервисов предоставляет возможность просмотреть панорамы не с помощью переходов на соседнюю точку локации, а просто в качестве списка панорам. Некоторые сервисы предоставляют возможность заказать не только создание тура из панорамных снимков, но и проведение съемки объекта. Одним из таких сервисов является Ajax Tour.
Другой класс сервисов предлагает пользователям загрузить существующие у пользователя панорамные снимки и вручную задать ссылки-переходы между ними. Установка ссылок-переходов осуществляется средствами визуального редактора на сайте сервиса. Основным недостатком таких сервисов является именно ручная обработка каждого фото, так как это усложняет работу с турами, в которых большое количество панорам.
API (application programming interface) — компьютерный интерфейс, который позволяет осуществлять взаимодействие между множеством программных модулей. В нем определяются типы взаимодействий, их порядок, форматы используемых данных и т. д. В веб-разработке это обычно набор HTTP-запросов, наряду с определением структуры ответных сообщений посредством форматов XML или JSON. Такие интерфейсы могут использоваться для разработки отдельных модулей или программных продуктов, которым необходимо использовать функционал самостоятельных сервисов.
Примером может служить API Яндекс.Карт, который позволяет использовать картографические данные и технологии Яндекс в собственных проектах. В зависимости от необходимых функций Яндекс предоставляет гибкий набор тарифных планов, а также возможность бесплатного использования API. Документация по API Яндекс.Карт предоставляет подробное описание большинства реализованных в последней версии методов с примерами использования и постоянно дополняется по мере обновления API. Для того, чтобы воспользоваться API Яндекс.Карт необходимо предварительно получить платный или бесплатный API-ключ в Кабинете Разработчика.
Для работы с панорамами в API Яндекс.Карт предусмотрены классы для основных объектов: Panorama, panorama.Player, panorama.Manager; а также интерфейсы: IPanorama, IPanoramaConnectionArrow, IPanoramaMarker и другие.
Класс Panorama расширяет интерфейс IPanorama и описывает объект панорамы. Для добавления панорамы на страницу также можно воспользоваться методом panorama.createPlayer. Этот метод ищет ближайшую панораму и в случае успеха создает плеер с найденной панорамой.
Класс panorama.Player предназначен для создания и управления плеером панорам. В обязательных параметрах задаются HTML-элемент, в котором будет размещен плеер, а также панорама, которая будет открыта в созданном плеере. Также в параметрах можно задать направление взгляда, поле обзора, набор контролов управления плеером.
Класс panorama.Manager описывает менеджер привязанного к карте плеера панорам. Конструктор класса panorama.Manager скрыт, так как данный класс не предназначен для самостоятельной инициализации. Класс позволяет управлять событиями, возникающими при использовании плеера.
Интерфейс IPanorama имеет следующие основные методы:
– getAngularBBox() — Возвращает сферические координаты, которые задают на панорамной сфере область, занимаемую изображением
– getConnectionArrows() — Возвращает массив связей панорамы.
– getConnectionMarkers() — Возвращает массив маркеров-переходов на панораме.
– getMarkers() — Возвращает массив маркеров на панораме.
– getPosition() — Возвращает положение панорамы в указанной в опциях системе координат, в зависимости от системы и порядка координат.
– getTileSize() — Возвращает размер тайлов, на которые нарезано панорамное изображение.
– getTileLevels() — Возвращает массив уровней масштабирования панорамного изображения.
– getName() — Возвращает название панорамы, отображаемое плеером в интерфейсе.
Интерфейс IPanoramaConnectionArrow описывает связь, которая отображается на панораме в виде интерактивной стрелки. Этот интерфейс имеет следующие методы:
– getConnectedPanorama() — Возвращает Promise объект, который будет разрешен объектом связанной панорамы, или отклонен с ошибкой.
– getDirection() — Возвращает направление на панораму, на которую указывает связь из текущей панорамы.
– getPanorama() — Возвращает панораму, которой принадлежит связь.
Интерфейс IPanoramaMarker позволяет описывать маркеры на панораме и имеет следующие методы:
– getIconSet() — Возвращает Promise, который будет разрешен объектом, реализующим интерфейс IPanoramaMarkerIconSet и содержащим изображения всех состояний маркера.
– getPanorama() — Возвращает панораму, к которой принадлежит маркер.
– getPosition() — Возвращает положение маркера в системе координат панорамы, которой принадлежит содержащий узел граф.
В песочнице API Яндекс.Карт есть множество базовых примеров использования API, которые помогут разобраться в функционировании API и начать разрабатывать собственное приложение. Для того, чтобы отобразить панорамный тур и создать в нем несколько переходов достаточно создать объект, содержащий данные нескольких связанных панорам. Переходы можно задать как с помощью стандартных стрелок, так и маркеров. Далее реализовать функции для извлечения данных нужной панорамы из созданного объекта, а также для загрузки изображения маркера с сервера. Затем нужно создать класс описывающий переход между панорамами по стандартной стрелке, а также реализовать метод getConnectedPanorama, чтобы по клику на маркер осуществлялся переход на другую панораму. Также потребуется унаследовать собственный класс описания панорамы и реализовать методы getConnectionArrows, getConnectionMarkers и некоторые другие для добавления стрелок-переходов, маркеров и т. д. В конце необходимо задать плееру панораму, с которой будет начинаться виртуальный тур.
На основе API Яндекс.Карт был разработан сервис для автоматизированного создания виртуальных туров. Данный сервис имеет преимущество перед ранее упомянутыми сервисами создания панорамных туров в том, что переходы между панорамами генерируются автоматически, что позволит создавать виртуальные туры с большим количеством панорам без наличия навыков программирования. Необходимая метаинформация о панорамных снимках будет указываться во время съемки локации фотографом, что позволит приблизить процесс создания виртуальных туров в помещениях к процессу, используемому компанией Яндекс и ее партнерами при съемке улиц и городов. Пример работы сервиса изображен на рис.1.
Рис.1. Виртуальный тур в реализованном веб-сервисе
Мы проанализировали различные варианты представления и создания виртуальных туров посредством различных технологий, рассмотрели основные возможности API Яндекс.Карт, а также создали веб-сервис для автоматического создания виртуальных туров с его использованием.
Литература:
- AJAXTOUR виртуальные экскурсии и 3D туры [Электронный ресурс]. — https://ajaxtour.ru/
- Виртуальные 3D туры просто — Сферика.рф [Электронный ресурс]. — https://sferika.ru/
- Справочник Yandex JS API [Электронный ресурс]. — https://tech.yandex.ru/maps/jsapi/doc/2.1/ref/concepts/About-docpage/