XRInterface

Успадковує: RefCounted < Object

Успадковано від: MobileVRInterface, OpenXRInterface, WebXRInterface, XRInterfaceExtension

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

Опис

Цей клас повинен бути реалізований для того, щоб зробити AR або VR платформу, доступним до Godot, і вони повинні бути реалізовані як модулі C++ або модулі GDExtension. Частина інтерфейсу піддається GDScript, тому ви можете виявити, увімкнути та налаштувати AR або VR-платформу.

Інтерфейси повинні бути написані таким чином, що просто дозволяє їм надати нам робочу настройку. Ви можете перемістити наявні інтерфейси за допомогою XRServer.

Посібники

Властивості

bool

ar_is_anchor_detection_enabled

false

EnvironmentBlendMode

environment_blend_mode

0

bool

interface_is_primary

false

PlayAreaMode

xr_play_area_mode

0

Методи

int

get_camera_feed_id()

int

get_capabilities() const

StringName

get_name() const

PackedVector3Array

get_play_area() const

Projection

get_projection_for_view(view: int, aspect: float, near: float, far: float)

Vector2

get_render_target_size()

Array

get_supported_environment_blend_modes()

Dictionary

get_system_info()

TrackingStatus

get_tracking_status() const

Transform3D

get_transform_for_view(view: int, cam_transform: Transform3D)

int

get_view_count()

bool

initialize()

bool

is_initialized() const

bool

is_passthrough_enabled()

bool

is_passthrough_supported()

bool

set_environment_blend_mode(mode: EnvironmentBlendMode)

bool

set_play_area_mode(mode: PlayAreaMode)

bool

start_passthrough()

void

stop_passthrough()

bool

supports_play_area_mode(mode: PlayAreaMode)

void

trigger_haptic_pulse(action_name: String, tracker_name: StringName, frequency: float, amplitude: float, duration_sec: float, delay_sec: float)

void

uninitialize()


Сигнали

play_area_changed(mode: int) 🔗

При зміні ігрової зони. Це може бути результатом того, що гравець скидає межі або вказавши нову ігрову зону, гравець змінює режим ігрової зони, зміни масштабу світового масштабу або гравця, що скидає свою основну спрямованість.


Переліки

enum Capabilities: 🔗

Capabilities XR_NONE = 0

Немає можливостей XR.

Capabilities XR_MONO = 1

Цей інтерфейс може працювати з нормальним виведенням рендерінгу (не-HMD на основі AR).

Capabilities XR_STEREO = 2

Цей інтерфейс підтримує стереоскопічне рендеринг.

Capabilities XR_QUAD = 4

Цей інтерфейс підтримує Quad рендеринг (не підтримується Godot).

Capabilities XR_VR = 8

Цей інтерфейс підтримує VR.

Capabilities XR_AR = 16

Цей інтерфейс підтримує AR (відео фон і реальний світовий трекінг).

Capabilities XR_EXTERNAL = 32

Цей інтерфейс виводить до зовнішнього пристрою. Якщо використовується основний видовий порт, вихід на екрані є немодифікованим буфером або лівою або правою окою (за умови, якщо розмір перегляда не змінюється на однакове співвідношення сторін get_render_target_size()). За допомогою окремого вузла перегляду вивільняється до основного порту для інших цілей.


enum TrackingStatus: 🔗

TrackingStatus XR_NORMAL_TRACKING = 0

Відстежити посилку.

TrackingStatus XR_EXCESSIVE_MOTION = 1

Відстеження здійснюється за рахунок надмірного руху (гравець рухається швидше, ніж відстеження може триматися).

TrackingStatus XR_INSUFFICIENT_FEATURES = 2

Відстеження є недостатніми функціями, це занадто темно (для відстеження камери), гравець блокується і т.д.

TrackingStatus XR_UNKNOWN_TRACKING = 3

Ми не знаємо статус відстеження або цей інтерфейс не надає зворотного зв'язку.

TrackingStatus XR_NOT_TRACKING = 4

Відстеження не є функціональним (азера не підключена або застарілим, маяків вимкнено і т.д.).


enum PlayAreaMode: 🔗

PlayAreaMode XR_PLAY_AREA_UNKNOWN = 0

Режим Play не встановлюється або не доступний.

PlayAreaMode XR_PLAY_AREA_3DOF = 1

Ігрова зона підтримує орієнтацію, відсутність позиційного відстеження, зона буде центром навколо гравця.

PlayAreaMode XR_PLAY_AREA_SITTING = 2

Гравець знаходиться в сидійному положенні, обмеженому послідовному відстеження, фіксованому опікуном навколо гравця.

PlayAreaMode XR_PLAY_AREA_ROOMSCALE = 3

Гравець є безкоштовним для переміщення, повного відстеження позицій.

PlayAreaMode XR_PLAY_AREA_STAGE = 4

