Files
godot-docs-l10n/classes/ru/class_xrserver.rst

557 lines
30 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_XRServer:
XRServer
========
**Наследует:** :ref:`Object<class_Object>`
Сервер для функций дополненной и виртуальной реальности.
.. rst-class:: classref-introduction-group
Описание
----------------
Сервер дополненной (AR) и виртуальной (VR) реальности является сердцем нашего решения для Расширенной и Виртуальной Реальности и выполняет всю обработку.
.. rst-class:: classref-introduction-group
Обучающие материалы
--------------------------------------
- :doc:`Индекс документации XR <../tutorials/xr/index>`
.. rst-class:: classref-reftable-group
Свойства
----------------
.. table::
:widths: auto
+---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`camera_locked_to_origin<class_XRServer_property_camera_locked_to_origin>` | ``false`` |
+---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
| :ref:`XRInterface<class_XRInterface>` | :ref:`primary_interface<class_XRServer_property_primary_interface>` | |
+---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
| :ref:`Transform3D<class_Transform3D>` | :ref:`world_origin<class_XRServer_property_world_origin>` | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` |
+---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
| :ref:`float<class_float>` | :ref:`world_scale<class_XRServer_property_world_scale>` | ``1.0`` |
+---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
.. rst-class:: classref-reftable-group
Методы
------------
.. table::
:widths: auto
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_interface<class_XRServer_method_add_interface>`\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_tracker<class_XRServer_method_add_tracker>`\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`center_on_hmd<class_XRServer_method_center_on_hmd>`\ (\ rotation_mode\: :ref:`RotationMode<enum_XRServer_RotationMode>`, keep_height\: :ref:`bool<class_bool>`\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`clear_reference_frame<class_XRServer_method_clear_reference_frame>`\ (\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`XRInterface<class_XRInterface>` | :ref:`find_interface<class_XRServer_method_find_interface>`\ (\ name\: :ref:`String<class_String>`\ ) |const| |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Transform3D<class_Transform3D>` | :ref:`get_hmd_transform<class_XRServer_method_get_hmd_transform>`\ (\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`XRInterface<class_XRInterface>` | :ref:`get_interface<class_XRServer_method_get_interface>`\ (\ idx\: :ref:`int<class_int>`\ ) |const| |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_interface_count<class_XRServer_method_get_interface_count>`\ (\ ) |const| |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`get_interfaces<class_XRServer_method_get_interfaces>`\ (\ ) |const| |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Transform3D<class_Transform3D>` | :ref:`get_reference_frame<class_XRServer_method_get_reference_frame>`\ (\ ) |const| |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`XRTracker<class_XRTracker>` | :ref:`get_tracker<class_XRServer_method_get_tracker>`\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const| |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Dictionary<class_Dictionary>` | :ref:`get_trackers<class_XRServer_method_get_trackers>`\ (\ tracker_types\: :ref:`int<class_int>`\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`remove_interface<class_XRServer_method_remove_interface>`\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`remove_tracker<class_XRServer_method_remove_tracker>`\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ ) |
+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Сигналы
--------------
.. _class_XRServer_signal_interface_added:
.. rst-class:: classref-signal
**interface_added**\ (\ interface_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_XRServer_signal_interface_added>`
Выдается при добавлении нового интерфейса.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_signal_interface_removed:
.. rst-class:: classref-signal
**interface_removed**\ (\ interface_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_XRServer_signal_interface_removed>`
Выдается при удалении интерфейса.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_signal_reference_frame_changed:
.. rst-class:: classref-signal
**reference_frame_changed**\ (\ ) :ref:`🔗<class_XRServer_signal_reference_frame_changed>`
Испускается при изменении преобразования системы отсчета.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_signal_tracker_added:
.. rst-class:: classref-signal
**tracker_added**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, type\: :ref:`int<class_int>`\ ) :ref:`🔗<class_XRServer_signal_tracker_added>`
Генерируется при добавлении нового трекера. Если вы не используете фиксированное количество контроллеров или используете якоря :ref:`XRAnchor3D<class_XRAnchor3D>` для AR-решения, важно отреагировать на этот сигнал, чтобы добавить соответствующие узлы :ref:`XRController3D<class_XRController3D>` или :ref:`XRAnchor3D<class_XRAnchor3D>`, относящиеся к этому новому трекеру.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_signal_tracker_removed:
.. rst-class:: classref-signal
**tracker_removed**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, type\: :ref:`int<class_int>`\ ) :ref:`🔗<class_XRServer_signal_tracker_removed>`
Генерируется при удалении трекера. Вам следует удалить все точки :ref:`XRController3D<class_XRController3D>` или :ref:`XRAnchor3D<class_XRAnchor3D>`, если это применимо. Это не обязательно, узлы просто становятся неактивными и будут снова активны, когда появится новый трекер (т. е. включится новый контроллер, который заменит предыдущий).
.. rst-class:: classref-item-separator
----
.. _class_XRServer_signal_tracker_updated:
.. rst-class:: classref-signal
**tracker_updated**\ (\ tracker_name\: :ref:`StringName<class_StringName>`, type\: :ref:`int<class_int>`\ ) :ref:`🔗<class_XRServer_signal_tracker_updated>`
Генерируется при обновлении существующего трекера. Это может произойти, если пользователь переключит контроллеры.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Перечисления
------------------------
.. _enum_XRServer_TrackerType:
.. rst-class:: classref-enumeration
enum **TrackerType**: :ref:`🔗<enum_XRServer_TrackerType>`
.. _class_XRServer_constant_TRACKER_HEAD:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_HEAD** = ``1``
Трекер отслеживает положение головы игрока. Обычно это точка по центру между его глазами. Обратите внимание, что для портативных устройств дополненной реальности это может быть текущее местоположение устройства.
.. _class_XRServer_constant_TRACKER_CONTROLLER:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_CONTROLLER** = ``2``
Трекер отслеживает местоположение контроллера.
.. _class_XRServer_constant_TRACKER_BASESTATION:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_BASESTATION** = ``4``
Трекер отслеживает местоположение базовой станции.
.. _class_XRServer_constant_TRACKER_ANCHOR:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_ANCHOR** = ``8``
Трекер отслеживает местоположение и размер AR-якоря.
.. _class_XRServer_constant_TRACKER_HAND:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_HAND** = ``16``
Трекер отслеживает местоположение и суставы руки.
.. _class_XRServer_constant_TRACKER_BODY:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_BODY** = ``32``
Трекер отслеживает местоположение и суставы тела.
.. _class_XRServer_constant_TRACKER_FACE:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_FACE** = ``64``
Трекер отслеживает выражение лица.
.. _class_XRServer_constant_TRACKER_ANY_KNOWN:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_ANY_KNOWN** = ``127``
Используется для внутренней фильтрации трекеров любого известного типа.
.. _class_XRServer_constant_TRACKER_UNKNOWN:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_UNKNOWN** = ``128``
Используется, если мы еще не установили тип трекера.
.. _class_XRServer_constant_TRACKER_ANY:
.. rst-class:: classref-enumeration-constant
:ref:`TrackerType<enum_XRServer_TrackerType>` **TRACKER_ANY** = ``255``
Используется для выбора всех трекеров.
.. rst-class:: classref-item-separator
----
.. _enum_XRServer_RotationMode:
.. rst-class:: classref-enumeration
enum **RotationMode**: :ref:`🔗<enum_XRServer_RotationMode>`
.. _class_XRServer_constant_RESET_FULL_ROTATION:
.. rst-class:: classref-enumeration-constant
:ref:`RotationMode<enum_XRServer_RotationMode>` **RESET_FULL_ROTATION** = ``0``
Полностью сбрасывает ориентацию HMD. Независимо от того, в какую сторону смотрит пользователь в реальном мире. В виртуальном мире пользователь будет смотреть вперед.
.. _class_XRServer_constant_RESET_BUT_KEEP_TILT:
.. rst-class:: classref-enumeration-constant
:ref:`RotationMode<enum_XRServer_RotationMode>` **RESET_BUT_KEEP_TILT** = ``1``
Сбрасывает ориентацию, но сохраняет наклон устройства. Поэтому, если мы смотрим вниз, мы продолжаем смотреть вниз, но направление будет сброшено.
.. _class_XRServer_constant_DONT_RESET_ROTATION:
.. rst-class:: classref-enumeration-constant
:ref:`RotationMode<enum_XRServer_RotationMode>` **DONT_RESET_ROTATION** = ``2``
Не сбрасывает ориентацию HMD, центрируется только положение игрока.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описания свойств
--------------------------------
.. _class_XRServer_property_camera_locked_to_origin:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **camera_locked_to_origin** = ``false`` :ref:`🔗<class_XRServer_property_camera_locked_to_origin>`
.. rst-class:: classref-property-setget
- |void| **set_camera_locked_to_origin**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **is_camera_locked_to_origin**\ (\ )
Если установлено значение ``true``, сцена будет визуализироваться так, как будто камера заблокирована на :ref:`XROrigin3D<class_XROrigin3D>`.
\ **Примечание:** Это не очень удобно для пользователей. Эта настройка существует для проведения бенчмаркинга или автоматизированного тестирования, когда вы хотите контролировать то, что визуализируется через код.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_property_primary_interface:
.. rst-class:: classref-property
:ref:`XRInterface<class_XRInterface>` **primary_interface** :ref:`🔗<class_XRServer_property_primary_interface>`
.. rst-class:: classref-property-setget
- |void| **set_primary_interface**\ (\ value\: :ref:`XRInterface<class_XRInterface>`\ )
- :ref:`XRInterface<class_XRInterface>` **get_primary_interface**\ (\ )
Основной :ref:`XRInterface<class_XRInterface>`, связанный в данный момент с **XRServer**.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_property_world_origin:
.. rst-class:: classref-property
:ref:`Transform3D<class_Transform3D>` **world_origin** = ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` :ref:`🔗<class_XRServer_property_world_origin>`
.. rst-class:: classref-property-setget
- |void| **set_world_origin**\ (\ value\: :ref:`Transform3D<class_Transform3D>`\ )
- :ref:`Transform3D<class_Transform3D>` **get_world_origin**\ (\ )
Текущее начало пространства отслеживания в виртуальном мире. Оно используется рендерером для правильного позиционирования камеры с новыми данными отслеживания.
\ **Примечание:** Это свойство управляется текущим узлом :ref:`XROrigin3D<class_XROrigin3D>`. Оно открыто для доступа из GDExtensions.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_property_world_scale:
.. rst-class:: classref-property
:ref:`float<class_float>` **world_scale** = ``1.0`` :ref:`🔗<class_XRServer_property_world_scale>`
.. rst-class:: classref-property-setget
- |void| **set_world_scale**\ (\ value\: :ref:`float<class_float>`\ )
- :ref:`float<class_float>` **get_world_scale**\ (\ )
Масштаб игрового мира по сравнению с реальным. По умолчанию, большинство AR/VR-платформ считают, что 1 игровая единица соответствует 1 метру реального мира.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описания метода
------------------------------
.. _class_XRServer_method_add_interface:
.. rst-class:: classref-method
|void| **add_interface**\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ ) :ref:`🔗<class_XRServer_method_add_interface>`
Регистрирует объект :ref:`XRInterface<class_XRInterface>`.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_add_tracker:
.. rst-class:: classref-method
|void| **add_tracker**\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ ) :ref:`🔗<class_XRServer_method_add_tracker>`
Регистрирует новый :ref:`XRTracker<class_XRTracker>`, отслеживающий физический объект.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_center_on_hmd:
.. rst-class:: classref-method
|void| **center_on_hmd**\ (\ rotation_mode\: :ref:`RotationMode<enum_XRServer_RotationMode>`, keep_height\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_XRServer_method_center_on_hmd>`
Важно правильно понимать эту функцию. Платформы дополненной и виртуальной реальности (AR) и виртуальной реальности (VR) обрабатывают позиционирование немного по-разному.
На платформах, не поддерживающих пространственное отслеживание, наша исходная точка ``(0, 0, 0)`` — это местоположение нашего шлема виртуальной реальности (HMD), но вы практически не можете контролировать направление взгляда игрока в реальном мире.
На платформах, поддерживающих пространственное отслеживание, наша исходная точка сильно зависит от системы. В OpenVR наша исходная точка обычно находится в центре пространства отслеживания на земле. На других платформах это часто местоположение камеры отслеживания.
Этот метод позволяет центрировать трекер относительно местоположения шлема виртуальной реальности (HMD). Он берёт текущее местоположение шлема виртуальной реальности и использует его для корректировки всех данных отслеживания; по сути, он адаптирует реальный мир к текущему положению игрока в игровом мире.
Для получения приемлемых результатов этот метод должен быть доступен для отслеживания. Это часто происходит через несколько кадров после запуска игры.
Вызвать этот метод следует через несколько секунд. Например, когда пользователь запрашивает перенастройку дисплея, удерживая назначенную кнопку на контроллере в течение короткого периода времени, или при реализации механизма телепортации.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_clear_reference_frame:
.. rst-class:: classref-method
|void| **clear_reference_frame**\ (\ ) :ref:`🔗<class_XRServer_method_clear_reference_frame>`
Очищает опорную рамку, установленную предыдущими вызовами :ref:`center_on_hmd()<class_XRServer_method_center_on_hmd>`.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_find_interface:
.. rst-class:: classref-method
:ref:`XRInterface<class_XRInterface>` **find_interface**\ (\ name\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_XRServer_method_find_interface>`
Находит интерфейс по его ``name``. Например, если ваш проект использует возможности платформы AR/VR, вы можете найти интерфейс для этой платформы по имени и инициализировать его.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_get_hmd_transform:
.. rst-class:: classref-method
:ref:`Transform3D<class_Transform3D>` **get_hmd_transform**\ (\ ) :ref:`🔗<class_XRServer_method_get_hmd_transform>`
Возвращает преобразование основного интерфейса.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_get_interface:
.. rst-class:: classref-method
:ref:`XRInterface<class_XRInterface>` **get_interface**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_XRServer_method_get_interface>`
Возвращает интерфейс, зарегистрированный по заданному ``idx`` индексу в списке интерфейсов.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_get_interface_count:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_interface_count**\ (\ ) |const| :ref:`🔗<class_XRServer_method_get_interface_count>`
Возвращает количество интерфейсов, зарегистрированных в настоящее время на AR/VR-сервере. Если ваш проект поддерживает несколько AR/VR-платформ, вы можете просмотреть все доступные интерфейсы и либо предложить пользователю выбор, либо просто попытаться инициализировать каждый интерфейс и использовать первый, который вернет ``true``.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_get_interfaces:
.. rst-class:: classref-method
:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **get_interfaces**\ (\ ) |const| :ref:`🔗<class_XRServer_method_get_interfaces>`
Возвращает список доступных интерфейсов с указанием идентификатора и названия каждого интерфейса.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_get_reference_frame:
.. rst-class:: classref-method
:ref:`Transform3D<class_Transform3D>` **get_reference_frame**\ (\ ) |const| :ref:`🔗<class_XRServer_method_get_reference_frame>`
Возвращает преобразование системы отсчета. В основном используется для внутренних целей и используется для интерфейсов сборки GDExtension.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_get_tracker:
.. rst-class:: classref-method
:ref:`XRTracker<class_XRTracker>` **get_tracker**\ (\ tracker_name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_XRServer_method_get_tracker>`
Возвращает позиционный трекер с заданным ``tracker_name``.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_get_trackers:
.. rst-class:: classref-method
:ref:`Dictionary<class_Dictionary>` **get_trackers**\ (\ tracker_types\: :ref:`int<class_int>`\ ) :ref:`🔗<class_XRServer_method_get_trackers>`
Возвращает словарь трекеров для ``tracker_types``.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_remove_interface:
.. rst-class:: classref-method
|void| **remove_interface**\ (\ interface\: :ref:`XRInterface<class_XRInterface>`\ ) :ref:`🔗<class_XRServer_method_remove_interface>`
Удаляет этот ``interface``.
.. rst-class:: classref-item-separator
----
.. _class_XRServer_method_remove_tracker:
.. rst-class:: classref-method
|void| **remove_tracker**\ (\ tracker\: :ref:`XRTracker<class_XRTracker>`\ ) :ref:`🔗<class_XRServer_method_remove_tracker>`
Удаляет этот ``tracker``.
.. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)`
.. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)`
.. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)`
.. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)`
.. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)`
.. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)`
.. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`