All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Loading...
Searching...
No Matches
Multi-Target Feature

Classes

struct  VuMultiTargetConfig
 Configuration for Multi-Target observer creation. More...
 
struct  VuMultiTargetPartConfig
 Configuration for a Multi-Target part. More...
 
struct  VuMultiTargetPartsConfig
 Configuration for a new Multi-Target from parts. More...
 
struct  VuMultiTargetObservationTargetInfo
 Target info for Multi-Target. More...
 

Typedefs

typedef struct VuMultiTargetPartConfigList_ VuMultiTargetPartConfigList
 Multi-Target part config list.
 
typedef struct VuMultiTargetPart_ VuMultiTargetPart
 Multi-Target part.
 
typedef struct VuMultiTargetPartList_ VuMultiTargetPartList
 Multi-Target part list.
 

Enumerations

enum  VuMultiTargetCreationError : int32_t {
  VU_MULTI_TARGET_CREATION_ERROR_NONE = 0x0 ,
  VU_MULTI_TARGET_CREATION_ERROR_INTERNAL = 0x1 ,
  VU_MULTI_TARGET_CREATION_ERROR_AUTOACTIVATION_FAILED = 0x2 ,
  VU_MULTI_TARGET_CREATION_ERROR_DATABASE_LOAD_ERROR = 0x3 ,
  VU_MULTI_TARGET_CREATION_ERROR_INVALID_TARGET_NAME = 0x4 ,
  VU_MULTI_TARGET_CREATION_ERROR_TARGET_NOT_FOUND ,
  VU_MULTI_TARGET_CREATION_ERROR_ASSEMBLY_ERROR = 0x6
}
 Configuration error for Multi-Target creation. More...
 
enum  VuMultiTargetPartsCreationError : int32_t {
  VU_MULTI_TARGET_PARTS_CREATION_ERROR_NONE = 0x0 ,
  VU_MULTI_TARGET_PARTS_CREATION_ERROR_INTERNAL = 0x1 ,
  VU_MULTI_TARGET_PARTS_CREATION_ERROR_AUTOACTIVATION_FAILED = 0x2 ,
  VU_MULTI_TARGET_PARTS_CREATION_ERROR_DATABASE_LOAD_ERROR = 0x3 ,
  VU_MULTI_TARGET_PARTS_CREATION_ERROR_INVALID_TARGET_NAME = 0x4 ,
  VU_MULTI_TARGET_PARTS_CREATION_ERROR_ASSEMBLY_ERROR ,
  VU_MULTI_TARGET_PARTS_CREATION_ERROR_DATABASE_XML_REQUIRED
}
 Configuration error when creating a Multi-Target from parts. More...
 
enum  VuMultiTargetObservationStatusInfo : int32_t {
  VU_MULTI_TARGET_OBSERVATION_STATUS_INFO_NORMAL ,
  VU_MULTI_TARGET_OBSERVATION_STATUS_INFO_NOT_OBSERVED ,
  VU_MULTI_TARGET_OBSERVATION_STATUS_INFO_RELOCALIZING
}
 Status info for the pose of Multi-Target observations. More...
 
enum  { VU_OBSERVER_MULTI_TARGET_TYPE = 0x3 }
 
enum  { VU_OBSERVATION_MULTI_TARGET_TYPE = 0x3 }
 

Functions

VuMultiTargetConfig vuMultiTargetConfigDefault ()
 Default Multi-Target configuration.
 
VuMultiTargetPartConfig vuMultiTargetPartConfigDefault ()
 Default Multi-Target part configuration.
 
VuMultiTargetPartsConfig vuMultiTargetPartsConfigDefault ()
 Default Multi-Target parts configuration.
 
VuResult vuEngineCreateMultiTargetObserver (VuEngine *engine, VuObserver **observer, const VuMultiTargetConfig *config, VuMultiTargetCreationError *errorCode)
 Create a Multi-Target observer from a database.
 
VuResult vuEngineCreateMultiTargetObserverFromPartsConfig (VuEngine *engine, VuObserver **observer, const VuMultiTargetPartsConfig *config, VuMultiTargetPartsCreationError *errorCode)
 Create a Multi-Target observer from parts.
 
