Driver Framework

The Vuforia Engine Driver Framework allows developers to provide and consume data from external systems through Vuforia Engine.

Developers provide external data to Vuforia through the use of a driver. Application developers can then access and consume external systems through the Driver Framework. Driver developers can choose to distribute their driver to other application developers to take advantage of external systems.

The Driver Framework provides access to an External Camera and External Device Tracker features. The External Camera feature defines how an external system can provide image data to Vuforia Engine. For example, the File Driver takes an MP4 video sequence stored on a device and makes it available to the Vuforia Engine. The External Device Tracker defines how an external system can provide device pose data to Vuforia Engine. The File Driver then takes the sequence of device poses stored on a device and makes it available to the Vuforia Engine.

Creating Vuforia Engine Drivers

Developers are able to define their own Vuforia Engine Driver to provide external data to the Vuforia Engine. For instance, manufacturers that want to provide access to a USB or a Bluetooth camera can create their own driver so that Vuforia Engine developers can take advantage of their hardware. The Vuforia Engine Driver framework also allows developers to pull image frames from other locations such as video or image files, as well as device poses stored locally or remotely.

The Vuforia Engine Driver must be written in C/C++ and implemented as a standalone dynamic library (.dll file, .so file or iOS framework) which Vuforia Engine loads at runtime. For more information on how to create a driver, please refer to Creating a Custom Driver.

Additionally, Vuforia Engine can also be enabled on custom devices such as eyewear devices by using your created Vuforia Driver. By adding the Vuforia Driver to your custom device, the Vuforia Engine will be able to receive the pose and sensory data and the camera frames from OEMs with custom hardware. See Vuforia Support for Custom Devices using Vuforia Driver

Using Vuforia Engine Drivers

Developers that want to access external systems through a driver need to specify the driver before initializing Vuforia Engine. Once Vuforia Engine is initialized with a driver, Engine continues to behave like it’s using a built-in camera. Authoring applications and experiences are similar to authoring an application using the built-in camera.

Note: When using the Driver Framework, it is strongly recommended that developers use a license key generated after April 10, 2018. Refer to the License Manager page in the developer portal to generate new keys.

Using Recordings and Vuforia Session Recorder API

In some situations, using a recording to play back a Vuforia session can be helpful for developing and collecting data to modify and tweak some aspect of the AR application. In addition, a recording allows developers to replay a tracking experience on a Vuforia Target that is not available in their development environment. 

Vuforia Engine supports recording through the Session Recording API. Please refer to the Recording and Playback article for more details. 

For more information on playing back a recorded session, see the following articles:

Supported Platforms

The Driver Framework currently supports Android, iOS and Universal Windows Platform (UWP) hand-held devices. In addition to traditional phones and tablets, the Driver Framework also supports Qualcomm’s Dragonboard 410c running Android.

Developers can take advantage of Driver Framework through native platforms (Java for Android and C++ for UWP) or they can create applications using C# in Unity.
Note: Play mode in Unity does not load Vuforia Drivers.

Learn More

XML Format of Frame and Pose Sequence File

External Camera

Creating a Custom Driver

Building and Using the File Driver Sample

Building and Using the UVC Driver Sample

External Camera Calibration

Vuforia Support for Custom Devices using Vuforia Driver

Can this page be better?
Share your feedback via our issue tracker