reckfellENGINE

XRServer

Сервер для функций дополненной и виртуальной реальности.

На этой странице
class XRServerReckfellSharp

Сервер для функций дополненной и виртуальной реальности.

Сервер дополненной (AR) и виртуальной (VR) реальности является сердцем нашего решения для Расширенной и Виртуальной Реальности и выполняет всю обработку.

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

Свойства5

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

Если установлено значение true, сцена будет визуализироваться так, как будто камера заблокирована на XROrigin3D. Примечание: Это не очень удобно для пользователей. Эта настройка существует для проведения бенчмаркинга или автоматизированного тестирования, когда вы хотите контролировать то, что визуализируется через код.

PrimaryInterfaceСвойство
# PrimaryInterface
C#
public static XRInterface PrimaryInterface { get; set; }

Основной XRInterface, связанный в данный момент с XRServer.

SingletonСвойство
# Singleton
C#
public static XRServerInstance Singleton { get; }
WorldOriginСвойство
# WorldOrigin
C#
public static Transform3D WorldOrigin { get; set; }

Игровой origin XRServer. Активный XROrigin3D публикует сюда свой мировой трансформ; прямое присваивание может быть перезаписано им. Setter испускает WorldOriginChanged даже при повторе. Для перемещения рига двигайте его origin/тело, не поддерживайте два независимых владельца. GetAdjustedTransform pose не включает это значение.

WorldScaleСвойство
# WorldScale
C#
public static double WorldScale { get; set; }

Общий масштаб tracking относительно игровых единиц, изначально 1. Setter ограничивает конечные значения 0.01…1000 и передаёт состояние рендеру. Проверяйте конечность до вызова: сравнения диапазона не отбрасывают NaN. Меняет поправку pose, не локальный Scale Entity и не сохранённые скорости.

Методы26

AddInterfacevoid
# AddInterface
C#
public static void AddInterface(XRInterface @interface);

Регистрирует объект XRInterface.

Параметры
ИмяТипПо умолчанию
interfaceXRInterface—
AddTracker2 перегрузки
# AddTracker · 1/2
C#
public static void AddTracker(XRPositionalTracker tracker);

Регистрирует ненулевой объект по текущему имени. Повтор той же ссылки не испускает событие; другой объект с тем же именем заменяет запись и вызывает TrackerUpdated. Новое имя вызывает TrackerAdded. Не обнаруживает устройство и не проверяет аппаратные возможности. Имя сохраняйте стабильным до удаления.

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

Ненулевой объект с уже заданным стабильным именем. Удаление использует имя, не идентичность ссылки.

# AddTracker · 2/2
C#
public static void AddTracker(XRTracker tracker);

Регистрирует ненулевой объект по текущему имени. Повтор той же ссылки не испускает событие; другой объект с тем же именем заменяет запись и вызывает TrackerUpdated. Новое имя вызывает TrackerAdded. Не обнаруживает устройство и не проверяет аппаратные возможности. Имя сохраняйте стабильным до удаления.

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

Ненулевой объект с уже заданным стабильным именем. Удаление использует имя, не идентичность ссылки.

CenterOnHmdvoid
# CenterOnHmd
C#
public static void CenterOnHmd(XRServer.RotationMode rotationMode, bool keepHeight);

Важно правильно понимать эту функцию. Платформы дополненной и виртуальной реальности (AR) и виртуальной реальности (VR) обрабатывают позиционирование немного по-разному. На платформах, не поддерживающих пространственное отслеживание, наша исходная точка (0, 0, 0) — это местоположение нашего шлема виртуальной реальности (HMD), но вы практически не можете контролировать направление взгляда игрока в реальном мире. На платформах, поддерживающих пространственное отслеживание, наша исходная точка сильно зависит от системы. В OpenVR наша исходная точка обычно находится в центре пространства отслеживания на земле. На других платформах это часто местоположение камеры отслеживания. Этот метод позволяет центрировать трекер относительно местоположения шлема виртуальной реальности (HMD). Он берёт текущее местоположение шлема виртуальной реальности и использует его для корректировки всех данных отслеживания; по сути, он адаптирует реальный мир к текущему положению игрока в игровом мире. Для получения приемлемых результатов этот метод должен быть доступен для отслеживания. Это часто происходит через несколько кадров после запуска игры. Вызвать этот метод следует через несколько секунд. Например, когда пользователь запрашивает перенастройку дисплея, удерживая назначенную кнопку на контроллере в течение короткого периода времени, или при реализации механизма телепортации.