VuResult vuEngineGetMultiTargetObservers (const VuEngine *engine, VuObserverList *observerList)
 Get all Multi-Target observers.
 
VuResult vuMultiTargetObserverGetTargetUniqueId (const VuObserver *observer, const char **targetId)
 Get the unique ID associated to the target from a Multi-Target observer.
 
VuResult vuMultiTargetObserverGetTargetName (const VuObserver *observer, const char **targetName)
 Get the name associated to the target from a Multi-Target observer.
 
VuResult vuMultiTargetObserverGetTargetSize (const VuObserver *observer, VuVector3F *size)
 Get the size in meters associated to the target from a Multi-Target observer.
 
VuResult vuMultiTargetObserverGetAABB (const VuObserver *observer, VuAABB *bbox)
 Get the axis-aligned bounding box associated to the target from a Multi-Target observer, relative to the target's frame of reference.
 
VuResult vuMultiTargetObserverGetTargetPoseOffset (const VuObserver *observer, VuMatrix44F *poseOffset)
 Get the pose transformation offset associated to the target from a Multi-Target observer.
 
VuResult vuMultiTargetObserverSetTargetPoseOffset (VuObserver *observer, const VuMatrix44F *poseOffset)
 Set the pose transformation offset associated to the target from a Multi-Target observer.
 
VuResult vuMultiTargetObserverSetTrackingOptimization (VuObserver *observer, VuTrackingOptimization optimization)
 Set the tracking optimization of the target associated to the Multi-Target observer.
 
VuResult vuMultiTargetObserverGetTrackingOptimization (const VuObserver *observer, VuTrackingOptimization *optimization)
 Get the tracking optimization of the target associated to the Multi-Target observer.
 
VuResult vuStateGetMultiTargetObservations (const VuState *state, VuObservationList *observationList)
 Get all Multi-Target observations.
 
VuResult vuMultiTargetObservationGetStatusInfo (const VuObservation *observation, VuMultiTargetObservationStatusInfo *statusInfo)
 Get status info associated to the pose status of an Multi-Target observation.
 
VuResult vuMultiTargetObservationGetTargetInfo (const VuObservation *observation, VuMultiTargetObservationTargetInfo *targetInfo)
 Get target info associated with Multi-Target observation.
 
VuResult vuMultiTargetPartConfigListCreate (VuMultiTargetPartConfigList **list)
 Create Multi-Target part config list.
 
VuResult vuMultiTargetPartConfigListGetSize (const VuMultiTargetPartConfigList *list, int32_t *listSize)
 Get number of elements in a Multi-Target part config list.
 
VuResult vuMultiTargetPartConfigListGetElement (const VuMultiTargetPartConfigList *list, int32_t element, VuMultiTargetPartConfig *config)
 Get an element in a Multi-Target part config list.
 
VuResult vuMultiTargetPartConfigListAppendElement (VuMultiTargetPartConfigList *list, const VuMultiTargetPartConfig *config)
 Append an element to a Multi-Target part config list.
 
VuResult vuMultiTargetPartConfigListDestroy (VuMultiTargetPartConfigList *list)
 Destroy a Multi-Target part config list.
 
VuResult vuMultiTargetObserverGetParts (const VuObserver *observer, VuMultiTargetPartList *partsList)
 Get a list of all parts of a Multi-Target.
 
VuResult vuMultiTargetObserverAddPart (VuObserver *observer, const VuMultiTargetPartConfig *config)
 Add a part to a Multi-Target.
 
VuResult vuMultiTargetObserverRemovePart (VuObserver *observer, const char *targetName)
 Remove a part from a Multi-Target.
 
VuResult vuMultiTargetPartListCreate (VuMultiTargetPartList **list)
 Create a Multi-Target part list.
 
VuResult vuMultiTargetPartListGetSize (const VuMultiTargetPartList *list, int32_t *listSize)
 Get number of elements in a Multi-Target part list.
 
VuResult vuMultiTargetPartListGetElement (const VuMultiTargetPartList *list, int32_t element, const VuMultiTargetPart **part)
 Get an element in a Multi-Target part list.
 
