UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IXRTrackingSystem Class Referenceabstract

#include <IXRTrackingSystem.h>

+ Inheritance diagram for IXRTrackingSystem:

Public Member Functions

virtual FString GetVersionString () const =0
 
virtual int32 GetXRSystemFlags () const =0
 
virtual bool DoesSupportPositionalTracking () const =0
 
virtual bool DoesSupportLateUpdate () const
 
virtual bool DoesSupportLateProjectionUpdate () const
 
virtual bool HasValidTrackingPosition ()=0
 
virtual bool EnumerateTrackedDevices (TArray< int32 > &OutDevices, EXRTrackedDeviceType Type=EXRTrackedDeviceType::Any)=0
 
virtual uint32 CountTrackedDevices (EXRTrackedDeviceType Type=EXRTrackedDeviceType::Any)=0
 
virtual bool IsTracking (int32 DeviceId)=0
 
virtual void RebaseObjectOrientationAndPosition (FVector &Position, FQuat &Orientation) const
 
virtual bool GetCurrentPose (int32 DeviceId, FQuat &OutOrientation, FVector &OutPosition)=0
 
virtual bool GetRelativeEyePose (int32 DeviceId, int32 ViewIndex, FQuat &OutOrientation, FVector &OutPosition)=0
 
virtual bool GetTrackingSensorProperties (int32 DeviceId, FQuat &OutOrientation, FVector &OutPosition, FXRSensorProperties &OutSensorProperties)=0
 
virtual EXRTrackedDeviceType GetTrackedDeviceType (int32 DeviceId) const =0
 
virtual FString GetTrackedDevicePropertySerialNumber (int32 DeviceId)=0
 
virtual void SetTrackingOrigin (EHMDTrackingOrigin::Type NewOrigin)=0
 
virtual EHMDTrackingOrigin::Type GetTrackingOrigin () const =0
 
virtual FTransform GetTrackingToWorldTransform () const =0
 
virtual float GetWorldToMetersScale () const =0
 
virtual bool GetFloorToEyeTrackingTransform (FTransform &OutFloorToEye) const =0
 
virtual void UpdateTrackingToWorldTransform (const FTransform &TrackingToWorldOverride)=0
 
virtual FVector GetAudioListenerOffset (int32 DeviceId=HMDDeviceId) const
 
virtual void ResetOrientationAndPosition (float Yaw=0.f)=0
 
virtual void ResetOrientation (float Yaw=0.f)
 
virtual void ResetPosition ()
 
virtual void SetBaseRotation (const FRotator &BaseRot)
 
virtual FRotator GetBaseRotation () const
 
virtual void SetBaseOrientation (const FQuat &BaseOrient)
 
virtual FQuat GetBaseOrientation () const
 
virtual void SetBasePosition (const FVector &BasePosition)
 
virtual FVector GetBasePosition () const
 
virtual void CalibrateExternalTrackingSource (const FTransform &ExternalTrackingTransform)
 
virtual void UpdateExternalTrackingPosition (const FTransform &ExternalTrackingTransform)
 
virtual class TSharedPtr< class IXRCamera, ESPMode::ThreadSafeGetXRCamera (int32 DeviceId=HMDDeviceId)=0
 
virtual class IHeadMountedDisplayGetHMDDevice ()
 
virtual class TSharedPtr< class IStereoRendering, ESPMode::ThreadSafeGetStereoRenderingDevice ()
 
virtual class IXRInputGetXRInput ()
 
virtual TSharedPtr< FARSupportInterface, ESPMode::ThreadSafeGetARCompositionComponent ()
 
virtual const TSharedPtr< const FARSupportInterface, ESPMode::ThreadSafeGetARCompositionComponent () const
 
virtual class IXRLoadingScreenGetLoadingScreen ()
 
virtual bool IsHeadTrackingAllowed () const =0
 
virtual HEADMOUNTEDDISPLAY_API bool IsHeadTrackingAllowedForWorld (UWorld &World) const
 
virtual bool IsHeadTrackingEnforced () const
 
virtual void SetHeadTrackingEnforced (bool bEnabled)
 
virtual void OnBeginPlay (FWorldContext &InWorldContext)
 
virtual void OnEndPlay (FWorldContext &InWorldContext)
 
virtual bool OnStartGameFrame (FWorldContext &WorldContext)
 
virtual bool OnEndGameFrame (FWorldContext &WorldContext)
 
virtual void OnBeginRendering_RenderThread (FRHICommandListImmediate &RHICmdList, FSceneViewFamily &ViewFamily) final
 
