reckfellENGINE

XRInterface

Базовый класс для реализации интерфейса XR.

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

Базовый класс для реализации интерфейса XR.

Этот класс должен быть внедрен для обеспечения доступа Reckfell к AR или VR-платформе, и они должны быть реализованы в качестве модулей C++ или ReckfellExtension Часть интерфейса подвергается воздействию C#, так что вы можете обнаружить, открыть и настроить платформу AR или VR. Интерфейсы должны быть написаны таким образом, чтобы просто дать им возможность дать нам рабочую схему. Вы можете получить доступные интерфейсы через XRServer.

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

Свойства4

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

В интерфейсе дополненной реальности, если true включено обнаружение привязки.

EnvironmentBlendModeСвойство
# EnvironmentBlendMode
C#
public XRInterface.EnvironmentBlendModeEnum EnvironmentBlendMode { get; set; }

Запрошенный режим композиции интерфейса. Базовый getter возвращает Opaque; OpenXR может эмулировать AlphaBlend при другом внутреннем режиме. Setter свойства не сообщает об отказе: для обработки результата используйте SetEnvironmentBlendMode. Это не флаг готовности видеокамер и не настройка TransparentBg.

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

true , если это основной интерфейс.

XRPlayAreaModeСвойство
# XRPlayAreaMode
C#
public XRInterface.PlayAreaMode XRPlayAreaMode { get; set; }

Режим игровой зоны для этого интерфейса.

Методы30

GetAnchorDetectionIsEnabledbool
# GetAnchorDetectionIsEnabled
C#
public bool GetAnchorDetectionIsEnabled();
Возвращает bool
GetCameraFeedIdint
# GetCameraFeedId
C#
public int GetCameraFeedId();

Если это интерфейс дополненной реальности, требующий отображения потока камеры в качестве фона, этот метод возвращает идентификатор потока в CameraServer для этого интерфейса.

Возвращает int
GetCameraOffsetsReckfell.Collections.Array<Transform3D>
# GetCameraOffsets
C#
public Reckfell.Collections.Array<Transform3D> GetCameraOffsets(StringName trackerName);

Получает набор перестановок для каждого просмотра для трекера tracker_name. tracker_name должен иметь в виду XRPositionalTracker Верните пустой массив, если этот интерфейс не отвечает за этот трекер.

Параметры
ИмяТипПо умолчанию
trackerNameStringName—
Возвращает Reckfell.Collections.Array<Transform3D>
GetCameraProjectionsReckfell.Collections.Array<Projection>
# GetCameraProjections
C#
public Reckfell.Collections.Array<Projection> GetCameraProjections(StringName trackerName, double aspect, double near, double far);

Получает набор матриц проекций для каждого вида для трекера tracker_name. tracker_name должен иметь в виду XRPositionalTracker Верните пустой массив, если этот интерфейс не отвечает за этот трекер.

Параметры
ИмяТипПо умолчанию
trackerNameStringName—
aspectdouble—
neardouble—
fardouble—
Возвращает Reckfell.Collections.Array<Projection>
GetCapabilitiesuint
# GetCapabilities
C#
public uint GetCapabilities();

Возвращает комбинацию флагов XRInterface.Capabilities, предоставляющих информацию о возможностях этого интерфейса.

Возвращает uint
GetEnvironmentBlendModeXRInterface.EnvironmentBlendModeEnum
# GetEnvironmentBlendMode
C#
public XRInterface.EnvironmentBlendModeEnum GetEnvironmentBlendMode();

Возвращает режим, сообщаемый реализацией; в OpenXR — requested mode, в базовом интерфейсе — Opaque. Не подтверждает активную сессию, фокус, получение видео или согласие пользователя. Для alpha отдельно настройте прозрачный фон Viewport.

Возвращает XRInterface.EnvironmentBlendModeEnum

Режим, сообщаемый интерфейсом; не гарантия фактического видеопотока.

GetNameStringName
# GetName
C#
public StringName GetName();

Возвращает имя этого интерфейса ("OpenXR", "OpenVR", "OpenHMD", "ARKit" и т. д.).

Возвращает StringName
GetPlayAreaVector3[]
# GetPlayArea
C#
public Vector3[] GetPlayArea();

Возвращает массив векторов, представляющих физическую игровую зону, сопоставленную с виртуальным пространством вокруг точки XROrigin3D. Точки образуют выпуклый многоугольник, который можно использовать для реагирования на игровую зону или ее визуализации. Это возвращает пустой массив, если эта функция не поддерживается или если информация еще недоступна.

