ObjectTrackingManager

Object Tracking Manager

The ObjectTrackingManager enables tracking of real-world objects with the MultiSet Quest SDK. It captures an image from the Quest passthrough camera, sends it to the MultiSet backend for analysis against your specified object codes, and aligns a digital container under the objectSpace GameObject with the position and orientation of the detected object.

Description

This manager detects and tracks real-world objects that have been pre-configured in the MultiSet system for Object Tracking. You can track up to 10 objects by providing their object codes. Each query returns the matched object code in the response, and the manager creates (or reuses) a child GameObject under objectSpace named after that code, so content for each tracked object stays separate.

The manager supports automatic tracking after authentication, periodic background tracking to keep poses fresh, silent retry of the first request, and confidence-based validation of results. Camera frames are supplied by a frame capture provider, which must be set via Initialize() before tracking can run on the device. In the Unity Editor, the manager falls back to simulation data for testing.

A set of UnityEvent callbacks lets other scripts react to each stage of the tracking process, and a C# event provides the full tracking response.

Properties

This section details the publicly accessible fields of the ObjectTrackingManager that can be configured in the Unity Editor or via script.

Property
Type
Description

objectSpace

GameObject

Assigned in the Inspector. The root GameObject for tracked content. Each tracked object gets its own child container, named after its object code, whose pose is updated on a successful track.

objectCodes

string[]

The object codes to track. A maximum of 10 codes is allowed. Object codes are obtained from the MultiSet developer portal. The response identifies which of the provided objects was matched.

autoTracking

bool

If set to true, the manager will automatically attempt to start the tracking process as soon as the SDK is authenticated.

backgroundTracking

bool

When enabled, the manager will periodically send tracking requests in the background to keep the tracked object's pose up to date.

bgTrackingDuration

float

The time interval in seconds between background tracking attempts. The value is clamped between 5 and 30 seconds (default: 15).

restartTracking

bool

If enabled, the manager will automatically try to re-track the object after AR tracking is lost.

confidenceCheck

bool

When enabled, a tracking result is accepted only if its confidence score is above _confidenceThreshold. Enabled by default.

_confidenceThreshold

float

The minimum confidence score required for a tracking result to be considered valid when confidenceCheck is enabled. The value is clamped between 0.2 and 0.8 (default: 0.3).

firstTrackingUntilSuccess

bool

If enabled, the first tracking request retries silently until it succeeds, without showing failure messages.

ObjectTrackingInit

UnityEvent

Invoked when the tracking process is initiated by calling StartObjectTracking().

ObjectTrackingRequested

UnityEvent

Invoked just before the captured image is sent to the MultiSet API.

ObjectTrackingSuccess

UnityEvent

Invoked when an object is successfully tracked and the pose has been applied to its container under objectSpace.

ObjectTrackingFailure

UnityEvent

Invoked when the tracking process fails (e.g., the object was not found in the frame or a network error occurred).

OnTrackingWithResponse

event Action<ObjectTrackingResponse>

C# event that provides the detailed tracking response, including the matched object code. Subscribe to this from script to access the full response data.


Methods

This section describes the publicly accessible methods of the ObjectTrackingManager.

Initialize(IFrameCaptureProvider frameCaptureProvider)

Sets the frame capture provider used to grab passthrough camera frames.

Declaration

Description The manager needs a frame capture provider before it can capture images on the device. Call this once during scene setup, passing the provider that wraps the Quest passthrough camera. The sample scenes show this wiring.

StartObjectTracking()

Manually initiates the object tracking process.

Declaration

Description Calling this method captures a frame from the passthrough camera and sends it to the MultiSet API along with your object codes. This is the primary method to call if you have autoTracking disabled and want to trigger tracking based on a specific event or user action. If a tracking request is already in progress, the call is ignored.

Last updated

Was this helpful?