Непосредственное манипулирование рукамиDirect manipulation with hands

Кнопка

Непосредственное манипулирование —это модель ввода, которая предполагает прикосновение к голограммам непосредственно руками.Direct manipulation is an input model that involves touching holograms directly with your hands. Суть этого принципа состоит в том, что объекты ведут себя так же, как в реальном мире.The idea behind this concept is that objects behave just as they would in the real world. Кнопки можно активировать, просто нажимая их, объекты можно выбирать, хватая их, а двумерное содержимое ведет себя как виртуальный сенсорный экран.Buttons can be activated simply by pressing them, objects can be picked up by grabbing them, and 2D content behaves like a virtual touchscreen. Непосредственное манипулирование основано на возможностях интерфейса, и оно удобно для пользователей.Direct manipulation is affordance-based, meaning it's user-friendly. Оно не подразумевает символические жесты.There are no symbolic gestures to teach users. Все взаимодействия построены вокруг визуального элемента, который вы можете тронуть или схватить.All interactions are built around a visual element that you can touch or grab. Оно считается моделью "ближнего" ввода. Это означает, что непосредственное манипулирование лучше всего использовать для взаимодействия с содержимым, которое находится в пределах досягаемости.It's considered a "near" input model in that it's best used for interacting with content within arms reach.

Поддержка устройствDevice support

Модель вводаInput model HoloLens (1-го поколения)HoloLens (1st gen) HoloLens 2HoloLens 2 Иммерсивные гарнитурыImmersive headsets
Непосредственное манипулирование рукамиDirect manipulation with hands ❌ Не поддерживается.❌ Not supported ✔️ Рекомендуется✔️ Recommended ➕ Поддерживается.➕ Supported. Для пользовательского интерфейса рекомендуем использовать наведение и фиксацию с помощью рук.For UI, we recommend point and commit with hands instead.

Непосредственное манипулирование является основной моделью ввода в HoloLens 2, где используется новая система отслеживания рук.Direct manipulation is a primary input model on HoloLens 2, which uses the new articulated hand-tracking system. Модель ввода также доступна для иммерсивных гарнитур благодаря использованию контроллеров движений, но не рекомендуется в качестве основного средства взаимодействия за рамками манипулирования объектами.The input model is also available on immersive headsets by using motion controllers, but isn't recommended as a primary means of interaction outside of object manipulation. Непосредственное манипулирование недоступно в HoloLens (1-го поколения).Direct manipulation isn't available on HoloLens (1st gen).



Кончик пальца с обратной связьюCollidable fingertip

На устройстве HoloLens 2 руки пользователя распознаются и интерпретируются как модели скелета левой и правой руки.On HoloLens 2, the user's hands are recognized and interpreted as left and right-hand skeletal models. Чтобы реализовать идею прикосновения к голограммам непосредственно с помощью рук, в идеале можно прикрепить пять индикаторов обратной связи к пяти кончикам пальцев каждой скелетной модели руки.To implement the idea of touching holograms directly with hands, ideally, five colliders could be attached to the five fingertips of each hand skeletal model. Однако из-за отсутствия тактильной обратной связи с десятью кончиками пальцев могли возникать неожиданные и непредсказуемые столкновения с голограммами.However, because of the lack of tactile feedback, 10 collidable fingertips can cause unexpected and unpredictable collisions with holograms.

Следовательно, мы предлагаем размещать коллайдер только на каждый указательный палец.We suggest only putting a collider on each index finger. Кончики указательных пальцев с регистрацией столкновений также можно использовать в качестве активных точек касания для различных жестов с касаниями, при которых участвуют другие пальцы.The collidable index fingertips can still serve as active touch points for diverse touch gestures involving other fingers. Жесты касания включают в себя нажатие одним пальцем, прикосновение одним пальцем, нажатие двумя пальцами, а также нажатие пятью пальцами, как показано ниже:Touch gestures include One-finger press, One-finger tap, Two-finger press, and Five-finger press, as shown below:

