手で直接操作Direct manipulation with hands

直接操作は、ホログラムに手で直接触れる入力モデルです。Direct manipulation is an input model that involves touching holograms directly with your hands. 直接操作の目標は、オブジェクトを現実の世界と同じように動かすことです。The goal with direct manipulation is that objects behave just as they do 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. そのため、直接操作はユーザーにとって学びやすく、楽しくもあります。Because of this, direct manipulation is easy for users to learn, and it's fun too. これは「近接」入力モデルと考えられており、手の届く範囲にあるコンテンツとの対話に最適です。It is considered a "near" input model, meaning it is best used for interacting with content that is 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 ➕ 別の選択肢である手を使ったポイントとコミットを推奨。➕ An alternative, point and commit with hands is recommended.

直接操作は HoloLens 2 の主要な入力モデルであり、新しい多関節ハンド トラッキング システムを利用しています。Direct manipulation is a primary input model on HoloLens 2, and utilizes 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 manipluation is not available on HoloLens (1st gen).

接触可能な指先Collidable fingertip

HoloLens 2 では、ユーザーの実際の手が左右の骨格モデルとして認識および解釈されます。On HoloLens 2, the user's real 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, 5 colliders could be attached to 5 fingertips of each hand skeletal model. しかし、実際には、触覚的フィードバックがないため、10 本の接触可能な指先とホログラムとの間で、期待に反する予測不可能な衝突が発生してしまいました。However, practically, due to the lack of tactile feedback, 10 collidable fingertips caused unexpected and unpredictable collisions with holograms.

そこで、両方の人差し指だけにコライダーを付けることをお勧めします。Hence, we suggest to only put 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 1-finger press, 1-finger tap, 2-finger press and 5-finger press, as shown in the image below.

接触可能な指先の画像

スフィア コライダーSphere collider

ランダムな汎用シェイプを使用する代わりにスフィア コライダーを使用し、これを視覚的にレンダリングすることで、近接ターゲット設定のためにより優れた手掛かりを与えるようにお勧めします。Instead of using a random generic shape, we suggest to use a sphere collider and to 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 will be easy 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 solution, fingertip cursor, to achieve better near-targeting experience interactively. これは、人差し指に付随するドーナツ型のカーソルです。It is a donut-shaped cursor attached on 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.

ユーザーはこの対話型のフィードバックによって、Web コンテンツのハイパーリンクのトリガーやボタンの押下など、高い精度で近接ターゲット設定するタスクを実行できます。With the interactive feedback, users can achieve high precision near targeting tasks, such as triggering a hyperlink on web content or pressing a button, as shown, below.

指先カーソルの画像

近接シェーダーを備えた境界ボックス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 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 proximity shader. 近接シェーダーは次のように動作します。The proximity shader behaves:

  • 人差し指が一定範囲内にある場合、指先スポットライトが境界ボックスの表面に投影されます。When the index finger is within a range, a fingertip spotlight is cast on the surface of bounding box.
  • 指先が表面に近づくと、距離に応じてスポットライトが集光します。When the fingertip gets closer to the surface, the spotlight condenses accordingly.
  • 指先が表面に触れると直ちに、境界ボックス全体の色が変わったり、視覚的効果が生じたりして、タッチ状態が反映されます。As soon as the fingertip touch the surface, the whole bounding box changes the color or generate visual effect to reflect the touch state.
  • 指先が表面に触れている間、効果音が鳴るようにしてタッチの視覚的フィードバックを増強できます。Meanwhile, a sound effect can be activated to enhance the visual touch feedback.

近接シェーダーを備えた境界ボックスの画像

押しボタンPressable button

ユーザーは接触可能な指先で、ごく基本的なホログラフィック UI コンポーネントである押しボタンと対話することができます。With a collidable fingertip, users are now ready to interact with the very fundamental holographic UI component, pressable button. 押しボタンは、直接指で押せるように調整されたホログラフィック ボタンです。A pressable button is a holographic button tailored for 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 proximity shader, detailed in the previous section. ボタンに近づいて接触したことをユーザーが感知できるよう、接近の感覚を向上させるうえで役に立ちます。It serves to provide better sense of proximity for users to approach and make contact with a button.
  • 2 つ目のメカニズムは、押し下げの感覚です。The second one is depression. 指先でボタンに触れた後に、押した感覚を与えます。It creates sense of press, after a fingertip contacts the button. 指先と一緒に、深さ軸に沿って、重みを伴ってボタンが動くメカニズムです。The mechanism is 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.

押しボタンの画像

2D スレートとの対話2D slate interaction