virtual HEADMOUNTEDDISPLAY_API void OnBeginRendering_RenderThread (FRDGBuilder &GraphBuilder, FSceneViewFamily &ViewFamily)
 
virtual void OnBeginRendering_GameThread () final
 
virtual void OnBeginRendering_GameThread (FSceneViewFamily &InViewFamily)
 
virtual void OnLateUpdateApplied_RenderThread (FRHICommandListImmediate &RHICmdList, const FTransform &NewRelativeTransform) final
 
virtual HEADMOUNTEDDISPLAY_API void OnLateUpdateApplied_RenderThread (FRDGBuilder &GraphBuilder, const FTransform &NewRelativeTransform)
 
virtual HEADMOUNTEDDISPLAY_API void GetHMDData (UObject *WorldContext, FXRHMDData &HMDData)
 
virtual void GetMotionControllerState (UObject *WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, const EXRControllerPoseType XRControllerPoseType, FXRMotionControllerState &MotionControllerState)=0
 
virtual void GetHandTrackingState (UObject *WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, FXRHandTrackingState &HandTrackingState)=0
 
virtual bool GetCurrentInteractionProfile (const EControllerHand Hand, FString &InteractionProfile)=0
 
virtual EXRDeviceConnectionResult::Type ConnectRemoteXRDevice (const FString &IpAddress, const int32 BitRate)
 
virtual void DisconnectRemoteXRDevice ()
 
virtual FVector2D GetPlayAreaBounds (EHMDTrackingOrigin::Type Origin) const
 
virtual bool GetTrackingOriginTransform (TEnumAsByte< EHMDTrackingOrigin::Type > Origin, FTransform &OutTransform) const
 
virtual bool GetPlayAreaRect (FTransform &OutTransform, FVector2D &OutRect) const
 
virtual IOpenXRHMDGetIOpenXRHMD ()
 
- Public Member Functions inherited from IXRSystemIdentifier
virtual FName GetSystemName () const =0
 

Static Public Member Functions

static FName GetModularFeatureName ()
 

Static Public Attributes

static constexpr int32 HMDDeviceId = 0
 

Detailed Description

Main access point to an XR tracking system. Use it to enumerate devices and query their poses.

Member Function Documentation

◆ CalibrateExternalTrackingSource()

virtual void IXRTrackingSystem::CalibrateExternalTrackingSource ( const FTransform ExternalTrackingTransform)
inlinevirtual

Called to calibrate the offset transform between an external tracking source and the internal tracking source (e.g. mocap tracker to and HMD tracker). This should be called once per session, or when the physical relationship between the external tracker and internal tracker changes (e.g. it was bumped or reattached). After calibration, calling UpdateExternalTrackingPosition will try to correct the internal tracker to the calibrated offset to prevent drift between the two systems

Parameters
ExternalTrackingTransform(in) The transform in world-coordinates, of the reference marker of the external tracking system

◆ ConnectRemoteXRDevice()

virtual EXRDeviceConnectionResult::Type IXRTrackingSystem::ConnectRemoteXRDevice ( const FString &  IpAddress,
const int32  BitRate 
)
inlinevirtual

◆ CountTrackedDevices()

virtual uint32 IXRTrackingSystem::CountTrackedDevices ( EXRTrackedDeviceType  Type = EXRTrackedDeviceType::Any)
pure virtual

Get the count of tracked devices

Parameters
TypeOptionally limit the count to a certain type
Returns
the count of matching tracked devices

◆ DisconnectRemoteXRDevice()

virtual void IXRTrackingSystem::DisconnectRemoteXRDevice ( )
inlinevirtual

◆ DoesSupportLateProjectionUpdate()

virtual bool IXRTrackingSystem::DoesSupportLateProjectionUpdate ( ) const
inlinevirtual

Return true if the default camera implementation should query the current projection matrix at the start of the render frame and apply late update. In order to support late update, the plugin should refresh the current projection matrix just before rendering starts. A good point to insert the update is in OnBeginRendering_GameThread or OnBeginRendering_RenderThread.

Note that late projection update isn't compatible with all XR implementations because of projection matrix fetch restrictions.

◆ DoesSupportLateUpdate()

virtual bool IXRTrackingSystem::DoesSupportLateUpdate ( ) const
inlinevirtual

Return true if the default camera implementation should query the current pose at the start of the render frame and apply late update. In order to support late update, the plugin should refresh the current pose just before rendering starts. A good point to insert the update is in OnBeginRendering_GameThread or OnBeginRendering_RenderThread.