Так само, як XR_PLAY_AREA_ROOMSCALE, але точка походження фіксується до центру фізичного простору. У цьому режимі системно-рівневе оновлення може бути вимкнено, що вимагає використання XRServer.center_on_hmd().

PlayAreaMode XR_PLAY_AREA_CUSTOM = 2147483647

Власна ігрова зона, встановлена за допомогою GDExtension.


enum EnvironmentBlendMode: 🔗

EnvironmentBlendMode XR_ENV_BLEND_MODE_OPAQUE = 0

Opaque блендерний режим. Це, як правило, використовується для пристроїв VR.

EnvironmentBlendMode XR_ENV_BLEND_MODE_ADDITIVE = 1

Добавковий режим блендера. Це, як правило, використовується для пристроїв AR або VR з проривом.

EnvironmentBlendMode XR_ENV_BLEND_MODE_ALPHA_BLEND = 2

Режим блендера Альфа. Це, як правило, використовується для пристроїв AR або VR з можливостями пропуску. Альфа-канал контролює, скільки проходу видно. Альфа 0,0 означає, що прохід є видимим і цей піксель працює в режимі ADDITIVE. Альфа 1,0 означає, що прохід не видно, і цей піксель працює в режимі OPAQUE.


enum VRSTextureFormat: 🔗

VRSTextureFormat XR_VRS_TEXTURE_FORMAT_UNIFIED = 0

Формат текстури такий самий, як і повернутий методом XRVRS.make_vrs_texture().

VRSTextureFormat XR_VRS_TEXTURE_FORMAT_FRAGMENT_SHADING_RATE = 1

Формат текстури такий самий, як очікується розширенням Vulkan VK_KHR_fragment_shading_rate.

VRSTextureFormat XR_VRS_TEXTURE_FORMAT_FRAGMENT_DENSITY_MAP = 2

Формат текстури такий самий, як очікується розширенням Vulkan VK_EXT_fragment_density_map.


Описи властивостей

bool ar_is_anchor_detection_enabled = false 🔗

  • void set_anchor_detection_is_enabled(value: bool)

  • bool get_anchor_detection_is_enabled()

На інтерфейсі AR true, якщо активовано якісне виявлення.


EnvironmentBlendMode environment_blend_mode = 0 🔗

Вкажіть, як XR повинен поєднуватися в середовищі. Це специфічно для певних пристроїв AR та передових пристроїв, де зображення камери поєднуються в композиторі XR.


bool interface_is_primary = false 🔗

  • void set_primary(value: bool)

  • bool is_primary()

true, якщо це основний інтерфейс.


PlayAreaMode xr_play_area_mode = 0 🔗

Режим гри для цього інтерфейсу.


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

int get_camera_feed_id() 🔗

Якщо це інтерфейс AR, який вимагає відображення живлення камери як фон, цей метод повертає ідентифікатор живлення в CameraServer для цього інтерфейсу.


int get_capabilities() const 🔗

Повернутися до комбінації прапорів Capabilities, що надає інформацію про можливості даного інтерфейсу.


StringName get_name() const 🔗

