Vuforeal Project

Vuforeal Design

To help new and experienced users easily understand and use our Vuforeal plugin, we decided to stick as much as possible to the Vuforia design, while keeping it simple and customizable.

We ended up building our plugin on the same concept of Engine, Targets, Observers, and Observations, but wrapping it with Unreal elements like UAsset, Actor, Components, Blueprints, etc… 

On a high level, using the plugin requires the user to take care of two major parts:

First, regardless of what features they want to use, the user needs to set up and configure the AR session’s core elements, which include the “Vuforia Engine”. 
Second, for each feature they want to use, the user needs to set up and activate the appropriate “Observer” and/or “Target” needed for this feature.

Vuforia Engine in Vuforeal #

We wrapped the “Vuforia Engine” with all the other Vuforia core elements required for starting and managing the AR session, into an Unreal GameInstance Subsystem, and we called it the “Vuforeal Subsystem”. While the Engine Configuration was wrapped in a custom UDataAsset called “VuforealSessionConfig”. 

The Vuforeal Subsystem is responsible for the entire async management of the AR session, it takes care of the setup and configuration process for Starting a new session, pausing and resuming the active session, and also destroying and cleaning up a session.

From the Vuforeal Subsystem, you can call the BP functions like: “Start Vuforeal Session”, “Pause Vuforeal”, “Resume Vuforeal”, and “Destroy Vuforeal”. You can also subscribe to some useful events that notify you of different stages and statuses of the current session.

Observers in Vuforeal #

The actual Vuforia Observer Object was wrapped in an Unreal UObject, and for each ObserverType you’ll get a Vuforeal<Type>Observer (ex: VuforealImageObserver, VuforealCloudObserver, VuforealModelObserver). These observers can be created either via the ObserverFactory (a custom K2Node), or via adding an ActorComponent to your BP Actor; you’ll also get a Vuforeal<Type>ObserverComp for each Vuforia Type (ex: VuforealImageObserverComp, VuforealCloudObserverComp, VuforealModelObserverComp).

Databases in Vuforeal #

In the Vuforeal plugin, we created a new custom UAsset, the “Vuforeal Database Asset”, that allows the user to convert, import, and read the Vuforia (.zip, .dat, and .xml) databases in Unreal Editor. For each Vuforia Database Type, you’ll have a Vuforeal<Type>Database (ex: VuforealImageDatabase, VuforealModelDatabase).

Targets in Vuforeal #

Targets in Vuforia can be obtained and/or configured in different ways depending on the source, the type of the Target, and the associated Database or Observer.

In the Vuforeal plugin, we created multiple custom UAssets, Ustructs, and multiple ways to create and configure a Target.

For example, you can configure Targets using UStructs, you’ll get one UStruct for each Target Type (ex: VuforealImageTargetStruct, VuforealModelTargetStruct, VufoeralCylinderTargetStruct). Or using VuforealTargetConfig UAsset,  you’ll also get one UAsset for each Target Type (ex: VuforealImageTargetConfig, VuforealModelTargetConfig).

Observations In Vuforeal #

In Vuforeal you get all the Vuforia tracking info you need (observations) using getter functions from the VuforealObserver Object.

Powered by BetterDocs