2D スレートは、Web ブラウザーなどの 2D アプリ コンテンツをホストするホログラフィック コンテナーです。A 2D slate is a holographic container hosting 2D app contents, such as 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:

  • 人差し指を使ってハイパーリンクまたはボタンを押します。Use an index finger to press a hyperlink or a button.
  • 人差し指を使ってスレート コンテンツを上下にスクロールします。Use an index finger to scroll a slate content up and down.
  • ユーザーは 2 本の人差し指を使って、指の相対的な動きに応じてスレートのコンテンツを拡大縮小します。Users use two index fingers to zoom in and out the slate content according to relative motion of fingers.

2D スレートの画像

2D スレート本体の操作方法は、次のとおりです。For manipulating the 2D slate itself:

  • 隅や端に手に近づけて、一番近くにある操作アフォーダンスを表示します。Approach your hands toward corners and edges to reveal the closest manipulation affordances.
  • 操作アフォーダンスをつかみ、均等に拡大縮小する場合は隅のアフォーダンスを、リフローを行う場合は端のアフォーダンスをつかみます。Grab the manipulation affordances, and perform uniform scaling through the corner affordances and reflow via the edge affordances.
  • 2D スレートの上部にあるホロバーをつかむことで、スレート全体を動かすことができます。Grab the holobar at the top of the 2D slate, which lets you move the whole slate.

スレート操作の画像

3D オブジェクトの操作3D object manipulation

HoloLens 2 では、各 3D オブジェクトに境界ボックスを適用することで、ユーザーが 3D ホログラフィック オブジェクトを手で直接操作することができます。HoloLens 2 lets lets users enable their hands to direct manipulate 3D hologramphic 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 オブジェクトを操作できます。This lets you manipulate the 3D object through a bounding box and the manipulation affordances around it. ユーザーの手が 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, the edge affordances to rotate and the corner affordances to scale uniformly.

3D オブジェクト操作の画像

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

このメカニズムでは、境界ボックスにアフォーダンスが付属しません。In this mechanism, no affordance is attached 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 you use affordance-based manipulation, because it provides a high level of granularity. 融通が利く操作の場合は、アフォーダンスをベースとしない操作をお勧めします。即興性のある、遊び心を加えたエクスペリエンスが許されるからです。For flexible manipulation, we recommend you uses non-affordance manipulation is as it allows for instant and playful experiences.

本能的なジェスチャInstinctual gestures

HoloLens (第 1 世代) では、ブルームやエアタップなど、いくつかの定義済みジェスチャをユーザーが学ぶ必要がありました。With HoloLens (1st gen), we taught users a couple 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, users need to interact with holograms and contents, are instinctual. 本能的なジェスチャを実現するには、ユーザーがジェスチャを実行するよう、UI アフォーダンスのデザインを通して手引きするという方法を使用します。The way to achieve instinctual gesture is to guide users to perform gestures through the design of UI affordances.

たとえば、2 本の指でピンチしてオブジェクトまたは制御点をつかむよう促す場合、オブジェクトまたは制御点は小さいはずです。For example, if we encourage you to grab an object or a control point with two finger pinch, the object or the control point should be small. 5 本の指でつかむよう促す場合、オブジェクトまたは制御点は比較的大きいはずです。If we want you to perform five finger grab, the object or the control point should be relatively big. ボタンも同様です。小さいボタンならユーザーは 1 本の指でしか押せませんが、大きなボタンならユーザーは手のひらで押すよう促されます。Similar to buttons, a tiny button would limit users to press it with a single finger, while a huge button would encourage users to press it with their palms.

手と 6 DoF コントローラーの間の対称設計Symmetric design between hands and 6 DoF controllers

AR の手と VR のモーション コントローラーとの間には、対話の類似点があることにお気付きかもしれません。You may have noticed that there are now 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 in the same way as the grab button does on the motion controllers in WMR. こうしてユーザーは、2 つのプラットフォームの間の操作に習熟することができます。この知識は、アプリを一方から他方に移植する場合に役立つかもしれません。This provides users with interaction familiarity between the two platforms and may prove useful should you ever decide to port your app from one to the other.

視線追跡の使用による最適化Optimize with eye tracking

直接操作が思い通りに機能する場合は魅力的に感じられるかもしれませんが、手をどこに動かしても意図に反してホログラムがトリガーされるばかりになると、即座にフラストレーションの元となります。Direct manipulation can feel magical if it works as intended, but can also quickly become frustrating if you can’t move your hand anywhere anymore without unintentionally triggering a hologram. 視線追跡は、ユーザーの意図をより的確に識別するうえで役立つ場合があります。Eye tracking can potentially help in better identifying what the user’s intent is.

  • いつ:誤って操作応答がトリガーされることが少なくなります。When: Reduce falsely 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 (maybe it even was outside of 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 a certain limitation on how accurately it can determine you 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 may sometimes works just fine, quickly performing hand gestures may result in highly inaccurate destinations. 視線追跡はこのような状況で役立つ場合があり、手で放り投げるベクトルを目的の位置へ修正することができます。This is where eye tracking could help out to lean the hand throwing vector back to your intended position.

関連項目See also