Enable Device Tracking in Unity

Vuforia Engine supports the development of AR experiences that interact with the environment through Device Tracking. Device Tracking provides information about where the device is relative to the world. It enables AR applications that need to place content in the environment or want to provide additional robustness to target tracking in case the target is occluded or not fully in view.

This article describes how to enable and use Device Tracking in Unity. If you are developing an application for native Android or iOS, refer to the Enable Device Tracking in Native article.

Device Tracking in Unity

When creating a new Unity project and importing the Vuforia Engine, Device Tracking is enabled by default in any of your scenes. The Device Pose Behaviour is automatically added to the ARCamera game object. It will enable the Ground Plane and Area Target features and it is recommended for Model Targets. In addition, device tracking enables Extended Tracking for all target types and it is also used to recover tracking from application interrupts as outlined in Vuforia Continued AR Experiences.

Enable/disable the Device Tracker

  1. In the ARCamera GameObject’s Inspector window, click Vuforia Configuration.
    The VuforiaConfiguration Inspector window opens.
  2. Expand the Device Tracker section and toggle the Track Device Pose.
    If you are using a device tracking dependent Vuforia feature, disabling Device Tracking will cause errors.

Use the Tracking Status to enable Extended Tracking for individual targets

Configure the target’s status in the Unity Editor via the Default Observer Event Handler. Choose if the target should render content when it is "Tracked", "Extended Tracked" or also when only a "Limited" pose is available. This allows for per-target configuration of extended tracked poses.

If a trackable is reported with status LIMITED, only an inaccurate pose is available. It should only be taken into consideration if close alignment of virtual content and real-world object is not required.

Please refer to Status Poses and Status Info for more information on handling the status poses and status info

Static Device Tracking

In some scenarios, the device may be statically mounted (e.g. on a tripod) instead of being handheld. Examples include assembly lines where devices are fixed on a stand while providing instructions to the worker. Or it could be a standing tablet that track toys or board games from a single position. In such scenarios, there is a risk that the positional device tracker will not be able to initialize due to lack of device motion. In such use cases, you can set a static hint before initializing the device tracker. The hint will set the device tracker in a static mode that ensures that extended tracking and robustness against occlusions work even when the device is fixed to one position.

    private void Awake()
    {
        VuforiaBehaviour.Instance.DevicePoseBehaviour.SetStaticMode(true);
    }

This hint needs to be set before Vuforia Engine has started. 
In a scene with an ARCamera this is best done by calling this method from an Awake function.

Android specific Device Tracking Settings

When developing a Unity application for Android, enable ARCore on supported devices that have it installed. The following explains the options available in the Android Settings section:

By default, the ARCore Requirement dropdown is set to OPTIONAL. In this mode, Vuforia Engine uses VISLAM or SLAM on devices that do not support ARCore. Set the dropdown to REQUIRED to indicate that the app can only be installed on Android devices that support ARCore. Set the dropdown to DON’T USE to indicate that the app will not use ARCore.

If OPTIONAL or REQUIRED are selected, then ARCore is enabled and Vuforia Engine requires that the ARCore client library is packaged with the application so that ARCore functionality can be accessed at runtime. Select Include ARCore library to automatically include the latest supported library version. This is only supported when using Gradle to build the application.

If Include ARCore library is disabled, then the developer needs to package the ARCore client library with the app by including it in the Plugins/Android folder of the Unity project.

For more information, refer to the Enable ARCore article.