Note that for backwards compatibility with plugins written before 4.19, this method defaults to returning 'true'

◆ DoesSupportPositionalTracking()

virtual bool IXRTrackingSystem::DoesSupportPositionalTracking ( ) const
pure virtual

Whether or not the system supports positional tracking (either via sensor or other means)

◆ EnumerateTrackedDevices()

virtual bool IXRTrackingSystem::EnumerateTrackedDevices ( TArray< int32 > &  OutDevices,
EXRTrackedDeviceType  Type = EXRTrackedDeviceType::Any 
)
pure virtual

Reports all devices currently available to the system, optionally limiting the result to a given class of devices.

Parameters
OutDevicesThe device ids of available devices will be appended to this array.
TypeOptionally limit the list of devices to a certain type.

◆ GetARCompositionComponent() [1/2]

virtual TSharedPtr< FARSupportInterface, ESPMode::ThreadSafe > IXRTrackingSystem::GetARCompositionComponent ( )
inlinevirtual

Access optionsal ARCompositionComponent

◆ GetARCompositionComponent() [2/2]

virtual const TSharedPtr< const FARSupportInterface, ESPMode::ThreadSafe > IXRTrackingSystem::GetARCompositionComponent ( ) const
inlinevirtual

◆ GetAudioListenerOffset()

virtual FVector IXRTrackingSystem::GetAudioListenerOffset ( int32  DeviceId = HMDDeviceId) const
inlinevirtual

Get the offset, in device space, of the reported device (screen / eye) position to the center of the head.

Returns
a vector containing the offset coordinates, ZeroVector if not supported.

◆ GetBaseOrientation()

virtual FQuat IXRTrackingSystem::GetBaseOrientation ( ) const
inlinevirtual

Returns current base orientation of HMD as a quaternion.

◆ GetBasePosition()

virtual FVector IXRTrackingSystem::GetBasePosition ( ) const
inlinevirtual

Returns current base position of HMD.

◆ GetBaseRotation()

virtual FRotator IXRTrackingSystem::GetBaseRotation ( ) const
inlinevirtual

Returns current base orientation of HMD as yaw-pitch-roll combination.

◆ GetCurrentInteractionProfile()

virtual bool IXRTrackingSystem::GetCurrentInteractionProfile ( const EControllerHand  Hand,
FString &  InteractionProfile 
)
pure virtual

◆ GetCurrentPose()

virtual bool IXRTrackingSystem::GetCurrentPose ( int32  DeviceId,
FQuat OutOrientation,
FVector OutPosition 
)
pure virtual

Get the current pose for a device. This method must be callable both on the render thread and the game thread. For devices that don't support positional tracking, OutPosition will be at the base position.

Parameters
DeviceIdthe device to request the pose for.
OutOrientationThe current orientation of the device
OutPositionThe current position of the device
Returns
true if the pose is valid or not.

◆ GetFloorToEyeTrackingTransform()

virtual bool IXRTrackingSystem::GetFloorToEyeTrackingTransform ( FTransform OutFloorToEye) const
pure virtual

Computes a transform to convert from 'Floor' origin space to 'Eye' origin space. Useful when changing between the two different TrackingOrigin spaces. Invert the transform to get the opposite.

Parameters
OutFloorToEye[out] The returned floor-to-eye transform.
Returns
True if the transform was successfully constructed.

◆ GetHandTrackingState()

virtual void IXRTrackingSystem::GetHandTrackingState ( UObject WorldContext,
const EXRSpaceType  XRSpaceType,
const EControllerHand  Hand,
FXRHandTrackingState HandTrackingState 
)
pure virtual

◆ GetHMDData()

void IXRTrackingSystem::GetHMDData ( UObject WorldContext,
FXRHMDData HMDData 
)
virtual

Platform Agnostic Query about HMD details

◆ GetHMDDevice()

virtual class IHeadMountedDisplay * IXRTrackingSystem::GetHMDDevice ( )
inlinevirtual

Access HMD rendering-related features.

Returns
a IHeadmountedDisplay pointer or a nullptr if this tracking system does not support head mounted displays.

◆ GetIOpenXRHMD()

virtual IOpenXRHMD * IXRTrackingSystem::GetIOpenXRHMD ( )
inlinevirtual

Get the IOpenXRHMD interface, if there is one.

◆ GetLoadingScreen()

virtual class IXRLoadingScreen * IXRTrackingSystem::GetLoadingScreen ( )
inlinevirtual