Кончик пальца с обратной связьюcollidable fingertip
Кончик пальца с обратной связьюCollidable fingertip

Нажатие одним пальцемOne-finger press
Нажатие одним пальцемOne-finger press

Касание одним пальцемOne-finger tap
Касание одним пальцемOne-finger tap

Нажатие пятью пальцамиFive-finger press
Нажатие пятью пальцамиFive-finger press



Сферический индикатор обратной связиSphere collider

Вместо случайной универсальной формы мы предлагаем использовать сферический индикатор обратной связиInstead of using a random generic shape, we suggest you use a sphere collider. и визуализировать его, чтобы обеспечить лучшее восприятие ближнего прицеливания.Then you can visually render it to provide better cues for near targeting. Диаметр сферы должен соответствовать толщине указательного пальца, чтобы повысить точность касания.The sphere's diameter should match the thickness of the index finger to increase touch accuracy. Получить переменную толщину пальца будет легче, вызвав API для работы с руками.It's easier to retrieve the variable of finger thickness by calling the hand API.

Курсор для кончика пальцаFingertip cursor

Помимо рендеринга сферы с регистрацией столкновений для кончика указательного пальца, мы создали продвинутый курсор для кончика пальца, чтобы оптимизировать возможности ближнего прицеливания.In addition to rendering a collidable sphere on the index fingertip, we've created an advanced fingertip cursor to achieve a better near-targeting experience. Это указатель в форме кольца, прикрепленный к кончику указательного пальца.It's a donut-shaped cursor attached to the index fingertip. По мере приближения он динамически реагирует на цель с точки зрения ориентации и размера, как описано ниже:According to proximity, it dynamically reacts to a target for orientation and size as detailed below:

  • Когда указательный палец приближается к голограмме, курсор всегда параллелен поверхности голограммы и постепенно уменьшается в размере.When an index finger moves toward a hologram, the cursor is always parallel to the hologram's surface and gradually shrinks its size.
  • Как только палец касается поверхности, курсор сжимается до точки и создается событие касания.As soon as the finger touches the surface, the cursor shrinks into a dot and emits a touch event.

Благодаря интерактивной обратной связи пользователи могут достигать высокой точности при выполнении задач ближнего прицеливания, таких как запуск гиперссылки на странице или нажатие кнопки, как показано ниже.With interactive feedback, users can achieve high precision near-targeting tasks, such as triggering a hyperlink or pressing a button as shown below.

Курсор для кончика пальца вдалиFingertip cursor far
Курсор для кончика пальца вдалиFingertip cursor far

Курсор для кончика пальца близкоFingertip cursor near
Курсор для кончика пальца близкоFingertip cursor near

Контакт курсора для кончика пальцаFingertip cursor contact
Контакт курсора для кончика пальцаFingertip cursor contact


Ограничивающая рамка с шейдером приближенияBounding box with proximity shader

Для самой голограммы также требуется способность обеспечивать как визуальную, так и звуковую обратную связь, чтобы компенсировать отсутствие тактильной обратной связи.The hologram itself also requires the ability to provide both visual and audio feedback to compensate the lack of tactile feedback. Для этого мы придумали концепцию ограничивающей рамки с шейдером приближения.For that, we generate the concept of a bounding box with a proximity shader. Ограничивающая рамка — это минимальная объемная область, включающая трехмерный объект.A bounding box is a minimum volumetric area that encloses a 3D object. Ограничивающая рамка имеет интерактивный механизм визуализации, называемый шейдером приближения.The bounding box has an interactive rendering mechanism called a proximity shader. Поведение шейдера приближения:The proximity shader behaves:

Наведение (издали) с визуальной обратной связьюHover (far) with visual feedback
Наведение (издали)Hover (far)
Когда указательный палец находится в пределах диапазона, указатель кончика пальца проецируется на поверхность ограничивающей рамки.When the index finger is within a range, a fingertip spotlight is cast on the surface of the bounding box.