Возвращает Vector3[]
GetPlayAreaModeXRInterface.PlayAreaMode
# GetPlayAreaMode
C#
public XRInterface.PlayAreaMode GetPlayAreaMode();
Возвращает XRInterface.PlayAreaMode
GetProjectionForViewProjection · Устарело
# GetProjectionForView
C#
public Projection GetProjectionForView(uint view, double aspect, double near, double far);

Возвращает матрицу проекции для вида/глаза.

Параметры
ИмяТипПо умолчанию
viewuint—
aspectdouble—
neardouble—
fardouble—
Возвращает Projection
GetRenderTargetSizeVector2
# GetRenderTargetSize
C#
public Vector2 GetRenderTargetSize();

Возвращает разрешение, с которым следует визуализировать промежуточные результаты, прежде чем VR-платформа применит такие эффекты, как искажение объектива.

Возвращает Vector2
GetSupportedEnvironmentBlendModesReckfell.Collections.Array
# GetSupportedEnvironmentBlendModes
C#
public Reckfell.Collections.Array GetSupportedEnvironmentBlendModes();

Возвращает новый контейнер значений EnvironmentBlendModeEnum. Базовая реализация содержит Opaque; OpenXR без внутреннего API возвращает пустой список, после запуска может добавлять эмулируемый AlphaBlend. Проверяйте наличие конкретного значения через Contains, не индекс как bool. Контейнер можно Dispose; интерфейс остаётся заимствованным.

Возвращает Reckfell.Collections.Array

Новый Array enum-значений; может быть пустым. Проверяйте membership нужного режима.

GetSystemInfoReckfell.Collections.Dictionary
# GetSystemInfo
C#
public Reckfell.Collections.Dictionary GetSystemInfo();

Возвращает Reckfell.Collections.Dictionary с дополнительной системной информацией. Интерфейсы должны возвращать XRRuntimeName и XRRuntimeVersion, предоставляя информацию об используемой среде выполнения XR. Дополнительные записи могут быть предоставлены для конкретного интерфейса. **Примечание:**Эта информация может быть доступна только после успешного вызова XRInterface.Initialize.

Возвращает Reckfell.Collections.Dictionary
GetTrackingStatusXRInterface.TrackingStatus
# GetTrackingStatus
C#
public XRInterface.TrackingStatus GetTrackingStatus();

Если поддерживается, возвращает статус нашего отслеживания. Это позволит вам предоставить пользователю обратную связь, если есть проблемы с позиционным отслеживанием.

Возвращает XRInterface.TrackingStatus
GetTransformForViewTransform3D · Устарело
# GetTransformForView
C#
public Transform3D GetTransformForView(uint view, Transform3D camTransform);

Возвращает преобразование для вида/глаза. view — индекс вида/глаза. cam_transform — преобразование, которое сопоставляет координаты устройства с координатами сцены, обычно Entity3D.GlobalTransform текущего XROrigin3D.

Параметры
ИмяТипПо умолчанию
viewuint—
camTransformTransform3D—
Возвращает Transform3D
GetViewCountuint
# GetViewCount
C#
public uint GetViewCount();

Возвращает количество видов, которые необходимо отобразить для этого устройства. 1 для Моноскопического, 2 для Стереоскопического.

Возвращает uint
Initializebool
# Initialize
C#
public bool Initialize();

Вызовите это, чтобы инициализировать этот интерфейс. Первый инициализированный интерфейс определяется как основной интерфейс, и он будет использоваться для рендеринга вывода. После инициализации интерфейса, который вы хотите использовать, вам необходимо включить режим AR/VR вьюпорта, и рендеринг должен начаться. Примечание: Вы должны включить режим XR на главном вьюпорте для любого устройства, которое использует основной вывод Reckfell, например, для мобильного VR. Если вы сделаете это для платформы, которая обрабатывает свой собственный вывод (например, OpenVR), Reckfell покажет только один глаз без искажений на экране. В качестве альтернативы вы можете добавить отдельный узел вьюпорта в свою сцену и включить AR/VR на этом вьюпорте. Он будет использоваться для вывода на HMD, что позволит вам делать все, что угодно в главном окне, например, использовать отдельную камеру в качестве камеры зрителя или рендерить что-то совершенно другое. Хотя в настоящее время это не используется, вы можете активировать дополнительные интерфейсы. Вы можете сделать это, если хотите отслеживать контроллеры с других платформ. Однако на данный момент только один интерфейс может осуществлять рендеринг на HMD.

Возвращает bool
IsInitializedbool
# IsInitialized
C#
public bool IsInitialized();

Возвращает true, если этот интерфейс был инициализирован.

Возвращает bool
IsPassthroughEnabledbool · Устарело
# IsPassthroughEnabled
C#
public bool IsPassthroughEnabled();

