Для AR тура можно написать сценарий, который расширяет интерактивные возможности или привносит игровую составляющую.
Сценарий можно писать на JavaScript, а так же если вы не знакомы с программированием, с помощью "детского" редактора блоков - составляю сценарии буквально по кирпичикам.
Сценарии создаются аналогично сценариям в турах 360, но с небольшими отличиями: в туре 360, отдельные сценарии для каждой панорамы, в AR туре, один набор сценариев на весь тур.
Перед началом работы со сценариями, советуем прочитать руководство по сценариям туров 360 (https://ipano.ru/help/s/stsenarii/).
Редактор блоков
Как пользоваться редактором блоков, написано тут https://ipano.ru/help/redaktor-blokov/
В сценариях AR туров нет блоков, которые нужны для панорам, но есть специальные блоки для AR тура:
Когда найден якорь, делать - срабатывает, когда найден заданный якорь. Например, помещаем туда блок "запустить медиа", выбрав какое нибудь аудио. Теперь, при появлении якоря в камере, будет проиграно аудио.
Когда потерян якорь, делать - аналогично, но когда якорь изчем из поля зрения камеры.
Для якоря видно медиа - включает или выключает определенный якорь в туре. Если выключить, камера больше не будет реагировать на этот якорь и подсказка для этого якоря так же видна не будет.
JavaScript API
Аналогично, общую информацию о JavaScript API можно посмотреть в разделе туров 360 - https://ipano.ru/help/s/api/
В API AR туров нет методовок, которые работать с панорамами 360, но есть свои:
getAnchors()
Возвращает AR-якоря проекта:
const anchors = ipano.getAnchors()
Формат:
[
{
id: 'ar-anchor:12',
pk: 12,
title: 'Якорь',
mode: 'image',
targetIndex: 0,
targetImage: 'https://...',
targetPreview: 'https://...',
latitude: null,
longitude: null,
radius: 20,
tracked: false,
mediaVisible: true,
objects: []
}
]
getAnchor(anchorId)
const anchor = ipano.getAnchor('ar-anchor:12')
const same = ipano.getAnchor(12)
getTrackedAnchors()
Возвращает якоря, которые сейчас найдены AR-трекингом.
const visibleAnchors = ipano.getTrackedAnchors()
getObjects()
Возвращает все AR-объекты.
const objects = ipano.getObjects()
Формат объекта:
{
id: 'ar-object:45',
anchorId: 'ar-anchor:12',
anchorPk: 12,
attachmentPk: 45,
mediaPk: 144,
kind: 'media',
type: 'model3d',
title: 'Rocket',
visible: true,
tracked: false,
position: { x: 0, y: 0, z: 0.01 },
rotation: { x: 0, y: 0, z: 0 },
scale: { x: 1, y: 1, z: 1 },
clickAction: null,
media: {}
}
getCurrentObjects()
В AR возвращает объекты, чьи якоря сейчас отслеживаются.
const current = ipano.getCurrentObjects()
setObjectVisible(objectId, visible)
Скрывает или показывает AR-объект в runtime.
ipano.setObjectVisible('ar-object:45', false)
setAnchorMediaVisible(anchorRef, visible)
В AR скрывает или показывает всё runtime-содержимое якоря: привязанное AR-медиа и подсказку этого якоря.
ipano.setAnchorMediaVisible('ar-anchor:12', false)
ipano.setAnchorMediaVisible(12, true)
updateObject(objectId, patch)
Поддерживаемые поля patch в AR:
visiblepositionrotationscaleclickAction
ipano.updateObject('ar-object:45', {
scale: { x: 1.4, y: 1.4, z: 1.4 },
position: { x: 0, y: 0, z: 0.05 }
})
События:
AR события
prepared
AR-библиотеки и mind bundle подготовлены, стартовая кнопка может запускать сцену.
{
mode: 'image',
hasBundle: true
}
started
Пользователь нажал кнопку запуска AR.
{
mode: 'image'
}
cameraready
AR-сцена загружена после старта.
{
mode: 'image'
}
anchorfound / anchorlost
AR-якорь найден или потерян.
{
id: 'ar-anchor:12',
pk: 12,
title: 'Якорь',
tracked: true,
objects: []
}
objectclick
Клик по AR-объекту.
{
objectId: 'ar-object:45',
action: {}
}