XRServer

Наследует: Object

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

Описание

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

Обучающие материалы

Свойства

bool

camera_locked_to_origin

false

XRInterface

primary_interface

Transform3D

world_origin

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

float

world_scale

1.0

Методы

void

add_interface(interface: XRInterface)

void

add_tracker(tracker: XRTracker)

void

center_on_hmd(rotation_mode: RotationMode, keep_height: bool)

void

clear_reference_frame()

XRInterface

find_interface(name: String) const

Transform3D

get_hmd_transform()

XRInterface

get_interface(idx: int) const

int

get_interface_count() const

Array[Dictionary]

get_interfaces() const

Transform3D

get_reference_frame() const

XRTracker

get_tracker(tracker_name: StringName) const

Dictionary

get_trackers(tracker_types: int)

void

remove_interface(interface: XRInterface)

void

remove_tracker(tracker: XRTracker)


Сигналы

interface_added(interface_name: StringName) 🔗

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


interface_removed(interface_name: StringName) 🔗

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


reference_frame_changed() 🔗

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


tracker_added(tracker_name: StringName, type: int) 🔗

Генерируется при добавлении нового трекера. Если вы не используете фиксированное количество контроллеров или используете якоря XRAnchor3D для AR-решения, важно отреагировать на этот сигнал, чтобы добавить соответствующие узлы XRController3D или XRAnchor3D, относящиеся к этому новому трекеру.


tracker_removed(tracker_name: StringName, type: int) 🔗

Генерируется при удалении трекера. Вам следует удалить все точки XRController3D или XRAnchor3D, если это применимо. Это не обязательно, узлы просто становятся неактивными и будут снова активны, когда появится новый трекер (т. е. включится новый контроллер, который заменит предыдущий).


tracker_updated(tracker_name: StringName, type: int) 🔗

Генерируется при обновлении существующего трекера. Это может произойти, если пользователь переключит контроллеры.


Перечисления

enum TrackerType: 🔗

TrackerType TRACKER_HEAD = 1

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

TrackerType TRACKER_CONTROLLER = 2

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

TrackerType TRACKER_BASESTATION = 4

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

TrackerType TRACKER_ANCHOR = 8

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

TrackerType TRACKER_HAND = 16

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

TrackerType TRACKER_BODY = 32

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

TrackerType TRACKER_FACE = 64

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

TrackerType TRACKER_ANY_KNOWN = 127

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

TrackerType TRACKER_UNKNOWN = 128

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

TrackerType TRACKER_ANY = 255

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


enum RotationMode: 🔗

RotationMode RESET_FULL_ROTATION = 0

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

RotationMode RESET_BUT_KEEP_TILT = 1

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

RotationMode DONT_RESET_ROTATION = 2

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


Описания свойств

bool camera_locked_to_origin = false 🔗

  • void set_camera_locked_to_origin(value: bool)

  • bool is_camera_locked_to_origin()

Если установлено значение true, сцена будет визуализироваться так, как будто камера заблокирована на XROrigin3D.

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


XRInterface primary_interface 🔗

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


Transform3D world_origin = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

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

Примечание: Это свойство управляется текущим узлом XROrigin3D. Оно открыто для доступа из GDExtensions.


float world_scale = 1.0 🔗

  • void set_world_scale(value: float)

  • float get_world_scale()

Масштаб игрового мира по сравнению с реальным. По умолчанию, большинство AR/VR-платформ считают, что 1 игровая единица соответствует 1 метру реального мира.


Описания метода

void add_interface(interface: XRInterface) 🔗

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


void add_tracker(tracker: XRTracker) 🔗

Регистрирует новый XRTracker, отслеживающий физический объект.


void center_on_hmd(rotation_mode: RotationMode, keep_height: bool) 🔗

Важно правильно понимать эту функцию. Платформы дополненной и виртуальной реальности (AR) и виртуальной реальности (VR) обрабатывают позиционирование немного по-разному.

На платформах, не поддерживающих пространственное отслеживание, наша исходная точка (0, 0, 0) — это местоположение нашего шлема виртуальной реальности (HMD), но вы практически не можете контролировать направление взгляда игрока в реальном мире.

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

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

Для получения приемлемых результатов этот метод должен быть доступен для отслеживания. Это часто происходит через несколько кадров после запуска игры.

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


void clear_reference_frame() 🔗

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


XRInterface find_interface(name: String) const 🔗

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


Transform3D get_hmd_transform() 🔗

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


XRInterface get_interface(idx: int) const 🔗

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


int get_interface_count() const 🔗

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


Array[Dictionary] get_interfaces() const 🔗

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


Transform3D get_reference_frame() const 🔗

Возвращает преобразование системы отсчета. В основном используется для внутренних целей и используется для интерфейсов сборки GDExtension.


XRTracker get_tracker(tracker_name: StringName) const 🔗

Возвращает позиционный трекер с заданным tracker_name.


Dictionary get_trackers(tracker_types: int) 🔗

Возвращает словарь трекеров для tracker_types.


void remove_interface(interface: XRInterface) 🔗

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


void remove_tracker(tracker: XRTracker) 🔗

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