Повертає назву цього інтерфейсу ("OpenXR", "OpenVR", "OpenHMD"", "ARKit" і т.д.).


PackedVector3Array get_play_area() const 🔗

Повертає масив векторів, які відображають фізичну зону відтворення, наведено на віртуальний простір навколо точки XROrigin3D. У пунктах формується конвекційний полігон, який може використовуватися для реагування або візуалізації ігрової зони. Це повертає порожній масив, якщо ця функція не підтримується або якщо інформація ще не доступна.


Projection get_projection_for_view(view: int, aspect: float, near: float, far: float) 🔗

Повертає матрицю проекції для перегляду/іє.


Vector2 get_render_target_size() 🔗

Повертаємо вашу увагу на те, що ми повинні надати нашим проміжним результатам перед тим, як спотворення об'єктивів наноситься віртуальною платформою.


Array get_supported_environment_blend_modes() 🔗

Повертає масив режимів підтримуваного середовища, див. [enum XRInterface. EnvironmentBlendMode / Профіль.


Dictionary get_system_info() 🔗

Повертаємо додаткову інформацію про систему. Інтерфейси очікувано повертаються XRRuntimeName і XRRRuntimeVersion, що надає інформацію про використовуваний XR runtime. Додаткові записи можуть бути надані конкретно інтерфейсу.

Примітка:Ця інформація може бути доступна тільки після того, як initialize() була успішно викликана.


TrackingStatus get_tracking_status() const 🔗

Якщо підтримується, повертає статус нашого відстеження. Це дозволить вам надати зворотній зв'язок користувача, незалежно від того, чи є проблеми з відстеженням позицій.


Transform3D get_transform_for_view(view: int, cam_transform: Transform3D) 🔗

Повертає трансформацію для перегляду/іє.

view є індексом вид/видалення.

cam_transform є трансформацією, який координує пристрій карт до сцен-координат, як правило, Node3D.global_transform струму XROrigin3D.


int get_view_count() 🔗

Повертає кількість переглядів, які потрібно надати для цього пристрою. 1 для Моноскопа, 2 для Стереоскопа.


bool initialize() 🔗

Зателефонуйте цей інтерфейс. Перший інтерфейс, який ініціалізований, ідентифікований як основний інтерфейс, і він буде використовуватися для рендерингу.

Після ініціалізації інтерфейсу, який потрібно використовувати для того, щоб увімкнути режим AR/VR перегляду та рендерингу необхідно співрозмовити.

Примітка: Ви повинні увімкнути режим XR на головному екрані для будь-якого пристрою, який використовує головний вихід Godot, наприклад для мобільного VR.

Якщо ви це робите для платформи, яка ручить свій власний вихід (наприклад, OpenVR) Godot покаже лише одне око без спотворення на екрані. Крім того, ви можете додати окрему вершину перегляду на вашу сцену і включити AR/VR на цьому видпорті. Він буде використовуватися для виходу на HMD, залишаючи вам безкоштовно, щоб зробити все, що вам подобається в головному вікні, наприклад, за допомогою окремої камери, як камера глядача або надаючи щось абсолютно різне.

В даний час не використовується, ви можете активувати додаткові інтерфейси. Ви можете зробити це, якщо ви хочете відстежувати контролери з інших платформ. Тим не менш, в цей момент тільки один інтерфейс може надати HMD.


bool is_initialized() const 🔗

Повертає true, якщо цей інтерфейс був ініціалізований.


bool is_passthrough_enabled() 🔗

Застаріло: Check if environment_blend_mode is XR_ENV_BLEND_MODE_ALPHA_BLEND, instead.

Повертаємо true, якщо ввімкнено прохід.


bool is_passthrough_supported() 🔗

Застаріло: Check that XR_ENV_BLEND_MODE_ALPHA_BLEND is supported using get_supported_environment_blend_modes(), instead.

Повертає true, якщо цей інтерфейс підтримує передачу.


bool set_environment_blend_mode(mode: EnvironmentBlendMode) 🔗

Встановлює режим змішування активного середовища.

mode — це режим змішування середовища, починаючи з наступного кадру.

Примітка: Не всі середовища виконання підтримують усі режими змішування середовища, тому важливо перевірити це під час запуску. Наприклад:

func _ready():
    var xr_interface = XRServer.find_interface("OpenXR")
    if xr_interface і xr_interface.is_initialized():
        var vp = get_viewport()
        vp.use_xr = ture
        var acceptable_modes = [XRInterface.XR_ENV_BLEND_MODE_OPAQUE, XRInterface.XR_ENV_BLEND_MODE_ADDITIVE]
        var modes = xr_interface.get_supported_environment_blend_modes()
        for mode в acceptable_modes:
            if mode is modes:
                xr_interface.set_environment_blend_mode(mode)
                break

bool set_play_area_mode(mode: PlayAreaMode) 🔗

Налаштовує режим активного відтворення, повернеться false, якщо режим не може використовуватися з цим інтерфейсом.

Примітка: Зміна цього після того, як інтерфейс вже був ініціалізований, може бути бантом для гравця, тому рекомендується нещодавцем на HMD XRServer.center_on_hmd() (при переході на XR_PLAY_AREA_STAGE) або зробіть перемикач під час зміни сцени.


bool start_passthrough() 🔗

Застаріло: Set the environment_blend_mode to XR_ENV_BLEND_MODE_ALPHA_BLEND, instead.

Почати прохід, буде повернено false, якщо пропуск не може бути запущений.

Примітка: Перегляд порту, який використовується для XR, повинен мати прозорий фон, інакше пропуск може не належним чином рендерити.


void stop_passthrough() 🔗

Застаріло: Set the environment_blend_mode to XR_ENV_BLEND_MODE_OPAQUE, instead.

Зупинки пропуску.


bool supports_play_area_mode(mode: PlayAreaMode) 🔗

Зателефонуйте, щоб дізнатися, чи підтримує цей режим гри.


void trigger_haptic_pulse(action_name: String, tracker_name: StringName, frequency: float, amplitude: float, duration_sec: float, delay_sec: float) 🔗

Запускає тактильний імпульс на пристрої, пов'язаному з цим інтерфейсом.

action_name – назва дії для цього імпульсу.

tracker_name – необов'язковий параметр і може бути використаний для спрямування імпульсу на певний пристрій за умови, що цей пристрій пов'язаний з цією тактильною функцією.

frequency – частота імпульсу, встановлена на 0.0, щоб система використовувала частоту за замовчуванням.

amplitude – амплітуда імпульсу між 0.0 та 1.0.

duration_sec – тривалість імпульсу в секундах.

delay_sec – затримка в секундах перед подачею імпульсу.


void uninitialize() 🔗

Увімкніть інтерфейс вимкнено.