Image Tracking
Overview
Image tracking enables devices to recognize specific images on surfaces (such as posters, playing cards, or digital displays). You can use image tracking to locate images in the user's environment and overlay them with virtual content. For example, applications can leverage image tracking to detect specific images and provide users with on-screen experiences like 3D product visualizations.
Requirements
- Requires Play For Dream MR device
- OS version 3.1.0 or higher
Configuring Reference Image Gallery
Creating Image Tracking Library
Create a ToTrackImagesCollectionSO
resource under Assets\XR\Resources\
This creates an image tracking library where you can add images for recognition.
Adding Images to Library
- Import images into the project via
Assets > Import New Asset
- Add images to the reference library:
- Open
ToTrackImagesCollectionSO.asset
in the Inspector window - Click Add new image to add tracking images
- Configure image information
- Open
Configuring Tracked Images
Configure settings in the Inspector window after adding images:
Property | Description |
---|---|
Image Id | Runtime identifier for detected reference images (string) |
Image | Texture2D resource created from reference image file |
Size | Physical display size of tracked image (in meters) |
Image File Path | Path to reference image |
Image Tracking Management
Enable/Disable Image Tracking
// Toggle image tracking functionality
ImageTrackingMgr.instance.SwitchImageTracking(true);
Parameters:
Name | Type | Description |
---|---|---|
enable | bool | true : Enable trackingfalse : Disable tracking |
Register All Configured Image Templates
ImageTrackingMgr.instance.RegisterTrackImageLibrary();
Register Global Tracking Callback (All Images)
ImageTrackingMgr.instance.RegisterImageTrackingUpdateCallback(OnImageTrackingUpdate);
private void OnImageTrackingUpdate(TrackedImageInfo info){}
Parameters:
Name | Type | Description |
---|---|---|
callback | Action |
Tracking update callback |
Unregister Global Callback
ImageTrackingMgr.instance.UnRegisterImageTrackingUpdateCallback(OnImageTrackingUpdate);
Parameters:
Name | Type | Description |
---|---|---|
callback | Action |
Callback to remove |
Register Image-Specific Callback
ImageTrackingMgr.instance.RegisterImageTrackingUpdateCallback("targetImage", OnImageTrackingUpdate);
private void OnImageTrackingUpdate(TrackedImageInfo info){}
Parameters:
Name | Type | Description |
---|---|---|
imageId | string | Target image ID |
callback | Action |
Tracking callback for this image |
Unregister Image-Specific Callback
ImageTrackingMgr.instance.UnRegisterImageTrackingUpdateCallback("targetImage", OnImageTrackingUpdate);
Parameters:
Name | Type | Description |
---|---|---|
imageId | string | Target image ID |
callback | Action |
Callback to remove |
Unregister Image Template
// Uses Image Id from ToTrackImagesCollectionSO resource
ImageTrackingMgr.instance.UnRegisterImageTemplate("targetImage");
Parameters:
Name | Type | Description |
---|---|---|
imageId | string | Image ID to unregister |
Usage Example
// Enable VST
YVRManager.instance.hmdManager.SetPassthrough(true);
// Register All Configured Image Templates
ImageTrackingMgr.instance.RegisterTrackImageLibrary();
// Register global callback
ImageTrackingMgr.instance.RegisterImageTrackingUpdateCallback(OnImageTracked);
// Register image-specific callback
ImageTrackingMgr.instance.RegisterImageTrackingUpdateCallback("targetImage", OnTargetTracked);
// Enable tracking
ImageTrackingMgr.instance.SwitchImageTracking(true);
void OnImageTracked(TrackedImageInfo info)
{
Debug.Log($"Tracked image: {info.imageId}");
}
void OnTargetTracked(TrackedImageInfo info)
{
Debug.Log($"Specific image position: {info.pose.position}");
}