手で直接操作Direct manipulation with hands

直接操作は、ホログラムに手で直接触れる入力モデルです。Direct manipulation is an input model that involves touching holograms directly with your hands. 直接操作の背景にある考え方は、オブジェクトを現実の世界と同じように動かすことです。The idea behind direct manipulation 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 is easy for users to learn, and fun. 直接操作は、「近接」入力モデルと考えられており、手の届く範囲にあるコンテンツとの対話に最適です。Direct manipulation is 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 ➕ 別の選択肢である手を使ったポイントとコミットを推奨。➕ 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 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 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 you use a sphere collider. 次に、これを視覚的にレンダリングすることで、近接ターゲット設定のためにより優れた手掛かりを与えます。Then 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 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.

指先カーソルの画像

近接シェーダーを備えた境界ボックス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:

  • 人差し指が一定範囲内にある場合、指先スポットライトが境界ボックスの表面に投影されます。When the index finger is within a range, a fingertip spotlight is cast on the surface of the bounding box.
  • 指先が表面に近づくと、距離に応じてスポットライトが縮小します。When the fingertip gets closer to the surface, the spotlight shrinks accordingly.
  • 指先が表面に触れると直ちに、境界ボックス全体の色が変わったり、視覚的効果が生じたりして、タッチ状態が反映されます。As soon as the fingertip touches the surface, the entire bounding box changes color or generates visual effects to reflect the touch state.
  • また、効果音が鳴るようにしてタッチの視覚的フィードバックを増強できます。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 the fundamental holographic UI component, sucha 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 isdetailed in the previous section. これにより、ユーザーがボタンに近づいて接触するとき、接近の感覚が向上します。It give users a better sense of proximity when as 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 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 本の人差し指を使用して、指の相対的な動きに応じてスレートのコンテンツを拡大縮小します。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 スレートの画像

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 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. ユーザーの手が 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

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

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

AR の手と VR のモーション コントローラーとの間には、対話の類似点があることにお気付きかもしれません。You may have noticed that there are interaction parallels that 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, and might prove useful should 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 can also quickly become frustrating if you can’t move your hand anywhere without unintentionally triggering a hologram. 視線追跡は、ユーザーの意図をより的確に識別するうえで役立つ場合があります。Eye tracking can potentially help in better identifying 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 (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 sometimes works, quickly performing hand gestures may result in highly inaccurate destinations. このシナリオでは、視線追跡を含めることでジェスチャの精度を向上させることができます。In this scenario including eye tracking could improve the accuracy of the gesture.

関連項目See also