Устаревший метод. Вместо него сравнивайте GetEnvironmentBlendMode() с AlphaBlend. В OpenXR он только сравнивает сообщаемый режим, не проверяет кадры камеры, session focus или разрешения; в базовом интерфейсе возвращает false.

Возвращает bool

Legacy-сравнение режима с AlphaBlend; не аппаратная проверка видео.

IsPassthroughSupportedbool · Устарело
# IsPassthroughSupported
C#
public bool IsPassthroughSupported();

Устаревший метод; используйте GetSupportedEnvironmentBlendModes и membership AlphaBlend. В текущем OpenXR есть дефект: find возвращает индекс, преобразуемый в bool; −1 даёт true, индекс 0 — false. Воспроизведён true при пустом списке без инициализации. Ошибка не исправлена; результат нельзя использовать как capability gate.

Возвращает bool

Ненадёжный legacy bool в текущем OpenXR; пустой список ошибочно даёт true.

IsPrimarybool
# IsPrimary
C#
public bool IsPrimary();
Возвращает bool
SetAnchorDetectionIsEnabledvoid
# SetAnchorDetectionIsEnabled
C#
public void SetAnchorDetectionIsEnabled(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetEnvironmentBlendModebool
# SetEnvironmentBlendMode
C#
public bool SetEnvironmentBlendMode(XRInterface.EnvironmentBlendModeEnum mode);

Запрашивает режим и возвращает результат setter реализации. Проверяйте список поддерживаемых режимов и bool; отдельно меняйте TransparentBg только после принятого запроса. OpenXR без API возвращает false, а перед завершением инициализации внутренний API может сохранить запрос для поздней проверки. Успех не подтверждает видео или фокус.

Параметры
ИмяТипПо умолчанию
modeXRInterface.EnvironmentBlendModeEnum—
mode

Запрошенный Opaque, Additive или AlphaBlend из списка поддерживаемых режимов; не индекс списка.

Возвращает bool

Принят ли запрос реализацией; не проверка прозрачности Viewport или качества passthrough.

SetPlayAreaModebool
# SetPlayAreaMode
C#
public bool SetPlayAreaMode(XRInterface.PlayAreaMode mode);

Устанавливает режим активной игровой зоны, вернет false, если режим не может быть использован с этим интерфейсом. Примечание: Изменение этого после того, как интерфейс уже инициализирован, может быть неприятным для игрока, поэтому рекомендуется выполнить центрирование на HMD с помощью XRServer.CenterOnHmd (при переключении на XRInterface.PlayAreaMode.Stage) или выполнить переключение во время смены сцены.

Параметры
ИмяТипПо умолчанию
modeXRInterface.PlayAreaMode—
Возвращает bool
SetPrimaryvoid
# SetPrimary
C#
public void SetPrimary(bool primary);
Параметры
ИмяТипПо умолчанию
primarybool—
StartPassthroughbool · Устарело
# StartPassthrough
C#
public bool StartPassthrough();

Устаревший метод. В OpenXR просто вызывает SetEnvironmentBlendMode(AlphaBlend); базовая реализация возвращает false. Не включает прозрачность Viewport и не инициализирует сессию. Для нового кода явно проверяйте список режимов и результат SetEnvironmentBlendMode.

Возвращает bool

Legacy-результат запроса AlphaBlend; не результат настройки сцены.

StopPassthroughvoid · Устарело
# StopPassthrough
C#
public void StopPassthrough();

Устаревший метод. OpenXR запрашивает Opaque без возвращаемого результата; базовая реализация ничего не делает. Не восстанавливает прежний blend mode или TransparentBg. Сохраните состояние и выполните явное обратное переключение с проверкой bool.

SupportsPlayAreaModebool
# SupportsPlayAreaMode
C#
public bool SupportsPlayAreaMode(XRInterface.PlayAreaMode mode);

Вызовите этот метод, чтобы узнать, поддерживается ли данный режим игровой зоны данным интерфейсом.

Параметры
ИмяТипПо умолчанию
modeXRInterface.PlayAreaMode—
Возвращает bool
TriggerHapticPulsevoid
# TriggerHapticPulse
C#
public void TriggerHapticPulse(string actionName, StringName trackerName, double frequency, double amplitude, double durationSec, double delaySec);

Выключает хаптический импульс на устройстве, связанном с этим интерфейсом. action_name - название действия для этого импульса. tracker_name является факультативным и может использоваться для направления импульса на конкретное устройство при условии, что это устройство связано с этим хаптическим устройством. frequency - частота импульса, установленная на 0.0 для использования системы по умолчанию. amplitude - амплитуда импульса между 0.0 и 1.0. duration_sec - продолжительность импульса в секундах. delay_sec - задержка в секундах перед подачей импульса.

Параметры
ИмяТипПо умолчанию
actionNamestring—
trackerNameStringName—
frequencydouble—
amplitudedouble—
durationSecdouble—
delaySecdouble—
Uninitializevoid
# Uninitialize
C#
public void Uninitialize();

Отключает интерфейс.

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

PlayAreaChangedСобытие
# PlayAreaChanged
C#
public event XRInterface.PlayAreaChangedEventHandler PlayAreaChanged;

Выдается при изменении игровой зоны. Это может быть результатом сброса игроком границы или входа в новую игровую зону, смены игроком режима игровой зоны, изменения масштаба мира или сброса игроком ориентации гарнитуры.

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

XRInterface.Capabilities

ЗначениеОписание
Ar = 16

Этот интерфейс поддерживает дополненную реальность (AR) (видеофон и отслеживание в реальном мире).

External = 32

Этот интерфейс выводит данные на внешнее устройство. Если используется основная область просмотра, вывод на экране представляет собой неизмененный буфер левого или правого глаза (растянутый, если размер области просмотра не изменен до того же соотношения сторон, что и XRInterface.GetRenderTargetSize). Использование отдельного узла области просмотра освобождает основную область просмотра для других целей.

Mono = 1

Этот интерфейс может работать с обычным выводом рендеринга (дополненная реальность, не основанная на HMD).

None = 0

Отсутствуют возможности XR.

Quad = 4

Этот интерфейс поддерживает квадро-рендеринг (пока не поддерживается Reckfell).

Stereo = 2

Этот интерфейс поддерживает стереоскопическую визуализацию.

Vr = 8

Этот интерфейс поддерживает VR.

XRInterface.EnvironmentBlendModeEnum

ЗначениеОписание
Additive = 1

Режим аддитивного смешивания. Обычно используется для устройств дополненной реальности или устройств виртуальной реальности с возможностью сквозного пропускания.

AlphaBlend = 2

Режим альфа-смешивания. Обычно используется для устройств дополненной или виртуальной реальности с возможностями сквозного пропускания. Альфа-канал управляет видимостью сквозного пропускания. Альфа 0,0 означает, что сквозное пропускание видимо, и этот пиксель работает в режиме АДДИТИВНОГО ПРОСТРАНСТВА. Альфа 1,0 означает, что сквозное пропускание невидимо, и этот пиксель работает в режиме НЕПРОЗРАЧНОГО ПРОСТРАНСТВА.

Opaque = 0

Режим наложения Opaque. Обычно используется для устройств виртуальной реальности.

XRInterface.PlayAreaMode

ЗначениеОписание
Area3Dof = 1

Игровая зона поддерживает только отслеживание ориентации, отслеживание положения не поддерживается, зона будет центрирована вокруг игрока.

Custom = 2147483647

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

Roomscale = 3

Игрок может свободно перемещаться, полное отслеживание положения.

Sitting = 2

Игрок находится в сидячем положении, отслеживание положения ограничено, вокруг игрока зафиксирован охранник.

Stage = 4

То же, что и XRInterface.PlayAreaMode.Roomscale, но исходная точка фиксируется в центре физического пространства. В этом режиме может быть отключена центрация на системном уровне, требующая использования XRServer.CenterOnHmd.

Unknown = 0

Режим игровой зоны не установлен или недоступен.

XRInterface.TrackingStatus

ЗначениеОписание
ExcessiveMotion = 1

Отслеживание затруднено из-за чрезмерного движения (игрок движется быстрее, чем отслеживание может за ним уследить).

InsufficientFeatures = 2

Отслеживание затруднено из-за недостатка функций, слишком темно (для отслеживания с помощью камеры), игрок заблокирован и т. д.

NormalTracking = 0

Отслеживание работает так, как и ожидалось.

NotTracking = 4

Отслеживание не работает (камера не подключена или закрыта, маяки выключены, петушок улетел и т. д.).

UnknownTracking = 3

Мы не знаем статус отслеживания, или этот интерфейс не обеспечивает обратную связь.

XRInterface.VrsTextureFormat

ЗначениеОписание
FragmentDensityMap = 2

Формат текстуры такой же, как и ожидается от расширения Vulkan VK_EXT_fragment_density_map.

FragmentShadingRate = 1

Формат текстуры такой же, как и ожидается от расширения Vulkan VK_KHR_fragment_shading_rate.

RasterizationRateMap = 3

Текстура содержит металл rasterizationRateMapЭто не настоящая текстура, а не непрозрачная обертка. MTLRasterizationRateMap объект.

Unified = 0

Формат текстуры такой же, как и возвращаемый Xrvrs.MakeVrsTexture.

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

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

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

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