Наведение (вблизи) с визуальной обратной связьюHover (near) with visual feedback
Наведение (вблизи)Hover (near)
Когда кончик пальца приближается к поверхности, указатель сжимается.When the fingertip gets closer to the surface, the spotlight shrinks.

Контакт начинаетсяContact begins
Контакт начинаетсяContact begins
Как только кончик пальца коснется поверхности, вся ограничивающая рамка изменит цвет или создаст визуальный эффект для индикации состояния касания.As soon as the fingertip touches the surface, the entire bounding box changes color or generates visual effects to reflect the touch state.

Контакт завершаетсяContact ends
Контакт завершаетсяContact ends
Для усиления визуальной обратной связи касания можно активировать звуковой эффект.A sound effect can also be activated to enhance the visual touch feedback.



Нажимаемая кнопкаPressable button

Благодаря обратной связи с помощью кончика пальца пользователи могут взаимодействовать с основополагающим компонентом голографического интерфейса — нажимаемой кнопкой.With a collidable fingertip, users are now ready to interact with a fundamental holographic UI component, such as a pressable button. Нажимаемая кнопка — это голографическая кнопка, предназначенная для непосредственного нажатия пальцем.A pressable button is a holographic button tailored for a direct finger press. Опять же, из-за отсутствия тактильной обратной связи нажимаемая кнопка оснащена несколькими механизмами для решения проблем, связанных с тактильной обратной связью.Again, because of the lack of tactile feedback, a pressable button equips a couple mechanisms to tackle tactile feedback-related issues.

  • Первый механизм — это ограничивающий прямоугольник с шейдером приближения. Этот механизм подробно описан в предыдущем разделе.The first mechanism is a bounding box with a proximity shader, which is detailed in the previous section. Он служит для того, чтобы пользователи чувствовали приближение и контакт с кнопкой.It gives users a better sense of proximity when they approach and make contact with a button.
  • Второй механизм — надавливание.The second mechanism is depression. Он создает ощущение нажатия после контакта пальца с кнопкой.Depression creates a sense of pressing down after a fingertip contacts a button. Механизм обеспечивает перемещение кнопки вплотную к кончику пальца вдоль оси глубины.The mechanism ensures that the button tightly moves with the fingertip along the depth axis. Кнопка может сработать, когда она достигает выбранной глубины (при нажатии) или поднимается (при отпускании) после прохождения через нее.The button can be triggered when it reaches a chosen depth (on press) or leaves the depth (on release) after passing through it.
  • Для улучшения обратной связи нужно добавить звуковой эффект, активируемый при нажатии кнопки.The sound effect should be added to enhance feedback when the button is triggered.

Нажимаемая кнопка вдалиpressable button far
Палец вдалиFinger is far away

Нажимаемая кнопка близкоpressable button near
Палец приближаетсяFinger approaches

Начинается контакт с нажимаемой кнопкойpressable button contact begins
Контакт начинаетсяContact begins

Нажатие нажимаемой кнопкиpressable button press
НажатиеPress down



Взаимодействие с двумерным экраном2D slate interaction

Двухмерный экран — это голографический контейнер, используемый для размещения содержимого двухмерных приложений, таких как веб-браузер.A 2D slate is a holographic container used to host 2D app content, such as a web browser. Концепция для взаимодействия с двумерным экраном с помощью непосредственного манипулирования не отличается от взаимодействия с физическим сенсорным экраном.The design concept for interacting with a 2D slate via direct manipulation is the same as interacting with a physical touch screen.

Для взаимодействия с экраном планшета:To interact with the slate contact

Сенсорный вводTouch
Сенсорный вводTouch
Используйте указательный палец, чтобы нажать гиперссылку или кнопку.Use an index finger to press a hyperlink or a button.

