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 ігровий блок відповідає дійсному світовому метру.


Описи методів

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. Він візьме поточне розташування 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.