수동으로 직접 조작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. 단추는 간단히 눌러서 활성화하고, 개체는 잡아서 선택할 수 있으며, 2D 콘텐츠는 가상의 터치 스크린처럼 동작합니다.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. UI의 경우 대신 손을 사용하여 가리키고 커밋하는 것이 좋습니다.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. 손으로 홀로그램을 직접 터치한다는 개념을 적절히 구현하기 위해 각 손 골격 모델의 5개 손끝에 5개의 충돌체(collider)를 연결할 수 있습니다.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. 그러나 촉각 피드백이 부족하므로 충돌 가능한 10개의 손가락 끝으로 인해 홀로그램과 예기치 않은 충돌이 발생할 수 있습니다.However, because of the lack of tactile feedback, 10 collidable fingertips can cause unexpected and unpredictable collisions with holograms.

각 집게손가락에만 충돌체(collider)를 배치하는 것이 좋습니다.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



구형 충돌체(collider)Sphere collider

임의의 일반 셰이프를 사용하는 대신, 구형 충돌체(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. 경계 상자는 3D 개체를 둘러싸는 최소 체적 영역입니다.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

충돌 가능한 손끝을 사용하면 사용자가 기본적인 홀로그래픽 UI 구성 요소(예: 누를 수 있는 단추)와 상호 작용할 수 있습니다.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 슬레이트 상호 작용2D slate interaction

2D 슬레이트는 웹 브라우저와 같은 2D 앱 콘텐츠를 호스트하는 데 사용되는 홀로그램 컨테이너입니다.A 2D slate is a holographic container used to host 2D app content, such as a web browser. 직접 조작을 통해 2D 슬레이트와 상호 작용하기 위한 디자인 개념은 실제 터치 화면과 상호 작용하는 것과 동일합니다.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
사용자는 2개의 집게 손가락을 사용하여 손가락의 상대적 모션에 따라 슬레이트 콘텐츠를 확대 및 축소합니다.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.

2D 슬레이트 자체를 조작하려면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. 2D 슬레이트의 맨 위에 있는 홀로바를 잡으면, 슬레이트 전체를 옮길 수 있습니다.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 개체 조작3D object manipulation

HoloLens 2에서는 사용자가 3D 개체마다 경계 상자를 적용하여 손으로 3D 홀로그래픽 개체를 겨냥하고 조작할 수 잇습니다.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. 경계 상자를 사용하면 3D 개체 조작을 위해 두 가지 디자인 방식을 사용할 수 있습니다.With the bounding box, there are two design approaches for 3D object manipulation.

어포던스 기반 조작Affordance-based manipulation

어포던스 기반 조작에서는 경계 상자와 주변의 조작 어포던스를 통해 3D 개체를 조작할 수 있습니다.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
사용자의 손이 3D 개체에 가까워지는 즉시 경계 상자 및 가장 가까운 어포던스가 표시됩니다.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. 직관적 제스처를 달성하는 방법은 사용자가 UI 어포던스의 디자인을 통해 제스처를 수행하도록 돕는 것입니다.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




손과 6 DoF 컨트롤러 간의 대칭 디자인Symmetric design between hands and 6 DoF controllers

AR의 손과 VR의 모션 컨트롤러 간에는 상호 작용 평행 이론이 작용한다는 것을 알 수 있습니다.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. 예를 들어 사용자의 FoV(시야) 밖에 있을 수 있습니다.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.



Unity용 MRTK(Mixed Reality Toolkit)의 조작Manipulation 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