ПрокруткаScroll
ПрокруткаScroll
Используйте указательный палец для прокрутки содержимого экрана вверх и вниз.Use an index finger to scroll a slate content up and down.

МасштабированиеZoom
МасштабированиеZoom
С помощью двух указательных пальцев пользователя можно увеличивать и уменьшать содержимое экрана в соответствии с относительным движением пальцев.The user's two index fingers are used to zoom in and out of the slate content, according to the relative motion of the fingers.

Для манипуляции самим двумерным экраном планшета:For manipulating the 2D slate itself

Рисунок с функцией захвата и перетаскиванияGraphic showing grab and drag feature
ПеремещениеMove
Поднесите руки к углам и краям, чтобы выявить самые близкие возможности для манипуляции.Move your hands toward corners and edges to reveal the closest manipulation affordances. Захватите голографическую панель в верхней части двумерного экрана планшета, что позволит переместить весь экран.Grab the Holobar at the top of the 2D slate, which lets you move the whole slate.

Рисунок с функцией масштабированияGraphic showing scale feature
МасштабированиеScale
Захватите возможности для манипуляции и выполните равномерное масштабирование с помощью угловых возможностей.Grab the manipulation affordances and do uniform scaling through the corner affordances.

АдаптацияReflow
АдаптацияReflow
Захватите возможности для манипуляции и выполните адаптацию с помощью возможностей граней.Grab the manipulation affordances and do reflow via the edge affordances.



Манипуляция трехмерными объектами3D object manipulation

HoloLens 2 позволяет пользователям с помощью рук управлять трехмерными голографическими объектами, применяя ограничивающий прямоугольник к каждому такому объекту.HoloLens 2 lets users enable their hands to direct and manipulate 3D holographic objects by applying a bounding box to each 3D object. Ограничивающая рамка обеспечивает лучшее восприятие глубины благодаря шейдеру приближения.The bounding box provides better depth perception through its proximity shader. С ограничивающей рамкой доступно два подхода для манипулирования трехмерными объектами.With the bounding box, there are two design approaches for 3D object manipulation.

Манипуляция на основе возможностейAffordance-based manipulation

Манипулирование на основе возможностей позволяет манипулировать трехмерным объектом с помощью ограничивающей рамки и возможностей для манипулирования вокруг него.Affordance-base manipulation lets you manipulate the 3D object through a bounding box along with the manipulation affordances around it.

Рисунок с ограничивающим прямоугольником объектов и функцией перемещенияGraphic showing an objects bounding box and move feature
ПеремещениеMove
Как только рука пользователя приближается к трехмерному объекту, появляются ограничивающая рамка и ближайшая возможность.As soon as a user's hand is close to a 3D object, the bounding box, and the nearest affordance are revealed. Пользователи могут захватить ограничивающий прямоугольник, чтобы переместить весь объект.Users can grab the bounding box to move the whole object.

Рисунок с пользователем, который захватывает край объекта для поворотаGraphic showing user grabbing an objects edge to rotate
ПоворотRotate
Пользователи могут захватить крайние возможности, чтобы выполнить поворот.Users can grab the edge affordances to rotate.

Рисунок с пользователем, который захватывает угол объекта для масштабированияGraphic showing user grabbing an objects corner to scale
МасштабированиеScale
Пользователи могут захватить угловые возможности, чтобы выполнить равномерное масштабирование.Users can grab the corner affordances to scale uniformly.


Манипуляция без использования возможностейNon-affordance-based manipulation

При таком манипулировании возможности не прикрепляются к ограничивающему прямоугольнику.Non-affordance-based manipulation doesn't attach affordance to the bounding box. Пользователи могут только отобразить ограничивающую рамку, а затем напрямую взаимодействовать с ней.Users can only reveal the bounding box, then directly interact with it. Если ограничивающая рамка захватывается одной рукой, перемещение и вращение объекта связаны с движением и ориентацией руки.If the bounding box is grabbed with one hand, the translation and rotation of the object are associated to motion and orientation of the hand. Когда объект хватается двумя руками, пользователи могут переносить, масштабировать и вращать его в соответствии с относительными движениями двух рук.When the object is grabbed with two hands, users can translate, scale, and rotate it according to relative motions of two hands.

