reckfellENGINE

XREntity3D

Привязка Entity к именованной pose tracker.

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

XREntity3D получает трансформ выбранной pose. Размещайте непосредственно под XROrigin3D. Новый экземпляр имеет пустой Tracker, Pose=default и ShowWhenTracked=false. Задавайте Tracker до Pose: смена tracker обычно сбрасывает имя pose.

GetIsActive проверяет наличие pose, а не актуальность её данных. После потери tracking остаётся последний трансформ. GetHasTrackingData хранит кэшированный флаг. Подтверждён дефект: SetPoseName не обновляет его, поэтому переключение на отсутствующую pose может оставить true. При динамической смене берите GetPose(), проверяйте null и HasTrackingData самой pose, а также фокус приложения. Не изменяйте pose, которой управляет XR-интерфейс.

TrackingChanged сообщает только смену кэшированного флага. ShowWhenTracked требует основного XR-интерфейса. Исходник обновляет видимость до записи нового флага tracking; корректность переходов видимости на устройстве не подтверждена. Для запрета взаимодействий используйте явную проверку состояния.

TriggerHapticPulse — запрос, а не подтверждение вибрации. Длительность задаётся в секундах; текущий OpenXR-путь не применяет delaySec. Проверены трансформы, доступность pose, потеря tracking и дефект её выбора с искусственным tracker; исправлений движка нет. Схема и диагностика: компоненты XR.

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

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

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

Создаёт Entity привязки к tracker: Tracker пуст, Pose=default, ShowWhenTracked=false, текущих данных нет. Должен быть дочерним XROrigin3D. Сам не запускает XR-сеанс.

Свойства3

PoseСвойство
# Pose
C#
public StringName Pose { get; set; }

Имя выбранной позы, изначально default; например grip или aim при их наличии. Setter копирует трансформ существующей pose, но не обновляет флаг GetHasTrackingData. Подтверждён дефект: при смене на отсутствующую pose старый true сохраняется. Для динамического выбора проверяйте GetPose() и HasTrackingData самой pose; настройте имя до начала обработки взаимодействий.

ShowWhenTrackedСвойство
# ShowWhenTracked
C#
public bool ShowWhenTracked { get; set; }

Политика видимости по tracking, изначально false. Работает только при наличии основного XR-интерфейса; без него Visible не меняется. В исходнике обновление видимости при смене tracking вызывается до записи нового флага, поэтому своевременное скрытие на устройстве здесь не подтверждено. Для разрешения взаимодействий отдельно проверяйте pose и tracking; видимость не является проверкой безопасности.

TrackerСвойство
# Tracker
C#
public StringName Tracker { get; set; }

Имя tracker, изначально пустое; например left_hand или right_hand. Это не числовой ID и не путь ресурса. Смена снимает старые связи, выбирает новый tracker и сбрасывает Pose в default. Если уже привязан тот же tracker, setter ничего не делает. Задавайте Tracker до Pose. Наличие имени не подтверждает подключение устройства.

Методы10

GetHasTrackingDatabool
# GetHasTrackingData
C#
public bool GetHasTrackingData();

Возвращает кэшированный флаг, обновляемый событиями выбранной pose и привязкой tracker. При потере данных становится false; старый трансформ сохраняется. Дефект смены Pose: setter не пересчитывает флаг, поэтому он может быть устаревшим. При динамическом выборе дополнительно проверяйте GetPose() и HasTrackingData полученной pose.

Возвращает bool

Кэшированный bool, который может устареть после смены Pose до следующего обновления.

GetIsActivebool
# GetIsActive
C#
public bool GetIsActive();

Проверяет наличие tracker и именованной pose. После InvalidatePose может оставаться true, хотя tracking потерян. Это не фокус сеанса, не свежесть данных и не разрешение взаимодействия.

Возвращает bool

true при наличии tracker и pose, даже если tracking этой pose потерян.

GetPoseXRPose
# GetPose
C#
public XRPose GetPose();

Возвращает объект выбранной pose или null, если tracker/имя отсутствуют. Это состояние tracker, не снимок: потеря tracking сохраняет прежний трансформ. Проверяйте HasTrackingData самой pose; не изменяйте поля состояния, которыми управляет XR-интерфейс.

Возвращает XRPose

