XRInputSource: свойство gripSpace
Ограниченная доступность
Эта функция не является базовой, так как она не работает во всех наиболее распространённых браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Только для чтения XRInputSource свойство gripSpace возвращает XRSpace, чья родная система координат отслеживает позу, используемую для рендеринга виртуальных объектов, чтобы они казались удерживаемыми (или частью) рукой пользователя. Например, если пользователь держит виртуальную прямую палку, родная система координат этого XRSpace будет расположена приблизительно в центре тяжести кулака пользователя.
Значение
Объект XRSpace, представляющий положение и ориентацию устройства ввода в виртуальном пространстве, подходящий для рендеринга изображения устройства в сцене. gripSpace является null , если источник ввода не отслеживается по умолчанию. Например, только вводы, у которых targetRayMode является tracked-pointer, предоставляют gripSpace.
Представьте себе контроллер в форме прямой палки, держащейся в кулаке пользователя. Родная система координат пространства захвата расположена в центре тяжести кулака пользователя, отслеживая положение руки пользователя.
Система координат для пространства захвата левой руки.
Система координат для пространства захвата правой руки.
Как показано на диаграмме выше, система координат ориентирована следующим образом:
- Ось X перпендикулярна ладони руки пользователя, при этом направление, выходящее из тыльной стороны руки, является +X, если контроллер в правой руке пользователя, или -X, если контроллер в левой руке.
- Ось Z вдоль длины палки, параллельно ладони пользователя и вдоль длины захвата. -Z направлена в сторону большого пальца пользователя, а +Z в противоположном направлении.
- Ось Y подразумевается соотношением двух других осей; как всегда, это векторное произведение двух других осей (находящийся на 90° от осей X и Z).
Примеры
В этом примере, взятом из обратного вызова рендеринга кадра, gripSpace используется для рендеринга сетки, которая представляет положение и ориентацию контроллера в виртуальной среде.
for (const source in xrSession.inputSources) {
if (source.gripSpace) {
const gripPose = frame.getPose(source.gripSpace, xrRefSpace);
if (gripPose) {
myDrawMeshUsingTransform(controllerMesh, gripPose.transform.matrix);
}
}
}
Для каждого источника ввода, имеющего значение для gripSpace, этот цикл получает XRPose, представляющий положение и ориентацию, которые описаны gripSpace. Если возвращается допустимая поза, вызывается метод myDrawMeshUsingTransform() для отрисовки сетки контроллера, преобразованной с помощью матрицы преобразования позы захвата.
Спецификации
| Спецификация |
|---|
| API устройств WebXR # dom-xrinputsource-gripspace |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
gripSpace |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/XRInputSource/gripSpace