手で直接操作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. このため、直接操作はユーザーにとって学びやすく、楽しくもあります。This makes direct manipulation easy for users to learn, and fun. 直接操作は、"近接" 入力モデルと考えられており、手の届く範囲にあるコンテンツの操作に最適です。It's considered a "near" input model in that it's best used for interacting with content within arms reach.

直接操作はアフォーダンスをベースとしているので、操作が簡単です。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.

デバイス サポート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 through the use of motion controllers, but is not recommended as a primary means of interaction outside of object manipulation. HoloLens (第 1 世代) では直接操作を利用できません。Direct manipulation is not 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 つのコライダーを取り付けることが理想的と考えられました。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, due to the lack of tactile feedback, ten collidable fingertips can cause unexpected and unpredictable collisions with holograms.

このため、両方の人差し指だけにコライダーを付けることをお勧めします。Hence, we suggest only putting a collider on each index finger. それでも、接触可能な人差し指の指先は、下の画像に示すように、他の指を含むさまざまなタッチ ジェスチャのアクティブ タッチ ポイントとして機能します。たとえば、指 1 本で押す、指 1 本でタップ、指 2 本で押す、指 5 本で押すなどです。The collidable index fingertips can still serve as active touch points for diverse touch gestures involving other fingers, such as One-finger press, One-finger tap, Two-finger press and Five-finger press, as shown in the image below.

接触可能な指先collidable fingertip
接触可能な指先Collidable fingertip

指 1 本で押すOne-finger press
指 1 本で押すOne-finger press

指 1 本でタップOne-finger tap
指 1 本でタップOne-finger tap

指 5 本で押すFive-finger press
指 5 本で押す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. hand 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 interactively achieve a better near-targeting experience. これは、人差し指に付随するドーナツ型のカーソルです。It is a donut-shaped cursor attached to the index fingertip. これは距離に応じて対象に反応して向きやサイズが変化します。詳しくは、以下のとおりです。According to proximity, it dynamically reacts to a target in terms of 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 accordingly.
  • 指が表面に触れるとカーソルは直ちにドットにまで縮小し、タッチ イベントが発生します。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 accordingly.

接触開始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, due to the lack of tactile feedback, a pressable button equips a couple mechanisms to tackle tactile feedback-related issues.

  • 1 つ目のメカニズムは、近接シェーダーを備えた境界ボックスです。これについては、前のセクションで詳しく説明しました。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.
  • 2 つ目のメカニズムは、押し下げの感覚です。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 designated 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 スレートは、Web ブラウザーなどの 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 to leverage the mental model of 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

移動Move
移動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.

スケールScale
スケールScale
操作アフォーダンスをつかみ、隅のアフォーダンスで均等に拡大縮小します。Grab the manipulation affordances and perform uniform scaling through the corner affordances.

リフローReflow
リフローReflow
操作アフォーダンスをつかみ、端のアフォーダンスでリフローを実行します。Grab the manipulation affordances and perform 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 オブジェクト操作のための 2 つの設計アプローチがあります。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.

移動Move
移動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.

回転Rotate
回転Rotate
ユーザーは、端のアフォーダンスをつかんで回転できます。Users can grab the edge affordances to rotate.

スケールScale
スケールScale
ユーザーは、隅のアフォーダンスをつかんで均等に拡大縮小できます。Users can grab the corner affordances to scale uniformly.


アフォーダンスをベースとしない操作Non-affordance based manipulation

アフォーダンスをベースとしない操作では、アフォーダンスは境界ボックスにアタッチされません。Non-affordance-based manipulation does not 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.

たとえば、2 本の指でピンチしてオブジェクトまたは制御点をつかむようユーザーに促す場合、オブジェクトまたは制御点は小さいはずです。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. 5 本の指でつかむようユーザーに促す場合、オブジェクトまたは制御点は比較的大きいはずです。If we want the user to perform five finger grab, the object or the control point should be relatively large. ボタンも同様です。小さいボタンならユーザーは 1 本の指でしか押せませんが、大きなボタンならユーザーは手のひらで押すよう促されます。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.

移動Move
小さなオブジェクトSmall object

回転Rotate
中程度のオブジェクトMedium object

スケールScale
大きなオブジェクト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. これにより、ユーザーは、2 つのプラットフォームの間の操作に習熟することができます。この知識は、アプリケーションを一方から他方に移植する場合に役立つことがあります。This provides users with interaction familiarity between the two platforms, which might prove useful if you ever decide to port your application from one to the other.



視線追跡の使用による最適化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 are reading through a holographic (instructional) text when reaching over to grab you real-world work tool.

そのときうっかり、ユーザーの視野 (FOV) に入っていなかったなどの理由で、それまでは気付いてさえいなかったいくつかの対話型ホログラフィック ボタンを横切って手を動かしてしまいました。By doing so, you accidentally move your hand across some interactive holographic buttons that you hadn't even noticed before (e.g. it may be outside the user's field-of-view (FoV)).

つまり:ユーザーがしばらくの間ホログラムを見ていないにもかかわらず、それに対するタッチ イベントまたはグリップ イベントが検出された場合、ユーザーは実際にはそのホログラムと対話するつもりはなかった可能性があります。Long story short: If the user hasn't looked at a hologram for a while, yet a touch or grasp event has been detected for it, it is likely that the user wasn't actually intending to interact with that hologram.

  • どちら:アクティブ化の誤検知への対応以外に、つかんだり突いたりするホログラムを識別しやすくなるという別の例もあります。特にいくつかのホログラムが互いに近接して配置されている場合、こちらの視点から正確な交点がはっきりと見えない場合があるためです。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 very helpful for near interactions due to depth disparity when interacting with hand input. このことは、たとえば操作ウィジェットをつかむときに手がホログラムの後ろにあるのか前にあるのかを判断するのが難しい場合があることを意味します。This means that it is 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 performing hand gestures may result in highly inaccurate destinations. しかし、視線追跡でジェスチャの精度を向上できる場合があります。However, eye tracking could improve the accuracy of the gesture.



Unity 向け MRTK (Mixed Reality ツールキット) の操作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