Руководство по переносу логики ввода для UnityInput porting guide for Unity

Вы можете перенести логику ввода в Windows Mixed Reality с помощью одного из двух подходов.You can port your input logic to Windows Mixed Reality using one of two approaches. Во-первых, следует использовать общие интерфейсы API ввода, кнопки и оси Unity, охватывающие несколько платформ.The first is to use Unity's general Input.GetButton/GetAxis APIs that span across multiple platforms. Второй — это XR, относящийся к Windows. Головк. Входные API, которые предлагают более широкие возможности для контроллеров перемещения и HoloLens.The second is the Windows-specific XR.WSA.Input APIs, which offer richer data specifically for motion controllers and HoloLens hands.

Общие входные API-интерфейсы input. OnButton и AXISGeneral Input.GetButton/GetAxis APIs

В настоящее время Unity использует общие интерфейсы API input. Окулус и input. Axis для предоставления входных данных для пакета SDK и пакета SDK для опенвр.Unity currently uses its general Input.GetButton/Input.GetAxis APIs to expose input for the Oculus SDK and the OpenVR SDK. Если ваши приложения уже используют эти API для входных данных, API-интерфейсы input. "Кнопка" и "вход. ось" являются простейшими путями для поддержки контроллеров движения в Windows Mixed Reality.If your apps are already using these APIs for input, the Input.GetButton/Input.GetAxis APIs are the easiest paths for supporting motion controllers in Windows Mixed Reality. Вам потребуется только сопоставить кнопки и оси в диспетчере ввода.You'll only need to remap buttons and axes in the Input Manager.

Дополнительные сведения см. в разделе Таблица соответствия кнопок и осей Unity , а также Общие сведения об общих API Unity.For more information, see the Unity button/axis mapping table and the overview of the common Unity APIs.

XR, относящийся к Windows. Головк. Входные интерфейсы APIWindows-specific XR.WSA.Input APIs

Если приложение уже создает пользовательскую логику ввода для каждой платформы, можно использовать пространственные входные API для Windows в пространстве имен UnityEngine. XR. WSA. Input .If your app already builds custom input logic for each platform, you can use the Windows-specific spatial input APIs in the UnityEngine.XR.WSA.Input namespace. Отсюда вы сможете получить доступ к дополнительным сведениям, таким как точность расположения или тип источника, что позволяет сообщать между ними и контроллерами в HoloLens.From there, you access additional information, such as position accuracy or the source kind, letting you tell hands and controllers apart on HoloLens.

Дополнительные сведения см. в обзоре интерфейсов API UnityEngine. XR. WSA. Input.For more information, see the overview of the UnityEngine.XR.WSA.Input APIs.

Захват захвата и указание объекта aGrip pose vs. pointing pose

Windows Mixed Reality поддерживает контроллеры движения различными конструктивными факторами.Windows Mixed Reality supports motion controllers in different form factors. Структура каждого контроллера различает свое отношение между положением пользователя и естественным направлением "вперед", которое приложения должны использовать для указания при подготовке к просмотру контроллера.Each controller's design differs in its relationship between the user's hand position and the natural "forward" direction that apps should use for pointing when rendering the controller.

Для лучшего представления этих контроллеров существует два вида элементов, которые можно исследовать для каждого источника взаимодействия:To better represent these controllers, there are two kinds of poses you can investigate for each interaction source:

  • Захват, представляющий местоположение ручного устройства, обнаруженного HoloLens, или карманный ПК, удерживающий контроллер движения.The grip pose, which represents the location of either the palm of a hand detected by a HoloLens, or the palm holding a motion controller.
    • В современных головных гарнитурах эта цель лучше подходит для визуализации руки пользователя или объекта, хранящегося в руки пользователя, например технологий или «обойма».On immersive headsets, this pose is best used to render the user's hand or an object held in the user's hand, such as a sword or gun.
    • Позиция захвата: Карманный центроид при удержании контроллера естественным образом настраивается влево или вправо для центрирования места внутри захвата.The grip position: The palm centroid when holding the controller naturally, adjusted left or right to center the position within the grip.
    • Правая ось ориентации захвата: когда вы полностью открываете руку для формирования плоской задачи с 5-пальцем, луч, обычный для вашего кармана (вперед от левого кармана, назад от правого Palm)The grip orientation's Right axis: When you completely open your hand to form a flat 5-finger pose, the ray that is normal to your palm (forward from left palm, backward from right palm)
    • Прямая ось ориентации захвата: когда вы закрываете руку частично, как при удержании контроллера, луч, который указывает на "Forward" через лампу, сформированную неуправляющими пальцами.The grip orientation's Forward axis: When you close your hand partially, as if holding the controller, the ray that points "forward" through the tube formed by your non-thumb fingers.
    • Ось Up (вверх) для ориентации захвата: ось Up, подразумеваемая правым и прямым определением.The grip orientation's Up axis: The Up axis implied by the Right and Forward definitions.
    • Доступ к захвату можно получить через API-интерфейс ввода кросс-поставщика Unity (XR). Инпуттраккинг. Жетлокалпоситион/вращение) или через API Windows (Саурцестате. Саурцепосе. Трижетпоситион/вращение, запрашивающий захват).You can access the grip pose through either Unity's cross-vendor input API (XR.InputTracking.GetLocalPosition/Rotation) or through the Windows-specific API (sourceState.sourcePose.TryGetPosition/Rotation, requesting the Grip pose).
  • Указатель, представляющий кончик контроллера, указывающий на пересылку.The pointer pose, representing the tip of the controller pointing forward.
    • Эта цель лучше использовать для райкаст при наведении указателя на пользовательский интерфейс при отрисовке самой модели контроллера.This pose is best used to raycast when pointing at UI when you're rendering the controller model itself.
    • В настоящее время указатель a доступен только через API-интерфейс Windows (саурцестате. саурцепосе. трижетпоситион/вращение, запрашивая указатель a).Currently, the pointer pose is available only through the Windows-specific API (sourceState.sourcePose.TryGetPosition/Rotation, requesting the Pointer pose).

Эти координаты представляются в универсальных координатах Unity.These pose coordinates are all expressed in Unity world coordinates.

См. такжеSee also