Параметры
ИмяТипПо умолчанию
rotationModeXRServer.RotationMode—
keepHeightbool—
ClearReferenceFramevoid
# ClearReferenceFrame
C#
public static void ClearReferenceFrame();

Сбрасывает поправку reference frame в Identity, передаёт её рендеру и испускает ReferenceFrameChanged. Не меняет игровой origin, настройки масштаба или сырые pose. Поведение сверено с исходником; реальный recenter не проверен.

FindInterfaceXRInterface
# FindInterface
C#
public static XRInterface FindInterface(string name);

Находит интерфейс по его name. Например, если ваш проект использует возможности платформы AR/VR, вы можете найти интерфейс для этой платформы по имени и инициализировать его.

Параметры
ИмяТипПо умолчанию
namestring—
Возвращает XRInterface
GetCameraOffsetsReckfell.Collections.Array<Transform3D>
# GetCameraOffsets
C#
public static Reckfell.Collections.Array<Transform3D> GetCameraOffsets(StringName trackerName);

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

Параметры
ИмяТипПо умолчанию
trackerNameStringName—
Возвращает Reckfell.Collections.Array<Transform3D>
GetCameraProjectionsReckfell.Collections.Array<Projection>
# GetCameraProjections
C#
public static 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>
GetHmdTransformTransform3D
# GetHmdTransform
C#
public static Transform3D GetHmdTransform();

Возвращает преобразование основного интерфейса.

Возвращает Transform3D
GetInterfaceXRInterface
# GetInterface
C#
public static XRInterface GetInterface(int idx);

Возвращает интерфейс, зарегистрированный по заданному idx индексу в списке интерфейсов.

Параметры
ИмяТипПо умолчанию
idxint—
Возвращает XRInterface
GetInterfaceCountint
# GetInterfaceCount
C#
public static int GetInterfaceCount();

Возвращает количество интерфейсов, зарегистрированных в настоящее время на AR/VR-сервере. Если ваш проект поддерживает несколько AR/VR-платформ, вы можете просмотреть все доступные интерфейсы и либо предложить пользователю выбор, либо просто попытаться инициализировать каждый интерфейс и использовать первый, который вернет true.

Возвращает int
GetInterfacesReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# GetInterfaces
C#
public static Reckfell.Collections.Array<Reckfell.Collections.Dictionary> GetInterfaces();

Возвращает список доступных интерфейсов с указанием идентификатора и названия каждого интерфейса.

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>
GetPrimaryInterfaceXRInterface
# GetPrimaryInterface
C#
public static XRInterface GetPrimaryInterface();
Возвращает XRInterface
GetReferenceFrameTransform3D
# GetReferenceFrame
C#
public static Transform3D GetReferenceFrame();

Копия поправки пространства tracking. GetAdjustedTransform слева умножает на неё pose после масштаба позиции. Это не игровой WorldOrigin. Здесь проверялся только Identity; recenter требует отдельной проверки устройства.

Возвращает Transform3D

Поправка пространства tracking, не игровой origin.

GetTrackerXRTracker
# GetTracker
C#
public static XRTracker GetTracker(StringName trackerName);

Возвращает зарегистрированный XRTracker по точному имени или null. Поддерживает в том числе непозиционные tracker, которые текущий GetTrackers пропускает. Объект общий: не освобождайте заимствованную C# обёртку и не меняйте данные поставщика.

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