Access the loading screen interface associated with this tracking system, if any.

Returns
an IXRLoadingScreen pointer or a nullptr if this tracking system does not support loading screens.

◆ GetModularFeatureName()

static FName IXRTrackingSystem::GetModularFeatureName ( )
inlinestatic

◆ GetMotionControllerState()

virtual void IXRTrackingSystem::GetMotionControllerState ( UObject WorldContext,
const EXRSpaceType  XRSpaceType,
const EControllerHand  Hand,
const EXRControllerPoseType  XRControllerPoseType,
FXRMotionControllerState MotionControllerState 
)
pure virtual

Platform Agnostic Query about MotionControllers details

◆ GetPlayAreaBounds()

virtual FVector2D IXRTrackingSystem::GetPlayAreaBounds ( EHMDTrackingOrigin::Type  Origin) const
inlinevirtual

Get the bounds of the area where the user can freely move while remaining tracked centered around the specified origin

◆ GetPlayAreaRect()

virtual bool IXRTrackingSystem::GetPlayAreaRect ( FTransform OutTransform,
FVector2D OutRect 
) const
inlinevirtual

Get the transform and dimensions of the area where the user can freely move while remaining tracked centered around the specified origin transform

◆ GetRelativeEyePose()

virtual bool IXRTrackingSystem::GetRelativeEyePose ( int32  DeviceId,
int32  ViewIndex,
FQuat OutOrientation,
FVector OutPosition 
)
pure virtual

If the device id represents a head mounted display, fetches the relative position of the given eye relative to the eye. If the device is does not represent a stereoscopic tracked camera, orientation and position should be identity and zero and the return value should be false.

Parameters
DeviceIdthe device to request the eye pose for.
ViewIndexthe view the pose should be requested for, if passing in INDEX_NONE, the method should return a zero offset.
OutOrientationThe orientation of the eye relative to the device orientation.
OutPositionThe position of the eye relative to the tracked device
Returns
true if the pose is valid or not. If the device is not a stereoscopic device, return false.

◆ GetStereoRenderingDevice()

virtual class TSharedPtr< class IStereoRendering, ESPMode::ThreadSafe > IXRTrackingSystem::GetStereoRenderingDevice ( )
inlinevirtual

Access Stereo rendering device associated with this XR system. If GetHMDDevice() returns non-null, this method should also return a vaild instance.

Returns
a IStereoRendering pointer or a nullptr if this tracking system does not support stereo rendering.

◆ GetTrackedDevicePropertySerialNumber()

virtual FString IXRTrackingSystem::GetTrackedDevicePropertySerialNumber ( int32  DeviceId)
pure virtual

If the device id represents a tracking sensor, reports the serial number as a string if the device supports it.

Parameters
DeviceIdthe device to request information for.
Returns
the serial number of the device if it's available.

◆ GetTrackedDeviceType()

virtual EXRTrackedDeviceType IXRTrackingSystem::GetTrackedDeviceType ( int32  DeviceId) const
pure virtual

If the device id represents a tracking sensor, reports the device type.

Parameters
DeviceIdthe device to request information for.
Returns
the device type enum.

◆ GetTrackingOrigin()

virtual EHMDTrackingOrigin::Type IXRTrackingSystem::GetTrackingOrigin ( ) const
pure virtual

Returns current tracking origin.

◆ GetTrackingOriginTransform()

virtual bool IXRTrackingSystem::GetTrackingOriginTransform ( TEnumAsByte< EHMDTrackingOrigin::Type Origin,
FTransform OutTransform 
) const
inlinevirtual

Get the transform of the specified tracking origin, if available.

◆ GetTrackingSensorProperties()

virtual bool IXRTrackingSystem::GetTrackingSensorProperties ( int32  DeviceId,
FQuat OutOrientation,
FVector OutPosition,
FXRSensorProperties OutSensorProperties 
)
pure virtual

If the device id represents a tracking sensor, reports the frustum properties in game-world space of the sensor.

Parameters
DeviceIdthe device to request information for.
OutOrientationThe current orientation of the device.
OutPositionThe current position of the device.
OutSensorPropertiesA struct containing the tracking sensor properties.
Returns
true if the device tracking is valid and supports returning tracking sensor properties.

◆ GetTrackingToWorldTransform()

virtual FTransform IXRTrackingSystem::GetTrackingToWorldTransform ( ) const
pure virtual

Returns the system's latest known tracking-to-world transform. Useful for translating poses from GetCurrentPose() into unreal world space.

◆ GetVersionString()

