OpenXRInterface
Интерфейс OpenXR.
Интерфейс OpenXR.
Интерфейс OpenXR позволяет Reckfell взаимодействовать со средами выполнения OpenXR и создавать игры и приложения XR. Из-за потребностей OpenXR этот интерфейс работает немного иначе, чем другие XR-интерфейсы на основе плагинов. Его необходимо инициализировать при запуске Reckfell. Вам необходимо включить OpenXR, настройки для этого можно найти в настройках вашего игрового проекта под заголовком XR. Вам необходимо отметить область просмотра для использования с XR, чтобы Reckfell знал, какой результат рендеринга следует выводить на гарнитуру.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRInterfaceКонструктор
public OpenXRInterface();Свойства7
DisplayRefreshRateСвойство
public float DisplayRefreshRate { get; set; }Частота обновления дисплея для текущего HMD. Работает только в том случае, если эта функция поддерживается средой выполнения OpenXR и после инициализации интерфейса.
FoveationDynamicСвойство
public bool FoveationDynamic { get; set; }Если true, включается динамическая регулировка фокусировки. Интерфейс должен быть инициализирован, прежде чем эта функция станет доступна. Если включено, фокусировка будет автоматически регулироваться в диапазоне от низкого до OpenXRInterface.FoveationLevel.
FoveationLevelСвойство
public int FoveationLevel { get; set; }Уровень фокусировки, от 0 (выкл.) до 3 (высокий). Интерфейс должен быть инициализирован, прежде чем эта функция станет доступна.
FoveationWithSubsampledImagesСвойство
public bool FoveationWithSubsampledImages { get; set; }Если true, включается субдискретизация изображений с фовеацией, что может повысить производительность в Vulkan.
RenderTargetSizeMultiplierСвойство
public double RenderTargetSizeMultiplier { get; set; }Множитель размера рендера для текущего HMD. Должен быть установлен до инициализации интерфейса.
VrsMinRadiusСвойство
public float VrsMinRadius { get; set; }Минимальный радиус вокруг точки фокусировки, где гарантируется полное качество, если VRS используется как процент от размера экрана.
Примечание: Только для Mobile и Forward+ рендереров. Требуется, чтобы Viewport.VrsMode был установлен на Viewport.VrsModeEnum.XR.
VrsStrengthСвойство
public float VrsStrength { get; set; }Сила, используемая для расчета карты плотности VRS. Чем больше это значение, тем заметнее VRS. Это повышает производительность за счет качества.
Примечание: Только для Mobile и Forward+ рендереров. Требуется, чтобы Viewport.VrsMode был установлен на Viewport.VrsModeEnum.XR.
Методы38
GetActionSetsReckfell.Collections.Array
public Reckfell.Collections.Array GetActionSets();Возвращает список наборов действий, зарегистрированных в Reckfell (загружаемых из карты действий во время выполнения).
Reckfell.Collections.ArrayGetActiveViewConfigurationOpenXRInterface.ViewConfiguration
public OpenXRInterface.ViewConfiguration GetActiveViewConfiguration();Получает конфигурацию активного вида. Примечание: Это возвращает действительное значение только после инициализации OpenXR.
OpenXRInterface.ViewConfigurationGetAvailableDisplayRefreshRatesReckfell.Collections.Array
public Reckfell.Collections.Array GetAvailableDisplayRefreshRates();Возвращает список частот обновления дисплея, поддерживаемых текущим HMD. Возвращается только в том случае, если эта функция поддерживается средой выполнения OpenXR и после инициализации интерфейса.
Reckfell.Collections.ArrayGetDisplayRefreshRatefloat
public float GetDisplayRefreshRate();floatGetFoveationDynamicbool
public bool GetFoveationDynamic();boolGetFoveationLevelint
public int GetFoveationLevel();intGetFoveationWithSubsampledImagesbool
public bool GetFoveationWithSubsampledImages();boolGetHandJointAngularVelocityVector3 · Устарело
public Vector3 GetHandJointAngularVelocity(OpenXRInterface.Hand hand, OpenXRInterface.HandJoints joint);Если включено отслеживание рук, возвращает угловую скорость сустава (joint) руки (hand), как предоставлено OpenXR. Это относительно XROrigin3D!
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
joint | OpenXRInterface.HandJoints | — |
Vector3GetHandJointFlagsOpenXRInterface.HandJointFlags · Устарело
public OpenXRInterface.HandJointFlags GetHandJointFlags(OpenXRInterface.Hand hand, OpenXRInterface.HandJoints joint);Если ручное отслеживание включено, возвращает флаги, информирующие нас о достоверности данных отслеживания.
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
joint | OpenXRInterface.HandJoints | — |
OpenXRInterface.HandJointFlagsGetHandJointLinearVelocityVector3 · Устарело
public Vector3 GetHandJointLinearVelocity(OpenXRInterface.Hand hand, OpenXRInterface.HandJoints joint);Если включено отслеживание рук, возвращает линейную скорость сустава (joint) руки (hand), как предоставлено OpenXR. Это относительно XROrigin3D без применения мирового масштаба!
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
joint | OpenXRInterface.HandJoints | — |
Vector3GetHandJointPositionVector3 · Устарело
public Vector3 GetHandJointPosition(OpenXRInterface.Hand hand, OpenXRInterface.HandJoints joint);Если включено отслеживание рук, возвращает положение сустава (joint) руки (hand), как указано в OpenXR. Это относительно XROrigin3D без применения мирового масштаба!
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
joint | OpenXRInterface.HandJoints | — |
Vector3GetHandJointRadiusfloat · Устарело
public float GetHandJointRadius(OpenXRInterface.Hand hand, OpenXRInterface.HandJoints joint);Если включено отслеживание рук, возвращает радиус сочленения (joint) руки (hand), как предоставлено OpenXR. Это без применения мирового масштаба!
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
joint | OpenXRInterface.HandJoints | — |
floatGetHandJointRotationQuaternion · Устарело
public Quaternion GetHandJointRotation(OpenXRInterface.Hand hand, OpenXRInterface.HandJoints joint);Если отслеживание рук включено, возвращает вращение сустава (joint) руки (hand), как предусмотрено OpenXR.
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
joint | OpenXRInterface.HandJoints | — |
QuaternionGetHandTrackingSourceOpenXRInterface.HandTrackedSource · Устарело
public OpenXRInterface.HandTrackedSource GetHandTrackingSource(OpenXRInterface.Hand hand);Если отслеживание рук включено и поддерживается источник отслеживания рук, получает источник данных отслеживания рук для hand.
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
OpenXRInterface.HandTrackedSourceGetMotionRangeOpenXRInterface.HandMotionRange
public OpenXRInterface.HandMotionRange GetMotionRange(OpenXRInterface.Hand hand);Если отслеживание рук включено и поддерживается диапазон движения, получает текущий настроенный диапазон движения для hand.
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
OpenXRInterface.HandMotionRangeGetRecommendedTargetSizeVector2
public Vector2 GetRecommendedTargetSize();Возвращает рекомендуемый размер мишени с запуска OpenXR.
Это может не соответствовать нынешнему целевому размеру, возвращаемому XRInterface.GetRenderTargetSize.
Vector2GetRenderTargetSizeMultiplierdouble
public double GetRenderTargetSizeMultiplier();doubleGetSessionStateOpenXRInterface.SessionState
public OpenXRInterface.SessionState GetSessionState();Возвращает текущее состояние нашего сеанса OpenXR.
OpenXRInterface.SessionStateGetVrsMinRadiusfloat
public float GetVrsMinRadius();floatGetVrsStrengthfloat
public float GetVrsStrength();floatIsActionSetActivebool
public bool IsActionSetActive(string name);Возвращает true, если указанный набор действий активен.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
boolIsEyeGazeInteractionSupportedbool
public bool IsEyeGazeInteractionSupported();Возвращает возможности расширения взаимодействия взгляда. Примечание: Это возвращает допустимое значение только после инициализации OpenXR.
boolIsFoveationSupportedbool
public bool IsFoveationSupported();Возвращает true, если поддерживается расширение фовеации OpenXR. Интерфейс должен быть инициализирован, прежде чем функция вернет допустимое значение.
Примечание: При использовании драйвера рендеринга Vulkan для поддержки фовеации необходимо установить Viewport.VrsMode в значение Viewport.VrsModeEnum.XR.
boolIsHandInteractionSupportedbool
public bool IsHandInteractionSupported();Возвращает true, если профиль взаимодействия рук OpenXR поддерживается и включен.
Примечание: Это возвращает допустимое значение только после инициализации OpenXR.
boolIsHandTrackingSupportedbool
public bool IsHandTrackingSupported();Возвращает true, если отслеживание рук OpenXR поддерживается и включено.
Примечание: Это возвращает допустимое значение только после инициализации OpenXR.
boolIsUserPresenceSupportedbool
public bool IsUserPresenceSupported();Возвращает true, если расширение присутствия пользователя OpenXR поддерживается и включено.
Примечание: Это возвращает допустимое значение только после инициализации OpenXR.
boolIsUserPresentbool
public bool IsUserPresent();Возвращает true, если система обнаружила присутствие пользователя в среде XR.
boolSetActionSetActivevoid
public void SetActionSetActive(string name, bool active);Устанавливает заданный набор действий как активный или неактивный.
| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
active | bool | — |
SetCpuLevelvoid
public void SetCpuLevel(OpenXRInterface.PerfSettingsLevel level);Устанавливает уровень производительности ЦП устройства OpenXR.
| Имя | Тип | По умолчанию |
|---|---|---|
level | OpenXRInterface.PerfSettingsLevel | — |
SetDisplayRefreshRatevoid
public void SetDisplayRefreshRate(float refreshRate);| Имя | Тип | По умолчанию |
|---|---|---|
refreshRate | float | — |
SetFoveationDynamicvoid
public void SetFoveationDynamic(bool foveationDynamic);| Имя | Тип | По умолчанию |
|---|---|---|
foveationDynamic | bool | — |
SetFoveationLevelvoid
public void SetFoveationLevel(int foveationLevel);| Имя | Тип | По умолчанию |
|---|---|---|
foveationLevel | int | — |
SetFoveationWithSubsampledImagesvoid
public void SetFoveationWithSubsampledImages(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetGpuLevelvoid
public void SetGpuLevel(OpenXRInterface.PerfSettingsLevel level);Устанавливает уровень производительности графического процессора (GPU) устройства OpenXR.
| Имя | Тип | По умолчанию |
|---|---|---|
level | OpenXRInterface.PerfSettingsLevel | — |
SetMotionRangevoid
public void SetMotionRange(OpenXRInterface.Hand hand, OpenXRInterface.HandMotionRange motionRange);Если отслеживание рук включено и поддерживается диапазон движения, устанавливает текущий настроенный диапазон движения для hand на motion_range.
| Имя | Тип | По умолчанию |
|---|---|---|
hand | OpenXRInterface.Hand | — |
motionRange | OpenXRInterface.HandMotionRange | — |
SetRenderTargetSizeMultipliervoid
public void SetRenderTargetSizeMultiplier(double multiplier);| Имя | Тип | По умолчанию |
|---|---|---|
multiplier | double | — |
SetVrsMinRadiusvoid
public void SetVrsMinRadius(float radius);| Имя | Тип | По умолчанию |
|---|---|---|
radius | float | — |
SetVrsStrengthvoid
public void SetVrsStrength(float strength);| Имя | Тип | По умолчанию |
|---|---|---|
strength | float | — |
Сигналы и события12
CpuLevelChangedСобытие
public event OpenXRInterface.CpuLevelChangedEventHandler CpuLevelChanged;Информирует об изменении уровня производительности CPU устройства в указанном поддомене (subdomain).
| Имя | Тип | По умолчанию |
|---|---|---|
subDomain | long | — |
fromLevel | long | — |
toLevel | long | — |
GpuLevelChangedСобытие
public event OpenXRInterface.GpuLevelChangedEventHandler GpuLevelChanged;Информирует об изменении уровня производительности графического процессора устройства в указанном поддомене (subdomain).
| Имя | Тип | По умолчанию |
|---|---|---|
subDomain | long | — |
fromLevel | long | — |
toLevel | long | — |
InstanceExitingСобытие
public event Action InstanceExiting;Сообщает, что наш экземпляр OpenXR завершает работу.
PoseRecenteredСобытие
public event Action PoseRecentered;Информирует пользователя, находящегося в очереди, о положении игрока.
RefreshRateChangedСобытие
public event OpenXRInterface.RefreshRateChangedEventHandler RefreshRateChanged;Сообщает пользователю об изменении частоты обновления HMD. Примечание: Выдается только в том случае, если среда выполнения XR поддерживает расширение частоты обновления.
| Имя | Тип | По умолчанию |
|---|---|---|
refreshRate | double | — |
SessionBegunСобытие
public event Action SessionBegun;Сообщает о начале сеанса OpenXR.
SessionFocussedСобытие
public event Action SessionFocussed;Информирует, что сеанс OpenXR теперь имеет фокус, например, выходные данные отправляются на HMD, и мы получаем входные данные XR.
SessionLossPendingСобытие
public event Action SessionLossPending;Сообщает, что наш сеанс OpenXR находится в процессе потери.
SessionStoppingСобытие
public event Action SessionStopping;Сообщает, что наш сеанс OpenXR останавливается.
SessionSynchronizedСобытие
public event Action SessionSynchronized;Сообщает, что наш сеанс OpenXR синхронизирован.
SessionVisibleСобытие
public event Action SessionVisible;Сообщает, что наш сеанс OpenXR теперь виден, например, выходные данные отправляются на HMD, но мы не получаем входные данные XR.
UserPresenceChangedСобытие
public event OpenXRInterface.UserPresenceChangedEventHandler UserPresenceChanged;Signal Излучается при изменении значения присутствия пользователя. Примечание: Этот сигнал не будет излучаться во время запуска и отключения приложения. Разработчики должны исходить из того, что пользователь получает свое присутствие при запуске и теряется при отключении.
| Имя | Тип | По умолчанию |
|---|---|---|
isUserPresent | bool | — |
OpenXRInterface.Hand
OpenXRInterface.HandJointFlags
| Значение | Описание |
|---|---|
AngularVelocityValid = 32 | Если установлено, наши данные об угловой скорости действительны, в противном случае данные об угловой скорости ненадежны и не должны использоваться. |
LinearVelocityValid = 16 | Если установлено, наши данные о линейной скорости действительны, в противном случае данные о линейной скорости ненадежны и не должны использоваться. |
None = 0 | Флаги не установлены. |
OrientationTracked = 2 | Если установлено, данные об ориентации берутся из данных отслеживания, в противном случае данные об ориентации содержат прогнозируемые данные. |
OrientationValid = 1 | Если установлено, данные об ориентации действительны, в противном случае данные об ориентации ненадежны и не должны использоваться. |
PositionTracked = 8 | Если установлено, позиционные данные берутся из данных отслеживания, в противном случае позиционные данные содержат прогнозируемые данные. |
PositionValid = 4 | Если установлено, позиционные данные действительны, в противном случае позиционные данные ненадежны и не должны использоваться. |
OpenXRInterface.HandJoints
| Значение | Описание |
|---|---|
IndexDistal = 9 | Дистальный сустав фаланги указательного пальца. |
IndexIntermediate = 8 | Промежуточный сустав фаланги указательного пальца. |
IndexMetacarpal = 6 | Пястно-запястный сустав указательного пальца. |
IndexProximal = 7 | Проксимальный сустав фаланги указательного пальца. |
IndexTip = 10 | Кончик указательного пальца. |
LittleDistal = 24 | Дистальный сустав фаланги мизинца. |
LittleIntermediate = 23 | Промежуточный сустав фаланги мизинца. |
LittleMetacarpal = 21 | Пястно-запястный сустав мизинца. |
LittleProximal = 22 | Проксимальный сустав фаланги мизинца. |
LittleTip = 25 | Сустав кончика мизинца. |
Max = 26 | Представляет размер перечисления |
MiddleDistal = 14 | Дистальный сустав фаланги среднего пальца. |
MiddleIntermediate = 13 | Промежуточный сустав фаланги среднего пальца. |
MiddleMetacarpal = 11 | Пястно-запястный сустав среднего пальца. |
MiddleProximal = 12 | Проксимальный сустав фаланги среднего пальца. |
MiddleTip = 15 | Кончик среднего пальца. |
Palm = 0 | Ладонный сустав. |
RingDistal = 19 | Дистальный сустав фаланги безымянного пальца. |
RingIntermediate = 18 | Промежуточный сустав фаланги безымянного пальца. |
RingMetacarpal = 16 | Пястно-запястный сустав безымянного пальца. |
RingProximal = 17 | Проксимальный сустав фаланги безымянного пальца. |
RingTip = 20 | Сустав кончика безымянного пальца. |
ThumbDistal = 4 | Дистальный сустав большого пальца. |
ThumbMetacarpal = 2 | Пястно-запястный сустав большого пальца. |
ThumbProximal = 3 | Проксимальный сустав большого пальца. |
ThumbTip = 5 | Сустав кончика большого пальца. |
Wrist = 1 | Лучезапястный сустав. |
OpenXRInterface.HandMotionRange
| Значение | Описание |
|---|---|
ConformToController = 1 | Соответствует форме контроллера: если пользователь закрывает руки, отслеживаемые данные соответствуют форме контроллера. |
Max = 2 | Максимальное значение для перечисления диапазона движения. |
Unobstructed = 0 | Полный диапазон рук, если пользователь сжимает руки в кулак, мы делаем полный кулак. |
OpenXRInterface.HandTrackedSource
| Значение | Описание |
|---|---|
Controller = 2 | Источником отслеживания руки является контроллер, положения костей определяются на основе входных данных контроллера. |
Max = 3 | Представляет размер перечисления |
Unknown = 0 | Источник данных отслеживания рук неизвестен (расширение, вероятно, не поддерживается). |
Unobstructed = 1 | Источник отслеживания рук не имеет препятствий, это означает, что используется точный метод отслеживания рук, например, оптическое отслеживание рук, перчатки с данными и т. д. |
OpenXRInterface.PerfSettingsLevel
| Значение | Описание |
|---|---|
Boost = 3 | Приложение вошло в раздел с очень высокой сложностью, в ходе которого XR Время запуска может выйти за пределы термически устойчивого диапазона. |
PowerSavings = 0 | Приложение вошло в раздел non-XR (head-locked / статический экран), в течение которого приоритет отдается энергосбережению. |
SustainedHigh = 2 | Приложение вошло в раздел высокой или динамической сложности, в ходе которого XR Время запуска стремится к последовательному XR-композитингу и рендерингу кадров в термически устойчивом диапазоне. |
SustainedLow = 1 | Приложение вошло в стадию низкой и стабильной сложности, в течение которой снижение мощности важнее, чем случайные задержки рендеринга кадров. |
OpenXRInterface.PerfSettingsNotificationLevel
| Значение | Описание |
|---|---|
Impaired = 2 | Sub-domain достиг критического уровня, при котором приложение должно начать радикальные действия по смягчению последствий. |
Normal = 0 | Поддомен достиг уровня, на котором не требуется никаких дополнительных действий, кроме применяемых в настоящее время. |
Warning = 1 | Поддомен достиг уровня раннего предупреждения, на котором приложение должно начать упреждающие действия по смягчению последствий. |
OpenXRInterface.PerfSettingsSubDomain
| Значение | Описание |
|---|---|
Compositing = 0 | Производительность compositing в среде выполнения достигла нового уровня. |
Rendering = 1 | Производительность рендеринга приложений вышла на новый уровень. |
Thermal = 2 | Температура устройства достигла нового уровня. |
OpenXRInterface.SessionState
| Значение | Описание |
|---|---|
Exiting = 8 | Экземпляр OpenXR вот-вот будет уничтожен, и мы завершаем работу. При переходе в это состояние генерируется сигнал |
Focused = 5 | Приложение синхронизировало свой цикл кадров со временем выполнения, мы рендерируем вывод пользователю и получаем вход XR. |
Idle = 1 | Начальное состояние после создания сеанса OpenXR или после его уничтожения. СЕССИЯ_СТАТИВНАЯ |
LossPending = 7 | Сеанс скоро будет потерян. СЕССИЯ_СТАТИВНО-ИССЛЕДОВАТЕЛЬСКАЯ |
Ready = 2 | OpenXR готов начать наш сеанс. Сигнал |
Stopping = 6 | Наш сеанс останавливается. СЕССИЯ_СТАТИВНАЯ |
Synchronized = 3 | Приложение синхронизировало свой цикл кадров со средой выполнения, но мы ничего не отображаем. |
Unknown = 0 | Состояние сеанса неизвестно, мы еще не пробовали настраивать OpenXR. |
Visible = 4 | Приложение синхронизировало свой цикл кадров со временем выполнения, и мы рендерируем вывод пользователю, однако мы не получаем пользовательского ввода. |
OpenXRInterface.ViewConfiguration
| Значение | Описание |
|---|---|
Mono = 0 | Конфигурация выхода XR моноскопическая. |
Stereo = 1 | Конфигурация вывода XR стереоскопична. |
StereoWithInset = 2 | Конфигурация выхода XR является стереоскопической с дополнительной фтивированной трансформацией. |
Unknown = 255 | Конфигурация вывода XR неизвестна. |
Unset = 254 | Конфигурация вывода XR еще не определена. |