Component overview

CameraPoseMethod

This module is responsible for synchronizing virtual camera in 3d space with the actual device camera position and rotation in real world. It supports running multiple implementations of the actual camera position updater. This means that you can select more than one Installer of this service in ARTV Configuration Window. Upon initialization, supported updaters will be sorted by pre-defined priority and one with the highest value will actually be used to synchronize cameras. In case if an updater with higher priority takes more time to initialize, it will be used as soon as it is ready, hot-swapping the current implementation.

CameraPoseDriver

The CameraPoseDriver is orchestrating different implementations of CameraPoseMethods.

It has a single field exposed for use:

ARCamera

This is the place where you can specifically set the camera to be used for augmentation. It will use Camera.main if no value is provided by the user.

CameraStream

Its job is to get the actual image from the device’s camera for further recognition and manipulation inside ScreenBoundsDetector module. Unlike the previous object, CameraStream only supports a single active implementation at a time. There are no public configurations available for this module.

ScreenBoundsDetector

This class detects the corners of a screen (like from a television or computer screen) in the image obtained by CameraStream. Which further allows to crop the recognizable part out of the camera feed and perform frame matching routine.

VideoInfoRetriever

Here’s where all the magic happens. This module recognizes video from device camera stream and instantiates corresponding user content defined in FrameContentPrefabsMap configuration file. Within this module synchronizable content behaviour (i.e. user content) is being handled.

TimelineContentSynchronizationRegistry

Every TimelineContentSynchronization component registers here. There is an internal TimelineContentSynchronizationOperator object that is switching user content on and off based on current frame value of the recognized video provided by VideoInfoPresenter.

There are two fields available on this component:

  • Acceptable Backward Frame Jump Source

  • Acceptable Forward Frame Jump Source

These define acceptable margins of inherent VideoInfoPresenter’s current frame deviation. If these boundaries are exceeded – all synchronizable content gets forcibly synchronized by the system.

VideoInfoPresenter

This module provides video recognition capabilities. There are a few events exposed that users can subscribe to:

OnVideoRecognized Invokes when video gets recognized. ContentInstantiator module is internally subscribed to this event in order to spawn user content according to ContentPrefabsMap file mappings.

It can provide current video name when it is recognized as well as current frame value that is being used within TimelineContentSynchronizationRegistry routine.

ContentInstantiator

Once the video gets recognized by VideoInfoPresenter, this module instantiates user content based on prefab key defined in ContentPrefabMap configuration file.

  • Load Content Async Defines if user content should be loaded in asynchronous manner.

  • Content Parent This is a parent game object where user content will be instantiated when video gets recognized.

  • Content Prefabs Map This file maps user prefabs to prefab keys in order to spawn appropriate content when certain video gets recognized.