OpenXRRenderModel
Entity for an OpenXR-provided device visual.
Displays a model identified by a current OpenXR extension RID, updating its transform and animatable parts when confidence != None. At None, updates stop without automatically hiding old geometry. Implement fallback and tracking-loss handling separately.
Instances are normally owned by OpenXRRenderModelManager. Do not manually free them or borrowed backend RIDs. For your own direct instance, use a live provider RID; a RenderingServer/RenderingDevice RID is unsuitable.
Current SetRenderModel does not remove previously loaded geometry: repeating a nonzero in-tree RID may add duplicates, and default does not clear old children. Replace your direct Entity to replace a model. Top-level path is hand association, not a ready signal.
Loading and fallback. Zero RID, parameters and inactive lifecycle were executed on SDK 1.0.0; real geometry/animation/confidence-loss paths were source-reviewed without headset execution.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
OpenXRRenderModelConstructor
public OpenXRRenderModel();Creates an empty Entity with zero RID and no geometry. An active extension wrapper is needed before tree attachment. Use the manager for runtime-managed models: this constructor allocates no backend RID.
Properties1
RenderModelProperty
public Rid RenderModel { get; set; }Model RID from the current OpenXR extension, initially default/zero. Neither a mesh/texture RID nor transfer of backend ownership. In-tree nonzero assignment attempts to add geometry without deleting old geometry: repetition can create duplicates. Assigning default does not itself remove loaded children. Replace your own Entity to replace a direct instance; do not free manager-owned instances.
Methods3
GetRenderModelRid
public Rid GetRenderModel();Returns the stored RID without checking backend-model existence or transferring ownership. A nonzero RID does not prove geometry readiness.
RidCopy of the stored RID; the provider retains backend ownership. May be default or stale.
GetTopLevelPathstring
public string GetTopLevelPath();Model top-level path string, for example /user/hand/left or /user/hand/right; may be empty. Device association does not establish physical holding, tracking or loaded geometry. Query only while the backend RID still exists.
stringModel top-level path string, for example /user/hand/left or /user/hand/right; may be empty. Device association does not establish physical holding, tracking or loaded geometry. Query only while the backend RID still exists.
SetRenderModelvoid
public void SetRenderModel(Rid renderModel);Stores the RID and attempts to load its geometry when in-tree. Model RID from the current OpenXR extension, initially default/zero. Neither a mesh/texture RID nor transfer of backend ownership. In-tree nonzero assignment attempts to add geometry without deleting old geometry: repetition can create duplicates. Assigning default does not itself remove loaded children. Replace your own Entity to replace a direct instance; do not free manager-owned instances.
| Name | Type | Default |
|---|---|---|
renderModel | Rid | — |
renderModelModel RID from the current OpenXR extension, initially default/zero. Neither a mesh/texture RID nor transfer of backend ownership. In-tree nonzero assignment attempts to add geometry without deleting old geometry: repetition can create duplicates. Assigning default does not itself remove loaded children. Replace your own Entity to replace a direct instance; do not free manager-owned instances.
Signals and events1
RenderModelTopLevelPathChangedEvent
public event Action RenderModelTopLevelPathChanged;Parameterless event: the extension reported a change to this model’s top-level path. Not mesh-ready, tracking-frame or button notification. Read GetTopLevelPath for the current association while the RID exists.