virtual FString IXRTrackingSystem::GetVersionString ( ) const
pure virtual

Returns version string.

◆ GetWorldToMetersScale()

virtual float IXRTrackingSystem::GetWorldToMetersScale ( ) const
pure virtual

This method should return the world to meters scale for the current frame. Should be callable on both the render and the game threads.

Returns
the current world to meter scale.

◆ GetXRCamera()

virtual class TSharedPtr< class IXRCamera, ESPMode::ThreadSafe > IXRTrackingSystem::GetXRCamera ( int32  DeviceId = HMDDeviceId)
pure virtual

Get the IXCamera instance for the given device.

Parameters
DeviceIdthe device the camera should track.
Returns
a shared pointer to an IXRCamera.

◆ GetXRInput()

virtual class IXRInput * IXRTrackingSystem::GetXRInput ( )
inlinevirtual

Deprecated, and will be removed in a future release.

Access optional HMD input override interface.

Returns
a IXRInput pointer or a nullptr if not supported

◆ GetXRSystemFlags()

virtual int32 IXRTrackingSystem::GetXRSystemFlags ( ) const
pure virtual

Returns device specific flags.

◆ HasValidTrackingPosition()

virtual bool IXRTrackingSystem::HasValidTrackingPosition ( )
pure virtual

If the system currently has valid tracking positions. If not supported at all, returns false.

◆ IsHeadTrackingAllowed()

virtual bool IXRTrackingSystem::IsHeadTrackingAllowed ( ) const
pure virtual

Returns true, if head tracking is allowed. Most common case: it returns true when GEngine->IsStereoscopic3D() is true, but some overrides are possible.

◆ IsHeadTrackingAllowedForWorld()

bool IXRTrackingSystem::IsHeadTrackingAllowedForWorld ( UWorld World) const
virtual

Same as IsHeadTrackingAllowed, but returns false if the World is not using VR (such as with the non-VR PIE instances when using VR Preview)

◆ IsHeadTrackingEnforced()

virtual bool IXRTrackingSystem::IsHeadTrackingEnforced ( ) const
inlinevirtual

Can be used to enforce tracking even when stereo rendering is disabled. The default implementation does not allow enforcing tracking and always returns false. This method is called both from the game and render threads.

◆ IsTracking()

virtual bool IXRTrackingSystem::IsTracking ( int32  DeviceId)
pure virtual

Check current tracking status of a device.

Parameters
DeviceIdthe device to request status for.
Returns
true if the system currently has valid tracking info for the given device ID.

◆ OnBeginPlay()

virtual void IXRTrackingSystem::OnBeginPlay ( FWorldContext InWorldContext)
inlinevirtual

This method is called when playing begins. Useful to reset all runtime values stored in the plugin.

◆ OnBeginRendering_GameThread() [1/2]

virtual void IXRTrackingSystem::OnBeginRendering_GameThread ( )
inlinefinalvirtual

Called just before rendering the current frame on the game frame.

◆ OnBeginRendering_GameThread() [2/2]

virtual void IXRTrackingSystem::OnBeginRendering_GameThread ( FSceneViewFamily InViewFamily)
inlinevirtual

◆ OnBeginRendering_RenderThread() [1/2]

void IXRTrackingSystem::OnBeginRendering_RenderThread ( FRDGBuilder GraphBuilder,
FSceneViewFamily ViewFamily 
)
virtual

◆ OnBeginRendering_RenderThread() [2/2]

virtual void IXRTrackingSystem::OnBeginRendering_RenderThread ( FRHICommandListImmediate RHICmdList,
FSceneViewFamily ViewFamily 
)
inlinefinalvirtual

Called just before rendering the current frame on the render thread. Invoked before applying late update, so plugins that want to refresh poses on the render thread prior to late update. Use this to perform any initializations prior to rendering.

◆ OnEndGameFrame()

virtual bool IXRTrackingSystem::OnEndGameFrame ( FWorldContext WorldContext)
inlinevirtual

This method is called when game frame ends (called on a game thread).

◆ OnEndPlay()

virtual void IXRTrackingSystem::OnEndPlay ( FWorldContext InWorldContext)
inlinevirtual

This method is called when playing ends. Useful to reset all runtime values stored in the plugin.

◆ OnLateUpdateApplied_RenderThread() [1/2]

void IXRTrackingSystem::OnLateUpdateApplied_RenderThread ( FRDGBuilder GraphBuilder,
const FTransform NewRelativeTransform 
)
virtual

