XRCamera3D
Camera receiving a positional tracker’s default pose.
XRCamera3D is a rig camera, not a controller. Its constructor already selects Tracker=head, ProcessMode=Always and PhysicsInterpolationMode=Off. Preserve these tracking modes and parent it directly under XROrigin3D.
The camera receives the selected tracker’s default pose and uses its GetAdjustedTransform as the local transform. Other poses such as aim are ignored. The parent adds gameplay origin once. Tracker selection uses a name, not a numeric ID.
Pose loss or an unavailable new tracker does not clear the previous transform. The camera has no XREntity3D GetHasTrackingData flag: inspect its tracker’s GetPose("default") and that pose’s HasTrackingData. Do not dispose borrowed objects. A camera does not establish stereo output; a working XR interface and UseXR viewport are required.
The XR path manages projection. In current source the inherited screen project/unproject/frustum helpers use the first view during XR; do not treat them as a universal result for both eyes. This limitation was source-reviewed, not headset-tested.
Defaults, default-pose selection, transforms and unbinding were checked with a synthetic tracker. Real poses, projection, stereo images and paused behavior were not tested. Setup: XR startup.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
XRCamera3DConstructor
public XRCamera3D();Creates a camera with Tracker=head, ProcessMode=Always and physics interpolation disabled. The constructor already sets these modes. Stereo requires an XROrigin3D parent, working XR interface and XR viewport; construction alone supplies none of those.
Properties1
TrackerProperty
public StringName Tracker { get; set; }Positional tracker name, initially head. The camera selects its default pose; numeric IDs are not used. Changing it unbinds the old tracker and binds an available new one. If absent, the last transform remains; the name alone does not establish tracking.
Methods2
GetTrackerStringName
public StringName GetTracker();Returns the configured tracker name, initially head. Does not report current pose availability; inspect tracker state separately.
StringNameConfigured tracker name; alone it does not establish tracking.
SetTrackervoid
public void SetTracker(StringName trackerName);Positional tracker name, initially head. The camera selects its default pose; numeric IDs are not used. Changing it unbinds the old tracker and binds an available new one. If absent, the last transform remains; the name alone does not establish tracking.
| Name | Type | Default |
|---|---|---|
trackerName | StringName | — |
trackerNameExact positional tracker name; the camera uses its default pose.