Точное имя записи XRServer, не ResourceName и не числовой ID.

Возвращает XRTracker

Общий зарегистрированный XRTracker либо null; не освобождайте заимствованный объект.

GetTrackersReckfell.Collections.Dictionary
# GetTrackers
C#
public static Reckfell.Collections.Dictionary GetTrackers(int trackerTypes);

Возвращает отдельный Dictionary: ключ — имя, значение — общий объект tracker. Очистка контейнера не снимает регистрацию. Маска сравнивается с Type побитово. Подтверждён дефект: реализация сначала приводит объекты к XRPositionalTracker, поэтому даже Any пропускает непозиционный XRFaceTracker. Для известного имени используйте GetTracker; не считайте этот список полным.

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

Побитовая int-маска XRServer.TrackerType. Даже Any в текущем коде не включает непозиционные tracker.

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

Отдельный Dictionary общих позиционных tracker; текущая реализация неполна для Any.

GetWorldOriginTransform3D
# GetWorldOrigin
C#
public static Transform3D GetWorldOrigin();

Копия текущего игрового origin сервера, не сырая pose головы. На потоке рендера читается состояние кадра рендера.

Возвращает Transform3D

Копия игрового origin, поддерживаемого активным XROrigin3D.

GetWorldScaledouble
# GetWorldScale
C#
public static double GetWorldScale();

Возвращает общий масштаб как double. На потоке рендера читается его сохранённое состояние, на основном — текущее состояние сервера. Синхронизация потоков здесь не проверялась.

Возвращает double

Общий масштаб XRServer; не Scale Entity.

IsCameraLockedToOriginbool
# IsCameraLockedToOrigin
C#
public static bool IsCameraLockedToOrigin();
Возвращает bool
RemoveInterfacevoid
# RemoveInterface
C#
public static void RemoveInterface(XRInterface @interface);

Удаляет этот interface.

Параметры
ИмяТипПо умолчанию
interfaceXRInterface—
RemoveTracker2 перегрузки
# RemoveTracker · 1/2
C#
public static void RemoveTracker(XRPositionalTracker tracker);

Удаляет запись по текущему имени переданного объекта, а не по идентичности ссылки. После замены объекта старая ссылка с тем же именем может удалить новый tracker. TrackerRemoved испускается до удаления записи; в обработчике GetTracker ещё может вернуть её. Не уничтожает внешние ссылки и не синтезирует отпускание кнопок.

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

Ненулевой объект с уже заданным стабильным именем. Удаление использует имя, не идентичность ссылки.

# RemoveTracker · 2/2
C#
public static void RemoveTracker(XRTracker tracker);

Удаляет запись по текущему имени переданного объекта, а не по идентичности ссылки. После замены объекта старая ссылка с тем же именем может удалить новый tracker. TrackerRemoved испускается до удаления записи; в обработчике GetTracker ещё может вернуть её. Не уничтожает внешние ссылки и не синтезирует отпускание кнопок.

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

Ненулевой объект с уже заданным стабильным именем. Удаление использует имя, не идентичность ссылки.

SetCameraLockedToOriginvoid
# SetCameraLockedToOrigin
C#
public static void SetCameraLockedToOrigin(bool enabled);
Параметры
ИмяТипПо умолчанию
enabledbool—
SetPrimaryInterfacevoid
# SetPrimaryInterface
C#
public static void SetPrimaryInterface(XRInterface @interface);
Параметры
ИмяТипПо умолчанию
interfaceXRInterface—
SetWorldOriginvoid
# SetWorldOrigin
C#
public static void SetWorldOrigin(Transform3D worldOrigin);

Игровой origin XRServer. Активный XROrigin3D публикует сюда свой мировой трансформ; прямое присваивание может быть перезаписано им. Setter испускает WorldOriginChanged даже при повторе. Для перемещения рига двигайте его origin/тело, не поддерживайте два независимых владельца. GetAdjustedTransform pose не включает это значение.

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