◆ OnLateUpdateApplied_RenderThread() [2/2]

virtual void IXRTrackingSystem::OnLateUpdateApplied_RenderThread ( FRHICommandListImmediate RHICmdList,
const FTransform NewRelativeTransform 
)
inlinefinalvirtual

Called just after the late update on the render thread passing back the current relative transform.

◆ OnStartGameFrame()

virtual bool IXRTrackingSystem::OnStartGameFrame ( FWorldContext WorldContext)
inlinevirtual

This method is called when new game frame begins (called on a game thread).

◆ RebaseObjectOrientationAndPosition()

virtual void IXRTrackingSystem::RebaseObjectOrientationAndPosition ( FVector Position,
FQuat Orientation 
) const
inlinevirtual

Temporary method until Morpheus controller code has been refactored.

◆ ResetOrientation()

virtual void IXRTrackingSystem::ResetOrientation ( float  Yaw = 0.f)
inlinevirtual

Resets orientation by setting roll and pitch to 0, assuming that current yaw is forward direction. Position is not changed.

Parameters
Yaw(in) the desired yaw to be set after orientation reset.

◆ ResetOrientationAndPosition()

virtual void IXRTrackingSystem::ResetOrientationAndPosition ( float  Yaw = 0.f)
pure virtual

Resets orientation by setting roll and pitch to 0, assuming that current yaw is forward direction and assuming current position as a 'zero-point' (for positional tracking).

Parameters
Yaw(in) the desired yaw to be set after orientation reset.

◆ ResetPosition()

virtual void IXRTrackingSystem::ResetPosition ( )
inlinevirtual

Resets position, assuming current position as a 'zero-point'.

◆ SetBaseOrientation()

virtual void IXRTrackingSystem::SetBaseOrientation ( const FQuat BaseOrient)
inlinevirtual

Sets base orientation, assuming that this is forward direction. Position is not changed.

Parameters
BaseOrient(in) the desired orientation to be treated as a base orientation.

◆ SetBasePosition()

virtual void IXRTrackingSystem::SetBasePosition ( const FVector BasePosition)
inlinevirtual

Sets base position of the HMD.

Parameters
BasePosition(in) the desired offset to be treated as a base position.

◆ SetBaseRotation()

virtual void IXRTrackingSystem::SetBaseRotation ( const FRotator BaseRot)
inlinevirtual

Sets base orientation by setting yaw, pitch, roll, assuming that this is forward direction. Position is not changed.

Parameters
BaseRot(in) the desired orientation to be treated as a base orientation.

◆ SetHeadTrackingEnforced()

virtual void IXRTrackingSystem::SetHeadTrackingEnforced ( bool  bEnabled)
inlinevirtual

Can be used to enforce tracking even when stereo rendering is disabled. The default implementation does not allow enforcing tracking and ignores the argument.

◆ SetTrackingOrigin()

virtual void IXRTrackingSystem::SetTrackingOrigin ( EHMDTrackingOrigin::Type  NewOrigin)
pure virtual

Sets tracking origin (either 'eye'-level or 'floor'-level).

◆ UpdateExternalTrackingPosition()

virtual void IXRTrackingSystem::UpdateExternalTrackingPosition ( const FTransform ExternalTrackingTransform)
inlinevirtual

Called after calibration to attempt to pull the internal tracker (e.g. HMD tracking) in line with the external tracker (e.g. mocap tracker). This will set the internal tracker's base offset and rotation to match and realign the two systems. This can be called every tick, or whenever realignment is desired. Note that this may cause choppy movement if the two systems diverge relative to each other, or a big jump if called infrequently when there has been significant drift

Parameters
ExternalTrackingTransform(in) The transform in world-coordinates, of the reference marker of the external tracking system

◆ UpdateTrackingToWorldTransform()

virtual void IXRTrackingSystem::UpdateTrackingToWorldTransform ( const FTransform TrackingToWorldOverride)
pure virtual

Refreshes the system's known tracking-to-world transform. Helpful for clients if they change the world's representation of the XR origin, or if they want to override the system calculated transform - calling this will update the known transform returned by GetTrackingToWorldTransform().

Member Data Documentation

◆ HMDDeviceId

const int32 IXRTrackingSystem::HMDDeviceId = 0
staticconstexpr

Device id 0 is reserved for an HMD. This should represent the HMD or the first HMD in case multiple HMDs are supported. Other devices can have arbitrary ids defined by each system. If a tracking system does not support tracking HMDs, device ID zero should be treated as invalid.


The documentation for this class was generated from the following files: