OpenXRRenderModel
Entity визуальной модели устройства, предоставленной OpenXR.
Показывает модель по RID текущего OpenXR extension, обновляет transform и анимируемые части при confidence != None. При None обновление останавливается без автоматического скрытия старой геометрии. Fallback и обработку потери трекинга реализуйте отдельно.
Обычно экземплярами владеет OpenXRRenderModelManager. Не освобождайте их или заимствованный backend RID вручную. Для собственного прямого экземпляра задавайте только актуальный RID провайдера; RenderingServer/RenderingDevice RID не подходит.
Текущий SetRenderModel не удаляет ранее загруженную геометрию: повтор ненулевого RID в дереве может добавить дубликат, а default не очищает старые дочерние объекты. Для замены прямого экземпляра замените Entity. Top-level path — ассоциация руки, не ready-сигнал.
Загрузка и fallback. Нулевой RID, параметры и inactive lifecycle выполнены на SDK 1.0.0; реальные geometry/animation/confidence-loss пути сверены с исходниками, без проверки на шлеме.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRRenderModelКонструктор
public OpenXRRenderModel();Создаёт пустую Entity с нулевым RID и без геометрии. До добавления в дерево нужен действующий extension wrapper. Для runtime-managed моделей используйте менеджер: этот конструктор не выделяет backend RID.
Свойства1
RenderModelСвойство
public Rid RenderModel { get; set; }RID модели текущего OpenXR extension, изначально default/нулевой. Не mesh/texture RID и не передача владения backend-объектом. В дереве ненулевое присваивание пытается добавить геометрию без удаления прежней: повтор может создать дубликат. Присваивание default само не удаляет загруженные дочерние объекты. Для замены собственного экземпляра заменяйте Entity; manager-owned экземпляры не освобождайте.
Методы3
GetRenderModelRid
public Rid GetRenderModel();Возвращает сохранённый RID без проверки существования backend-модели и без передачи владения. Ненулевой RID не доказывает готовность геометрии.
RidКопия сохранённого RID; backend остаётся во владении провайдера. Может быть default или устаревшим.
GetTopLevelPathstring
public string GetTopLevelPath();Строка top-level path модели, например /user/hand/left или /user/hand/right; пустая строка возможна. Это ассоциация устройства, не подтверждение удержания, трекинга или загрузки геометрии. Запрашивайте только пока backend RID ещё существует.
stringСтрока top-level path модели, например /user/hand/left или /user/hand/right; пустая строка возможна. Это ассоциация устройства, не подтверждение удержания, трекинга или загрузки геометрии. Запрашивайте только пока backend RID ещё существует.
SetRenderModelvoid
public void SetRenderModel(Rid renderModel);Сохраняет RID и в дереве пытается загрузить его геометрию. RID модели текущего OpenXR extension, изначально default/нулевой. Не mesh/texture RID и не передача владения backend-объектом. В дереве ненулевое присваивание пытается добавить геометрию без удаления прежней: повтор может создать дубликат. Присваивание default само не удаляет загруженные дочерние объекты. Для замены собственного экземпляра заменяйте Entity; manager-owned экземпляры не освобождайте.
| Имя | Тип | По умолчанию |
|---|---|---|
renderModel | Rid | — |
renderModelRID модели текущего OpenXR extension, изначально default/нулевой. Не mesh/texture RID и не передача владения backend-объектом. В дереве ненулевое присваивание пытается добавить геометрию без удаления прежней: повтор может создать дубликат. Присваивание default само не удаляет загруженные дочерние объекты. Для замены собственного экземпляра заменяйте Entity; manager-owned экземпляры не освобождайте.
Сигналы и события1
RenderModelTopLevelPathChangedСобытие
public event Action RenderModelTopLevelPathChanged;Событие без аргументов: extension сообщил об изменении top-level path этой модели. Не является уведомлением о готовности mesh, нового кадра трекинга или нажатия кнопки. Для актуального пути используйте GetTopLevelPath, пока RID существует.