Для определенных манипуляций требуется точность.Specific manipulation requires precision. Рекомендуется использовать манипулирование на основе возможностей, так как оно обеспечивает высокий уровень точности.We recommend that you use affordance-based manipulation because it provides a high level of granularity. Для гибкого манипулирования мы рекомендуем использовать манипулирование без использования возможностей, так как оно позволяет получить мгновенные и забавные эффекты.For flexible manipulation, we recommend you use non-affordance manipulation as it allows for instant and playful experiences.



Инстинктивные жестыInstinctual gestures

При работе с HoloLens (1-го поколения) мы обучили пользователей нескольким предопределенным жестам, таким как раскрытие ладони и касание.With HoloLens (1st gen), we taught users a couple of predefined gestures, such as bloom and air tap. В случае с HoloLens 2 мы не просим пользователей запоминать какие-либо символические жесты.For HoloLens 2, we don't ask users to memorize any symbolic gestures. Все необходимые жесты пользователя, с помощью которых можно взаимодействовать с голограммами и содержимым, являются инстинктивными.All required user gestures, where users need to interact with holograms and content, are instinctual. Способ достижения инстинктивного жеста состоит в том, чтобы побуждать пользователей выполнять жесты на основе дизайна возможностей пользовательского интерфейса.The way to achieve instinctual gestures is to help users perform gestures through the design of UI affordances.

Например, если нам требуется, чтобы пользователь захватил объект или контрольную точку двумя пальцами, объект или контрольная точка должны быть маленькими.For example, if we encourage the user to grab an object or a control point with a two finger pinch, the object or the control point should be small. Если мы хотим, чтобы пользователь захватил элемент пятью пальцами, объект или контрольная точка должны быть относительно большими.If we want the user to do a five finger grab, the object or the control point should be relatively large. Аналогично кнопкам, маленькая кнопка потребует от пользователя нажатия одним пальцем.Similar to buttons, a tiny button would limit users to press it with a single finger. Большая кнопка потребует от пользователя нажатия ладонью.A large button would encourage users to press it with their palms.

Рисунок с пользователем, захватывающем небольшие объекты для перемещенияGraphic showing user grabbing small object to move
Маленький объектSmall object

Рисунок с пользователем, захватывающем объекты среднего размера для перемещенияGraphic showing user grabbing medium object to move
Средний объектMedium object

Рисунок с пользователем, захватывающем объекты большого размера для перемещенияGraphic showing user grabbing large object to move
Крупный объектLarge object




Симметричный дизайн для работы с помощью рук и контроллеров с шестью степенями свободыSymmetric design between hands and 6 DoF controllers

Возможно, вы заметили параллели при взаимодействии с помощью рук в дополненной реальности и контроллерами движений в виртуальной реальности.You may have noticed that there are interaction parallels we can draw between hands in AR and motion controllers in VR. Оба способа ввода можно использовать для выполнения непосредственного манипулирования в соответствующих средах.Both inputs can be used to trigger direct manipulations in their respective environments. В HoloLens 2 захват и перетаскивание руками на близком расстоянии работает почти так же, как кнопка захвата на контроллерах движения в WMR.In HoloLens 2, grabbing and dragging with hands at a close distance works much the same way as the grab button does on WMR motion controllers. Это позволяет пользователям лучше понять разницу взаимодействия между двумя платформами и может оказаться полезным, если вы когда-нибудь решите перенести свое приложение из одной из них в другую.This provides users with interaction familiarity between the two platforms, which might prove useful if you ever decide to port your application between platforms.



Оптимизация с помощью отслеживания глазOptimize with eye tracking