Игровой трансформ origin; активный XROrigin3D может перезаписать его.

SetWorldScalevoid
# SetWorldScale
C#
public static void SetWorldScale(double scale);

Общий масштаб tracking относительно игровых единиц, изначально 1. Setter ограничивает конечные значения 0.01…1000 и передаёт состояние рендеру. Проверяйте конечность до вызова: сравнения диапазона не отбрасывают NaN. Меняет поправку pose, не локальный Scale Entity и не сохранённые скорости.

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

Положительный конечный double масштаба; не передавайте NaN или бесконечность.

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

InterfaceAddedСобытие
# InterfaceAdded
C#
public static event XRServer.InterfaceAddedEventHandler InterfaceAdded;

Выдается при добавлении нового интерфейса.

Параметры обработчика
ИмяТипПо умолчанию
interfaceNameStringName—
InterfaceRemovedСобытие
# InterfaceRemoved
C#
public static event XRServer.InterfaceRemovedEventHandler InterfaceRemoved;

Выдается при удалении интерфейса.

Параметры обработчика
ИмяТипПо умолчанию
interfaceNameStringName—
ReferenceFrameChangedСобытие
# ReferenceFrameChanged
C#
public static event Action ReferenceFrameChanged;

Испускается при изменении преобразования системы отсчета.

TrackerAddedСобытие
# TrackerAdded
C#
public static event XRServer.TrackerAddedEventHandler TrackerAdded;

Событие новой записи после её добавления. Передаёт имя и числовую категорию long, не сам объект. Это регистрация поставщиком, не подтверждение актуальной pose или аппаратного подключения.

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

Точное имя записи XRServer, не ResourceName и не числовой ID.

type

Числовая категория long из XRServer.TrackerType, не объект tracker.

TrackerRemovedСобытие
# TrackerRemoved
C#
public static event XRServer.TrackerRemovedEventHandler TrackerRemoved;

Событие до удаления записи из реестра. В обработчике поиск по имени ещё может вернуть объект; не используйте это как доказательство, что удаление отменилось. После выхода из RemoveTracker запись уже отсутствует.

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

Точное имя записи XRServer, не ResourceName и не числовой ID.

type

Числовая категория long из XRServer.TrackerType, не объект tracker.

TrackerUpdatedСобытие
# TrackerUpdated
C#
public static event XRServer.TrackerUpdatedEventHandler TrackerUpdated;

Событие замены объекта другим с тем же именем. Повтор AddTracker той же ссылки не вызывает его. Не является событием каждого кадра tracking; обновления pose идут отдельно.

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

Точное имя записи XRServer, не ResourceName и не числовой ID.

type

Числовая категория long из XRServer.TrackerType, не объект tracker.

WorldOriginChangedСобытие
# WorldOriginChanged
C#
public static event Action WorldOriginChanged;

Испускается при изменении преобразования начала координат мира.

XRServer.RotationMode

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

Не сбрасывает ориентацию HMD, центрируется только положение игрока.

ResetButKeepTilt = 1

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

ResetFullRotation = 0

Полностью сбрасывает ориентацию HMD. Независимо от того, в какую сторону смотрит пользователь в реальном мире. В виртуальном мире пользователь будет смотреть вперед.

XRServer.TrackerType

ЗначениеОписание
Anchor = 8

Трекер отслеживает местоположение и размер AR-якоря.

Any = 255

Используется для выбора всех трекеров.

AnyKnown = 127

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

Basestation = 4

Трекер отслеживает местоположение базовой станции.

Body = 32

Трекер отслеживает местоположение и суставы тела.

Camera = 1

Трекер отслеживает положение камеры XR (HMD, наружная камера, телефонная камера для телефонной связи).

Controller = 2

Трекер отслеживает местоположение контроллера.

Face = 64

Трекер отслеживает выражение лица.

Hand = 16

Трекер отслеживает местоположение и суставы руки.

Head = 1

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

Unknown = 128

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

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

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

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

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