API

Сценарии и API дополненной реальности

Для 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:

  • visible
  • position
  • rotation
  • scale
  • clickAction
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: {}
}