Непосредственное манипулирование может показаться магией, если оно работает так, как задумано.Direct manipulation can feel magical if it works as intended. Но если при любом движении рук непреднамеренно активируется голограмма, это может раздражать.But it can also become frustrating if you can’t move your hand anywhere without unintentionally triggering a hologram. Отслеживание глаз потенциально может помочь лучше определить намерения пользователя.Eye tracking potentially helps to better identify what the user’s intent is.

  • Если. Уменьшение непреднамеренного срабатывания ответа на действие манипулирования.When: Reduce unintentionally triggering a manipulation response. Отслеживание глаз позволяет лучше понять, что в настоящее время интересует пользователя.Eye tracking allows for better understanding what a user is currently engaged with. Например, представьте, что вы читаете голографический (учебный) текст и протягиваете руку, чтобы схватить реальный рабочий инструмент.For example, imagine you're reading through a holographic (instructional) text when reaching over to grab you real-world work tool.

Таким образом вы случайно перемещаете руку над различными интерактивными голографическими кнопками, на которые вы не обращали вниманияBy doing so, you accidentally move your hand across some interactive holographic buttons that you hadn't even noticed before. (например, они могут быть вне поля зрения пользователя).For example, it may be outside the user's field-of-view (FoV).

Если пользователь некоторое время не смотрел на голограмму, но было обнаружено событие касания или захвата, вероятно, взаимодействие не было намеренным.If the user hasn't looked at a hologram for a while, yet a touch or grasp event has been detected for it, the interaction is likely unintentional.

  • Который элемент. Помимо ложноположительных активаций, иногда требуется более совершенное определение голограмм, которые нужно захватить или активировать, так как точная точка пересечения может быть неясной с вашей точки зрения, особенно если несколько голограмм расположены близко друг к другу.Which one: Aside from addressing false positive activations, another example includes better identifying which holograms to grab or poke as the precise intersection point may not be clear from your perspective, especially if several holograms are positioned close to each other.

    Хотя отслеживание взгляда в HoloLens 2 имеет ограничение точности определения его направления, оно все равно может быть очень полезно для близких взаимодействий из-за дисбаланса глубины при взаимодействии посредством ввода руками.While eye tracking on HoloLens 2 has limitations based on how accurately it can determine your eye gaze, this can still be helpful for near interactions because of depth disparity when interacting with hand input. Это означает, что иногда трудно определить, где находится ваша рука (позади или перед голограммой), чтобы, например, точно захватить виджет манипулирования.This means it's sometimes difficult to determine whether your hand is behind or in front of a hologram to precisely grab a manipulation widget, for example.

  • Где. Использование информации о том, на что смотрит пользователь, выполняющий быстрые жесты.Where to: Use information about what a user is looking at with quick-throwing gestures. Захватите голограмму и небрежно переместите ее в место назначения.Grab a hologram and roughly toss it toward your intended destination.

    Иногда это работает, но быстрое выполнение жестов руками может привести к очень неточному определению направлений.While this sometimes works, quickly doing hand gestures may result in highly inaccurate destinations. Тем не менее, отслеживание глаз может повысить точность жестов.However, eye tracking could improve the accuracy of the gesture.



Манипуляции в MRTK (наборе средств для смешанной реальности) для UnityManipulation in MRTK (Mixed Reality Toolkit) for Unity

В MRTK можно легко настроить типичное поведение при манипуляции, используя скрипт ObjectManipulator.With MRTK, you can easily achieve common manipulation behavior using the script ObjectManipulator. Благодаря ObjectManipulator можно захватывать и перемещать объекты непосредственно руками или с помощью телекинеза.With ObjectManipulator, you can grab and move objects directly with hands or with hand ray. Этот скрипт также поддерживает манипуляции двумя руками для масштабирования и поворота объекта.It also supports two-handed manipulation for scaling and rotating an object.


См. также статьюSee also