UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IXRTrackingSystem.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
10#include "StereoRendering.h"
11
12class IXRCamera;
13class UARPin;
15struct FWorldContext;
17class IOpenXRHMD;
18
23{
25 float LeftFOV;
27 float RightFOV;
29 float TopFOV;
31 float BottomFOV;
33 float NearPlane;
35 float FarPlane;
36
39};
40
41
42
47{
48public:
50 {
51 static const FName FeatureName = FName(TEXT("XRTrackingSystem"));
52 return FeatureName;
53 }
54
58 virtual FString GetVersionString() const = 0;
59
63 virtual int32 GetXRSystemFlags() const = 0;
64
70 static constexpr int32 HMDDeviceId = 0;
71
75 virtual bool DoesSupportPositionalTracking() const = 0;
76
84 virtual bool DoesSupportLateUpdate() const { return true; }
85
93 virtual bool DoesSupportLateProjectionUpdate() const { return false; }
94
98 virtual bool HasValidTrackingPosition() = 0;
99
107
114
120 virtual bool IsTracking(int32 DeviceId) = 0;
121
126
137 virtual bool GetCurrentPose(int32 DeviceId, FQuat& OutOrientation, FVector& OutPosition) = 0;
138
149 virtual bool GetRelativeEyePose(int32 DeviceId, int32 ViewIndex, FQuat& OutOrientation, FVector& OutPosition) = 0;
150
160
167
173 virtual FString GetTrackedDevicePropertySerialNumber(int32 DeviceId) = 0;
174
178 virtual void SetTrackingOrigin(EHMDTrackingOrigin::Type NewOrigin) = 0;
179
184
190
196 virtual float GetWorldToMetersScale() const = 0;
197
207
214
221
228 virtual void ResetOrientationAndPosition(float Yaw = 0.f) = 0;
229
235 virtual void ResetOrientation(float Yaw = 0.f) {}
236
240 virtual void ResetPosition() {}
241
248 virtual void SetBaseRotation(const FRotator& BaseRot) {}
249
254
261 virtual void SetBaseOrientation(const FQuat& BaseOrient) {}
262
266 virtual FQuat GetBaseOrientation() const { return FQuat::Identity; }
267
273 virtual void SetBasePosition(const FVector& BasePosition) {};
274
278 virtual FVector GetBasePosition() const { return FVector::ZeroVector; }
279
290
300
307 virtual class TSharedPtr< class IXRCamera, ESPMode::ThreadSafe > GetXRCamera(int32 DeviceId = HMDDeviceId) = 0;
308
314 virtual class IHeadMountedDisplay* GetHMDDevice() { return nullptr; }
315
323 {
324 check(GetHMDDevice() == nullptr);
325 return nullptr;
326 }
327
335 UE_DEPRECATED(5.6, "IXRInput is deprecated and will be removed in a future release.")
336 virtual class IXRInput* GetXRInput() { return nullptr; }
337
338
344
345
351 virtual class IXRLoadingScreen* GetLoadingScreen() { return nullptr; }
352
353 /*** XR System related methods moved from IHeadMountedDisplay ***/
354
359 virtual bool IsHeadTrackingAllowed() const = 0;
360
365
371 virtual bool IsHeadTrackingEnforced() const { return false; }
372
377 virtual void SetHeadTrackingEnforced(bool bEnabled) {};
378
379
384
389
393 virtual bool OnStartGameFrame(FWorldContext& WorldContext) { return false; }
394
398 virtual bool OnEndGameFrame(FWorldContext& WorldContext) { return false; }
399
400
401 /*** Methods designed to be called from IXRCamera implementations ***/
402
407 UE_DEPRECATED(5.6, "Use the FRDGBuilder overload instead")
410
414 UE_DEPRECATED(5.6, "Use the FSceneViewFamily overload instead")
422
426 UE_DEPRECATED(5.6, "Use the FRDGBuilder overload instead")
429
433 HEADMOUNTEDDISPLAY_API virtual void GetHMDData(UObject* WorldContext, FXRHMDData& HMDData);
434
438 virtual void GetMotionControllerState(UObject* WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, const EXRControllerPoseType XRControllerPoseType, FXRMotionControllerState& MotionControllerState) = 0;
439 virtual void GetHandTrackingState(UObject* WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, FXRHandTrackingState& HandTrackingState) = 0;
441
446 virtual void DisconnectRemoteXRDevice() {}
447
452
456 virtual bool GetTrackingOriginTransform(TEnumAsByte<EHMDTrackingOrigin::Type> Origin, FTransform& OutTransform) const { return false; }
457
461 virtual bool GetPlayAreaRect(FTransform& OutTransform, FVector2D& OutRect) const { return false; }
462
466 virtual IOpenXRHMD* GetIOpenXRHMD() { return nullptr; }
467};
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
EXRSpaceType
Definition HeadMountedDisplayTypes.h:320
EXRControllerPoseType
Definition HeadMountedDisplayTypes.h:332
EXRTrackedDeviceType
Definition HeadMountedDisplayTypes.h:236
EControllerHand
Definition InputCoreTypes.h:17
ESPMode
Definition SharedPointerFwd.h:12
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ARSupportInterface.h:29
Definition NameTypes.h:617
Definition RenderGraphBuilder.h:49
Definition RHICommandList.h:4626
Definition SceneView.h:2212
Definition IHeadMountedDisplay.h:38
Definition IModularFeature.h:12
Definition StereoRendering.h:40
Definition IXRCamera.h:22
Definition IXRLoadingScreen.h:18
Definition IIdentifiableXRDevice.h:14
Definition IXRTrackingSystem.h:47
virtual FRotator GetBaseRotation() const
Definition IXRTrackingSystem.h:253
virtual FVector2D GetPlayAreaBounds(EHMDTrackingOrigin::Type Origin) const
Definition IXRTrackingSystem.h:451
virtual void DisconnectRemoteXRDevice()
Definition IXRTrackingSystem.h:446
virtual FTransform GetTrackingToWorldTransform() const =0
virtual class TSharedPtr< class IStereoRendering, ESPMode::ThreadSafe > GetStereoRenderingDevice()
Definition IXRTrackingSystem.h:322
virtual TSharedPtr< FARSupportInterface, ESPMode::ThreadSafe > GetARCompositionComponent()
Definition IXRTrackingSystem.h:342
virtual void OnLateUpdateApplied_RenderThread(FRHICommandListImmediate &RHICmdList, const FTransform &NewRelativeTransform) final
Definition IXRTrackingSystem.h:427
virtual bool IsHeadTrackingAllowed() const =0
virtual FQuat GetBaseOrientation() const
Definition IXRTrackingSystem.h:266
virtual int32 GetXRSystemFlags() const =0
virtual class IHeadMountedDisplay * GetHMDDevice()
Definition IXRTrackingSystem.h:314
virtual bool GetFloorToEyeTrackingTransform(FTransform &OutFloorToEye) const =0
virtual void OnBeginRendering_GameThread() final
Definition IXRTrackingSystem.h:415
virtual EXRDeviceConnectionResult::Type ConnectRemoteXRDevice(const FString &IpAddress, const int32 BitRate)
Definition IXRTrackingSystem.h:442
virtual const TSharedPtr< const FARSupportInterface, ESPMode::ThreadSafe > GetARCompositionComponent() const
Definition IXRTrackingSystem.h:343
virtual void SetHeadTrackingEnforced(bool bEnabled)
Definition IXRTrackingSystem.h:377
static FName GetModularFeatureName()
Definition IXRTrackingSystem.h:49
virtual bool GetTrackingOriginTransform(TEnumAsByte< EHMDTrackingOrigin::Type > Origin, FTransform &OutTransform) const
Definition IXRTrackingSystem.h:456
virtual class IXRLoadingScreen * GetLoadingScreen()
Definition IXRTrackingSystem.h:351
virtual bool DoesSupportLateProjectionUpdate() const
Definition IXRTrackingSystem.h:93
virtual void ResetPosition()
Definition IXRTrackingSystem.h:240
virtual void GetMotionControllerState(UObject *WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, const EXRControllerPoseType XRControllerPoseType, FXRMotionControllerState &MotionControllerState)=0
virtual FString GetTrackedDevicePropertySerialNumber(int32 DeviceId)=0
virtual void OnBeginRendering_GameThread(FSceneViewFamily &InViewFamily)
Definition IXRTrackingSystem.h:416
virtual FVector GetBasePosition() const
Definition IXRTrackingSystem.h:278
virtual bool EnumerateTrackedDevices(TArray< int32 > &OutDevices, EXRTrackedDeviceType Type=EXRTrackedDeviceType::Any)=0
virtual void OnEndPlay(FWorldContext &InWorldContext)
Definition IXRTrackingSystem.h:388
virtual bool DoesSupportPositionalTracking() const =0
static constexpr int32 HMDDeviceId
Definition IXRTrackingSystem.h:70
virtual void CalibrateExternalTrackingSource(const FTransform &ExternalTrackingTransform)
Definition IXRTrackingSystem.h:289
virtual void SetBasePosition(const FVector &BasePosition)
Definition IXRTrackingSystem.h:273
virtual void ResetOrientation(float Yaw=0.f)
Definition IXRTrackingSystem.h:235
virtual class TSharedPtr< class IXRCamera, ESPMode::ThreadSafe > GetXRCamera(int32 DeviceId=HMDDeviceId)=0
virtual bool IsHeadTrackingEnforced() const
Definition IXRTrackingSystem.h:371
virtual HEADMOUNTEDDISPLAY_API bool IsHeadTrackingAllowedForWorld(UWorld &World) const
Definition IXRTrackingSystem.cpp:38
virtual bool HasValidTrackingPosition()=0
virtual bool GetTrackingSensorProperties(int32 DeviceId, FQuat &OutOrientation, FVector &OutPosition, FXRSensorProperties &OutSensorProperties)=0
virtual FString GetVersionString() const =0
virtual bool GetRelativeEyePose(int32 DeviceId, int32 ViewIndex, FQuat &OutOrientation, FVector &OutPosition)=0
virtual HEADMOUNTEDDISPLAY_API void GetHMDData(UObject *WorldContext, FXRHMDData &HMDData)
Definition IXRTrackingSystem.cpp:27
virtual void OnBeginPlay(FWorldContext &InWorldContext)
Definition IXRTrackingSystem.h:383
virtual void ResetOrientationAndPosition(float Yaw=0.f)=0
virtual bool IsTracking(int32 DeviceId)=0
virtual float GetWorldToMetersScale() const =0
virtual FVector GetAudioListenerOffset(int32 DeviceId=HMDDeviceId) const
Definition IXRTrackingSystem.h:220
virtual bool GetCurrentPose(int32 DeviceId, FQuat &OutOrientation, FVector &OutPosition)=0
virtual void SetTrackingOrigin(EHMDTrackingOrigin::Type NewOrigin)=0
virtual void SetBaseRotation(const FRotator &BaseRot)
Definition IXRTrackingSystem.h:248
virtual void UpdateExternalTrackingPosition(const FTransform &ExternalTrackingTransform)
Definition IXRTrackingSystem.h:299
virtual bool GetPlayAreaRect(FTransform &OutTransform, FVector2D &OutRect) const
Definition IXRTrackingSystem.h:461
virtual uint32 CountTrackedDevices(EXRTrackedDeviceType Type=EXRTrackedDeviceType::Any)=0
virtual EXRTrackedDeviceType GetTrackedDeviceType(int32 DeviceId) const =0
virtual void GetHandTrackingState(UObject *WorldContext, const EXRSpaceType XRSpaceType, const EControllerHand Hand, FXRHandTrackingState &HandTrackingState)=0
virtual void OnBeginRendering_RenderThread(FRHICommandListImmediate &RHICmdList, FSceneViewFamily &ViewFamily) final
Definition IXRTrackingSystem.h:408
virtual bool DoesSupportLateUpdate() const
Definition IXRTrackingSystem.h:84
virtual void UpdateTrackingToWorldTransform(const FTransform &TrackingToWorldOverride)=0
virtual EHMDTrackingOrigin::Type GetTrackingOrigin() const =0
virtual class IXRInput * GetXRInput()
Definition IXRTrackingSystem.h:336
virtual bool OnEndGameFrame(FWorldContext &WorldContext)
Definition IXRTrackingSystem.h:398
virtual bool GetCurrentInteractionProfile(const EControllerHand Hand, FString &InteractionProfile)=0
virtual void RebaseObjectOrientationAndPosition(FVector &Position, FQuat &Orientation) const
Definition IXRTrackingSystem.h:125
virtual IOpenXRHMD * GetIOpenXRHMD()
Definition IXRTrackingSystem.h:466
virtual void SetBaseOrientation(const FQuat &BaseOrient)
Definition IXRTrackingSystem.h:261
virtual bool OnStartGameFrame(FWorldContext &WorldContext)
Definition IXRTrackingSystem.h:393
Definition Array.h:670
Definition EnumAsByte.h:22
Definition SharedPointer.h:692
Definition ARPin.h:15
Definition Object.h:95
Definition World.h:918
Type
Definition HeadMountedDisplayTypes.h:82
Type
Definition HeadMountedDisplayTypes.h:113
@ FeatureNotSupported
Definition HeadMountedDisplayTypes.h:115
Definition Engine.h:334
Definition HeadMountedDisplayTypes.h:343
Definition HeadMountedDisplayTypes.h:403
Definition HeadMountedDisplayTypes.h:364
Definition IXRTrackingSystem.h:23
float LeftFOV
Definition IXRTrackingSystem.h:25
float CameraDistance
Definition IXRTrackingSystem.h:38
float NearPlane
Definition IXRTrackingSystem.h:33
float FarPlane
Definition IXRTrackingSystem.h:35
float RightFOV
Definition IXRTrackingSystem.h:27
float BottomFOV
Definition IXRTrackingSystem.h:31
float TopFOV
Definition IXRTrackingSystem.h:29
static CORE_API const TQuat< double > Identity
Definition Quat.h:63
static CORE_API const TRotator< double > ZeroRotator
Definition Rotator.h:57
static CORE_API const TVector2< double > ZeroVector
Definition Vector2D.h:63
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79