VuResult vuMultiTargetPartListDestroy (VuMultiTargetPartList *list)
 Destroy a Multi-Target part list.
 
VuResult vuMultiTargetPartGetTargetUniqueId (const VuMultiTargetPart *part, const char **targetId)
 Get the unique ID associated to a Multi-Target part.
 
VuResult vuMultiTargetPartGetTargetName (const VuMultiTargetPart *part, const char **targetName)
 Get the name associated to a Multi-Target part.
 
VuResult vuMultiTargetPartGetTargetSize (const VuMultiTargetPart *part, VuVector2F *size)
 Get the size associated with a Multi-Target part in meters.
 
VuResult vuMultiTargetPartGetTargetPoseOffset (const VuMultiTargetPart *part, VuMatrix44F *poseOffset)
 Get the pose transformation offset associated with a Multi-Target part.
 

Detailed Description

Multi-Targets are a combination of targets, named "parts". They can be created by loading from database using vuEngineCreateMultiTargetObserver() or by creating them at runtime from a list of parts using vuEngineCreateMultiTargetObserverFromPartsConfig() and providing a VuMultiTargetPartsConfig containing a VuMultiTargetPartConfigList. Parts can also be added or removed from an existing Multi-Target with vuMultiTargetObserverAddPart() and vuMultiTargetObserverRemovePart().

Enumeration Type Documentation

◆ VuMultiTargetCreationError

Configuration error for Multi-Target creation.

Enumerator
VU_MULTI_TARGET_CREATION_ERROR_NONE 

No error.

VU_MULTI_TARGET_CREATION_ERROR_INTERNAL 

An internal error occurred while creating the observer.

VU_MULTI_TARGET_CREATION_ERROR_AUTOACTIVATION_FAILED 

Observer auto-activation failed.

VU_MULTI_TARGET_CREATION_ERROR_DATABASE_LOAD_ERROR 

Database file not found or an error occurred when reading data from it (potentially unknown or corrupted file)

VU_MULTI_TARGET_CREATION_ERROR_INVALID_TARGET_NAME 

Invalid target name.

VU_MULTI_TARGET_CREATION_ERROR_TARGET_NOT_FOUND 

Target with the specified name AND matching target type for this observer not found in database.

VU_MULTI_TARGET_CREATION_ERROR_ASSEMBLY_ERROR 

An error occurred while trying to set up the parts that form the Multi-Target.

◆ VuMultiTargetPartsCreationError

Configuration error when creating a Multi-Target from parts.

Enumerator
VU_MULTI_TARGET_PARTS_CREATION_ERROR_NONE 

No error.

VU_MULTI_TARGET_PARTS_CREATION_ERROR_INTERNAL 

An internal error occurred while creating the observer.

VU_MULTI_TARGET_PARTS_CREATION_ERROR_AUTOACTIVATION_FAILED 

Observer auto-activation failed.

VU_MULTI_TARGET_PARTS_CREATION_ERROR_DATABASE_LOAD_ERROR 

Database file not found or an error occurred when reading data from it (potentially unknown or corrupted file)

VU_MULTI_TARGET_PARTS_CREATION_ERROR_INVALID_TARGET_NAME 

Invalid target name.

VU_MULTI_TARGET_PARTS_CREATION_ERROR_ASSEMBLY_ERROR 

An error occurred while trying to set up the parts that form the Multi-Target.

VU_MULTI_TARGET_PARTS_CREATION_ERROR_DATABASE_XML_REQUIRED 

The Multi Target part could not be loaded from the DAT file directly, because the database only supports loading from the database XML file. Only Image Target databases created for Vuforia 10.15 and newer support loading from the DAT file directly. Older databases must still be loaded via the database XML file.

◆ VuMultiTargetObservationStatusInfo

Status info for the pose of Multi-Target observations.

Provides further information on the pose status reported as part of VuPoseInfo. The status info is retrieved with vuMultiTargetObservationGetStatusInfo.

