reckfellENGINE

OpenXRRenderModelManager

Менеджер визуальных моделей XR-устройств и фильтров рук.

На этой странице
class OpenXRRenderModelManagerReckfellSharpНаследует Entity3D

Создаёт и удаляет OpenXRRenderModel по данным активного OpenXR extension. Это визуальные Entity, не игровая логика, коллизии или подтверждение удержания контроллера. Требуется OpenXR/glTF build и xr/openxr/extensions/render_model, включённый до старта. Наличие класса не доказывает доступность runtime-моделей.

Перед созданием проверьте зарегистрированный singleton и IsActive. События подключайте до AddChild: существующие модели могут появиться при EnterTree. Added не гарантирует геометрию; Removed идёт перед удалением Entity, но при фильтрации backend RID уже может быть отозван. Manager-owned модели не освобождайте.

Any/NoneSet требуют прямого родителя XROrigin3D. Фильтры рук допускают промежуточного родителя XRController3D. MakeLocalToPose компенсирует уже применённую родительскую pose; не меняет action map. Late-start повтор того же Tracker не перепривязывает tracker.

Пример и диагностика. На текущем SDK выполнены negative gate, параметры и inactive lifecycle; реальные provider events, фильтры, геометрия, шлем и визуальная готовность не проверены.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

OpenXRRenderModelManagerКонструктор
# OpenXRRenderModelManager
C#
public OpenXRRenderModelManager();

Создаёт менеджер с Tracker=Any и пустым MakeLocalToPose. До new проверьте зарегистрированный OpenXRRenderModelExtension singleton и IsActive: native notifications обращаются к wrapper ещё при создании. Конструктор не включает OpenXR, не создаёт модели и не подтверждает устройство.

Свойства2

MakeLocalToPoseСвойство
# MakeLocalToPose
C#
public string MakeLocalToPose { get; set; }

Имя pose для обратного преобразования внутреннего контейнера, изначально пустая строка. Например grip при родителе XRController3D с Pose=grip. Требуется фильтр конкретной руки. Не меняет Pose родителя или action map; существование pose проверяется без HasTrackingData. При изменении контейнер сначала сбрасывается в identity.

TrackerСвойство
# Tracker
C#
public OpenXRRenderModelManager.RenderModelTracker Tracker { get; set; }

Фильтр моделей: Any (0) — все, NoneSet (1) — без top-level path, LeftHand (2) и RightHand (3) — соответствующая рука. Изначально Any. Any/NoneSet требуют прямого родителя XROrigin3D; для рук origin должен быть предком. При изменении значения setter один раз разрешает tracker/path; повтор того же значения не переподключает поздно появившийся tracker.

Методы4

GetMakeLocalToPosestring
# GetMakeLocalToPose
C#
public string GetMakeLocalToPose();

Возвращает сохранённое имя компенсационной pose. Имя pose для обратного преобразования внутреннего контейнера, изначально пустая строка. Например grip при родителе XRController3D с Pose=grip. Требуется фильтр конкретной руки. Не меняет Pose родителя или action map; существование pose проверяется без HasTrackingData. При изменении контейнер сначала сбрасывается в identity.

Возвращает string

Сохранённое имя pose или пустая строка, не состояние трекинга.

GetTrackerOpenXRRenderModelManager.RenderModelTracker
# GetTracker
C#
public OpenXRRenderModelManager.RenderModelTracker GetTracker();

Возвращает сохранённый фильтр; не проверяет успешное разрешение tracker/path. Фильтр моделей: Any (0) — все, NoneSet (1) — без top-level path, LeftHand (2) и RightHand (3) — соответствующая рука. Изначально Any. Any/NoneSet требуют прямого родителя XROrigin3D; для рук origin должен быть предком. При изменении значения setter один раз разрешает tracker/path; повтор того же значения не переподключает поздно появившийся tracker.

Возвращает OpenXRRenderModelManager.RenderModelTracker

Текущий фильтр перечисления; не подтверждение подключённой руки.

