There are some situations where developers may want to have tighter control over which Fusion Provider is used by the Vuforia Engine. The Following APIs are available to change the priority order of the Fusion Providers.
DeviceTracker.FusionMode in Unity) API takes a bitwise combination of the values as described below.
Feature based optimized settings
FUSION_OPTIMIZE_MODEL_TARGETS_AND_SMART_TERRAIN - This is the default setting and should be used for most use-cases requiring Positional Device Tracker for Ground Plane and to enable best-in-class Extended Tracking for Model Targets.
FUSION_OPTIMIZE_IMAGE_TARGETS_AND_VUMARKS - This setting is recommended for experiences that require Extended Tracking support for ImageTargets and VuMark-based use cases. This setting prioritizes platform enablers (such as ARKit and ARCore) and visual SLAM to provide stable augmentations with good recovery characteristics.
Fully automated provider selection
FUSION_PROVIDER_ALL - Vuforia Engine will select the best Fusion provider automatically. This is the default setting
FUSION_OPTIMIZE_MODEL_TARGETS_AND_SMART_TERRAIN - should be used for most use-cases requiring Positional Device Tracker. Fusion Providers are prioritized as described above (platform enablers first, next is VIO then SLAM).
Enforcement of specific provider
FUSION_PROVIDER_PLATFORM_SENSOR_FUSION - Forces only platform enablers such as ARKit and ARCore. If none is available
Vuforia::init() will fail.
FUSION_PROVIDER_VUFORIA_SENSOR_FUSION - Forces only Vuforia sensor fusion (VIO) technology only. If device was not calibrated by Vuforia, the
Vuforia::init() call will fail.
FUSION_PROVIDER_VUFORIA_VISION_ONLY - Forces visual SLAM technology only without the use of sensors. Shall succeed on all devices, performance identical to Extended Tracking behavior in Vuforia SDK versions prior to SDK 7.0.
In cases where the parameter flag does not modify the
FUSION_PROVIDER_PLATFORM_SENSOR_FUSION bitwise value, the
setAllowedFusionProvider can be set after Vuforia Engine Initializes but before any Trackers are initialized. In cases where the flag does modify
setAllowedFusionProvider must be set before Vuforia initializes.
In the situation where you need to determine what is the current active Fusion provider, use the
VuforiaRuntimeUtilities.GetActiveFusionProvider() in Unity) function. This call returns a specific value indicating what Fusion provider is being actively used by the Vuforia Engine. The return value is one of the listed items under 'Enforcement of specific provider'.