Note
All enum values defined by VuObservationPoseStatus may be reported as part of a Multi-Target observation.
See also
VuPoseInfo
VuObservationPoseStatus
vuObservationHasPoseInfo
vuObservationGetPoseInfo
vuStateGetObservationsWithPoseInfo
vuStateGetObservationsWithPoseInfo
Enumerator
VU_MULTI_TARGET_OBSERVATION_STATUS_INFO_NORMAL 

Tracking is working normally. Reported for VU_OBSERVATION_POSE_STATUS_TRACKED or VU_OBSERVATION_POSE_STATUS_EXTENDED_TRACKED.

VU_MULTI_TARGET_OBSERVATION_STATUS_INFO_NOT_OBSERVED 

Target is not observed. Reported for VU_OBSERVATION_POSE_STATUS_NO_POSE.

VU_MULTI_TARGET_OBSERVATION_STATUS_INFO_RELOCALIZING 

The tracking system is currently relocalizing. Reported for VU_OBSERVATION_POSE_STATUS_LIMITED.

◆ anonymous enum

anonymous enum
Enumerator
VU_OBSERVER_MULTI_TARGET_TYPE 

Type identifier for Multi-Target observers.

◆ anonymous enum

anonymous enum
Enumerator
VU_OBSERVATION_MULTI_TARGET_TYPE 

Type identifier for Multi-Target observations.

Function Documentation

◆ vuMultiTargetConfigDefault()

VuMultiTargetConfig vuMultiTargetConfigDefault ( )

Default Multi-Target configuration.

Note
Use this function to initialize the VuMultiTargetConfig data structure with default values.

◆ vuEngineCreateMultiTargetObserver()

VuResult vuEngineCreateMultiTargetObserver ( VuEngine * engine,
VuObserver ** observer,
const VuMultiTargetConfig * config,
VuMultiTargetCreationError * errorCode )

Create a Multi-Target observer from a database.

Note
Note that loading the database may take a significant amount of time, it is therefore recommended that this method is not called on the main/UI thread.

◆ vuMultiTargetObserverGetTargetPoseOffset()

VuResult vuMultiTargetObserverGetTargetPoseOffset ( const VuObserver * observer,
VuMatrix44F * poseOffset )

Get the pose transformation offset associated to the target from a Multi-Target observer.

Note
The pose offset is represented as a pose matrix using the OpenGL convention.

◆ vuMultiTargetObserverSetTargetPoseOffset()

VuResult vuMultiTargetObserverSetTargetPoseOffset ( VuObserver * observer,
const VuMatrix44F * poseOffset )

Set the pose transformation offset associated to the target from a Multi-Target observer.

Note
The pose offset is represented as a pose matrix using the OpenGL convention.

◆ vuMultiTargetObserverSetTrackingOptimization()

VuResult vuMultiTargetObserverSetTrackingOptimization ( VuObserver * observer,
VuTrackingOptimization optimization )

Set the tracking optimization of the target associated to the Multi-Target observer.

This setting modifies the internal target tracking parameters to optimize the tracking quality and robustness.

Note
Only VU_TRACKING_OPTIMIZATION_DEFAULT and VU_TRACKING_OPTIMIZATION_AR_CONTROLLER are allowed. This function will fail if VU_TRACKING_OPTIMIZATION_LOW_FEATURE_OBJECTS is provided.
This operation will reset any tracking operation for the Multi-Target observer. It is recommended to use this function before starting the Vuforia Engine.

◆ vuMultiTargetObservationGetStatusInfo()

VuResult vuMultiTargetObservationGetStatusInfo ( const VuObservation * observation,
VuMultiTargetObservationStatusInfo * statusInfo )

Get status info associated to the pose status of an Multi-Target observation.

The status info is intended to be used in combination with VuObservationPoseStatus retrieved via vuObservationGetPoseInfo.

◆ vuMultiTargetPartGetTargetPoseOffset()

VuResult vuMultiTargetPartGetTargetPoseOffset ( const VuMultiTargetPart * part,
VuMatrix44F * poseOffset )

Get the pose transformation offset associated with a Multi-Target part.

Note
The pose transformation offset is represented as a pose matrix using the OpenGL convention. This pose is relative to the Multi-Target to which the part belongs.