SetMakeLocalToPosevoid
# SetMakeLocalToPose
C#
public void SetMakeLocalToPose(string makeLocalToPose);

Сохраняет имя компенсационной pose при изменении. Имя pose для обратного преобразования внутреннего контейнера, изначально пустая строка. Например grip при родителе XRController3D с Pose=grip. Требуется фильтр конкретной руки. Не меняет Pose родителя или action map; существование pose проверяется без HasTrackingData. При изменении контейнер сначала сбрасывается в identity.

Параметры
ИмяТипПо умолчанию
makeLocalToPosestring—
makeLocalToPose

Имя pose для обратного преобразования внутреннего контейнера, изначально пустая строка. Например grip при родителе XRController3D с Pose=grip. Требуется фильтр конкретной руки. Не меняет Pose родителя или action map; существование pose проверяется без HasTrackingData. При изменении контейнер сначала сбрасывается в identity.

SetTrackervoid
# SetTracker
C#
public void SetTracker(OpenXRRenderModelManager.RenderModelTracker tracker);

Меняет фильтр и отмечает список моделей для обновления; не запускает XR. Фильтр моделей: Any (0) — все, NoneSet (1) — без top-level path, LeftHand (2) и RightHand (3) — соответствующая рука. Изначально Any. Any/NoneSet требуют прямого родителя XROrigin3D; для рук origin должен быть предком. При изменении значения setter один раз разрешает tracker/path; повтор того же значения не переподключает поздно появившийся tracker.

Параметры
ИмяТипПо умолчанию
trackerOpenXRRenderModelManager.RenderModelTracker—
tracker

Фильтр моделей: Any (0) — все, NoneSet (1) — без top-level path, LeftHand (2) и RightHand (3) — соответствующая рука. Изначально Any. Any/NoneSet требуют прямого родителя XROrigin3D; для рук origin должен быть предком. При изменении значения setter один раз разрешает tracker/path; повтор того же значения не переподключает поздно появившийся tracker.

Сигналы и события2

RenderModelAddedСобытие
# RenderModelAdded
C#
public event OpenXRRenderModelManager.RenderModelAddedEventHandler RenderModelAdded;

Событие создания и прикрепления OpenXRRenderModel менеджером. Может сработать при EnterTree: подпишитесь до AddChild(manager). Не гарантирует загрузку геометрии или текущую tracking confidence; не скрывайте fallback только по этому событию.

Параметры обработчика
ИмяТипПо умолчанию
renderModelOpenXRRenderModel—
renderModel

Заимствованная manager-owned Entity новой модели. Геометрия может отсутствовать; не освобождайте её и не считайте готовым визуалом.

RenderModelRemovedСобытие
# RenderModelRemoved
C#
public event OpenXRRenderModelManager.RenderModelRemovedEventHandler RenderModelRemoved;

Событие перед remove_child/queue_free модели менеджером. Entity доступна в обработчике, но backend RID при отложенной фильтрации уже может быть отозван: не запрашивайте extension по нему. Не вызывайте Free/QueueFree для manager-owned модели и не используйте её на следующем кадре; уберите собственные ссылки и восстановите fallback.

Параметры обработчика
ИмяТипПо умолчанию
renderModelOpenXRRenderModel—
renderModel

Удаляемая manager-owned Entity, доступная только в текущем обработчике. Backend RID уже может быть недействителен; не опрашивайте по нему extension и не освобождайте Entity самостоятельно.

OpenXRRenderModelManager.RenderModelTracker

ЗначениеОписание
Any = 0

Все активные модели рендеринга отображаются независимо от того, к какому трекеру они относятся.

LeftHand = 2

Показаны только активные модели рендеринга, относящиеся к левому трекеру.

NoneSet = 1

Показаны только активные модели рендеринга, не связанные ни с одним трекером, которым мы управляем.

RightHand = 3

Показаны только активные модели рендеринга, относящиеся к правому трекеру.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.