Optimizing Model Target Tracking

Vuforia provides ways to optimize tracking performance on Model Targets that can be enabled depending on the use cases. By adjusting the tracking mode and motion hint of your Model Target, you can specify the utilization of your AR application’s CPU usage as well as improving the tracking robustness. 

Model Target Motion Hint

Vuforia provides a STATIC motion hint, ideal for tracking stationary objects, that improves Model Target tracking. Setting the Model Target to STATIC optimizes device performance. This is because the tracker does not need to update the trackable position on every frame.

A STATIC setting allows for longer AR experiences and for less powerful devices, especially eyewear, to more efficiently run the application. This setting, however, only provides power savings when device tracker is activated.

The behavior of STATIC differs from ADAPTIVE. STATIC works best with objects that are immobile, such as cars and large machinery. If you expect the object to be moved, select the ADAPTIVE motion hint. Moving an object set to STATIC will likely break the tracking, forcing the user to wait for the object to be recognized again.

In ADAPTIVE mode, Vuforia Engine automatically selects the optimal tracking behavior, depending on the current situation. However, ADAPTIVE does not permit the same power optimizations compared to STATIC mode. As in previous versions, ADAPTIVE still only allows limited motion of Model Targets.

All Model Targets generated before the 8.5 release default to STATIC mode when used in Vuforia Engine 8.5 or newer.

In the Model Target Generator (MTG), the motion hint can be set to STATIC or ADAPTIVE. During the creation of a Model Target database, the MTG stores the value in a .xml dataset file. The motion hint value can be changed later in Unity or native.

To adjust the motion hint value in Unity, change the value in the Model Target GameObject component. For native development, declare the value through an API call.

For each platform, the following articles contain more detail on how to set the motion hint:

Platform Article
Model Target Generator How to Create a Model Target
Unity Introduction to Model Targets in Unity
Native development Model Targets API Overview

Setting Model Target Tracking Mode

A hint can be used to change the tracking mode of Model Targets for different target types. Choose between modes that are optimized for different scenarios. Switch the mode for applications that tracks for example car exteriors or reflective objects where the user will inspect the object from different views. Choosing the right tracking mode can help reduce drifting of the digital content as well as improving the alignment between the Model Target and the real-life object.

The Model Target tracking mode is accessed through MODEL_TARGET_MODE hint. It can be set to MODEL_TARGET_MODE_DEFAULT or MODEL_TARGET_MODE_CARS via the Vuforia::setHint() API natively or in the Unity Editor.

  • The Default mode can be used in many scenarios and will deliver consistent tracking on a broad range of object types.
  • The Cars mode is useful for car exteriors and similar highly reflective large objects. It optimizes the tracking performance to reduce drift in certain situations at the cost of higher CPU load. For optimal performance on cars, we recommend using this mode together with the ADAPTIVE motion hint on more powerful devices.

Setting the Model Target Tracking Mode in Unity

To change the Model Target Tracking Mode, navigate to Vuforia Configuration and click on the dropdown menu for Model Target Tracking Mode. Choose between DEFAULT and CARS depending on your use case.

Vuforia Image

Setting the Model Target Tracking Mode in Native

Use the Vuforia::setHint() API before starting the object tracker to change the Model Target tracking mode.

// initialise ObjectTracker
Vuforia::TrackerManager& trackerManager = Vuforia::TrackerManager::getInstance();
Vuforia::ObjectTracker* tracker = static_cast(trackerManager.initTracker(Vuforia::ObjectTracker::getClassType()));

// set the hint before activating the dataset and/or starting the tracker
Vuforia::setHint(HINT_MODEL_TARGET_MODE, static_cast<int>(MODEL_TARGET_MODE_CARS));

// create and load dataset


tracker->activateDataSet(dataSet);
tracker->start();