Состояние выбранной pose или null. Данные могут быть сохранены после потери tracking.

GetPoseNameStringName
# GetPoseName
C#
public StringName GetPoseName();

Возвращает настроенное имя pose, изначально default. Не подтверждает наличие pose или актуальных данных.

Возвращает StringName

Настроенное имя pose; изначально default.

GetShowWhenTrackedbool
# GetShowWhenTracked
C#
public bool GetShowWhenTracked();

Возвращает настройку ShowWhenTracked, изначально false. Это не текущая Visible и не наличие tracking.

Возвращает bool

Настройка политики, изначально false; не текущая видимость.

GetTrackerStringName
# GetTracker
C#
public StringName GetTracker();

Возвращает настроенное имя tracker, даже если устройства нет. После создания строка пустая; это не числовой ID.

Возвращает StringName

Настроенное имя tracker; изначально пустое.

SetPoseNamevoid
# SetPoseName
C#
public void SetPoseName(StringName pose);

Имя выбранной позы, изначально default; например grip или aim при их наличии. Setter копирует трансформ существующей pose, но не обновляет флаг GetHasTrackingData. Подтверждён дефект: при смене на отсутствующую pose старый true сохраняется. Для динамического выбора проверяйте GetPose() и HasTrackingData самой pose; настройте имя до начала обработки взаимодействий.

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

Имя pose tracker, например grip; наличие проверяйте отдельно. Setter не обновляет кэш tracking.

SetShowWhenTrackedvoid
# SetShowWhenTracked
C#
public void SetShowWhenTracked(bool show);

Политика видимости по tracking, изначально false. Работает только при наличии основного XR-интерфейса; без него Visible не меняется. В исходнике обновление видимости при смене tracking вызывается до записи нового флага, поэтому своевременное скрытие на устройстве здесь не подтверждено. Для разрешения взаимодействий отдельно проверяйте pose и tracking; видимость не является проверкой безопасности.

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

Включить политику видимости; без основного XR-интерфейса она не меняет Visible.

SetTrackervoid
# SetTracker
C#
public void SetTracker(StringName trackerName);

Имя tracker, изначально пустое; например left_hand или right_hand. Это не числовой ID и не путь ресурса. Смена снимает старые связи, выбирает новый tracker и сбрасывает Pose в default. Если уже привязан тот же tracker, setter ничего не делает. Задавайте Tracker до Pose. Наличие имени не подтверждает подключение устройства.

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

Имя tracker, например left_hand; задавайте до выбора Pose.

TriggerHapticPulsevoid
# TriggerHapticPulse
C#
public void TriggerHapticPulse(string actionName, double frequency, double amplitude, double durationSec, double delaySec);

Передаёт запрос основному XR-интерфейсу для настроенного Tracker. Нужны действующий сеанс и настроенное выходное действие. Частота в Гц, амплитуда 0…1, длительность и задержка в секундах. Текущий OpenXR-путь преобразует длительность в наносекунды, но delaySec игнорирует. Метод не возвращает подтверждение устройства; физическая вибрация здесь не проверена.

Параметры
ИмяТипПо умолчанию
actionNamestring—
frequencydouble—
amplitudedouble—
durationSecdouble—
delaySecdouble—
actionName

Внутреннее имя действия. Для запроса вибрации нужно настроенное выходное действие.

frequency

Частота в Гц; 0 запрашивает выбор частоты runtime. Проверяйте конечность и неотрицательность до вызова.

amplitude

Конечная амплитуда от 0 до 1 включительно; этот прокси не гарантирует проверку диапазона.

durationSec

Положительная конечная длительность в секундах; не миллисекунды и не наносекунды.

delaySec

Задержка в секундах. В текущем OpenXR-пути игнорируется; используйте 0 и планируйте отложенный вызов своей логикой.

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

TrackingChangedСобытие
# TrackingChanged
C#
public event XREntity3D.TrackingChangedEventHandler TrackingChanged;

Событие изменения кэшированного флага tracking; повтор того же состояния не испускается. Это не событие каждого кадра pose, не фокус и не уведомление о каждой смене Pose. Учитывайте дефект пересчёта флага при выборе pose.

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

Новое значение кэшированного флага; не наличие устройства и не состояние фокуса.

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

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

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

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