ハンド コーチ

例: ハンド コーチ

ハンド コーチは、システムがユーザーの手を検出しないときに、3D モデル化されたハンドをトリガーします。 この機能は、ジェスチャをまだ学習していないときにユーザーをガイドするために役立つ "ティーチング" コンポーネントです。 ユーザーが指定されたジェスチャを一定の時間内に行わなかった場合、このハンドは遅れてループします。 ハンド コーチを使用して、ボタンを押したりホログラムを持ち上げる動作を表現することができます。

提供されているハンド コーチ

現在のインタラクション モデルは、スクロール、遠くを選択、近くをタップなど、さまざまなジェスチャ コントロールを表現します。 MRTK で提供されている既存のハンド ジェスチャの完全な一覧を次に示します。

Near Select の例
近くを選択の例 - ボタンまたは近くの対話可能なオブジェクトを選択する方法を示すために使用します

エアタップの例
エアタップの例 - 遠く離れたオブジェクトを選択する方法を示すために使用します

移動の例
空間内でオブジェクトを移動する例 - 空間内でホログラムを移動する方法を示すために使用します

回転の例
回転の例 - ホログラムまたはオブジェクトを回転する方法を示すために使用します

スケールの例
スケールの例 - ホログラムを大きくまたは小さくする方法を示すために使用します

パームアップの例
パームアップの例 – ハンド メニューを表示するためのお勧めの使い方

HandFlip の例
ハンド フリップの例 – ハンド メニューを表示する別の方法

スクロールの例
スクロールの例 – リストまたは長いドキュメントのスクロールに使用します

設計概念

Hololens2 では、生来の自然な手のジェスチャを基に、手を使った操作を設計しました。 それらは大部分のユーザーにとって直感的であると考えられるため、ジェスチャ専用の学習時間は設けませんでした。 その代わりに、ホログラムの操作で困った場合や操作に不慣れな場合に、ユーザーがこうしたジェスチャを習得することを手助けするハンド コーチを作成しました。 学習時間を取らない場合、操作の実行方法をユーザーに見せることが最適なオプションであると考えました。 ユーザーはジェスチャを理解できたものの、多少のガイダンスが必要なことがわかりました。 ユーザーが一定時間オブジェクトを操作していないことが検出されると、ハンド コーチがトリガーされ、正しい手や指の位置を示します。

直感的

手をアニメーション化する場合、それはわかりやすく混乱を招かないものである必要があります。 手のアニメーションは、ユーザーの理解を助けるジェスチャの表現です。

たとえば、ユーザーにボタンを押してもらいたい場合は、ボタンを押す手がトリガーされます。

例: ハンド コーチ ニア タップ
宝石への軽いタップを示すハンド コーチ

ハンド スケール

UI メニューでさまざまな手のサイズをテストしたところ、本物の手の大きさにすると、威嚇されるように感じられることがわかりました。 小さすぎると、ジェスチャを確認して理解するのが困難でした。

ボイス オーバーとハンド

ユーザーがボイス オーバーで 1 つの指示セットを聞き取り、同時に別の指示をハンド コーチで見ることができるとは想定しないでください。 感覚的な負荷がかかりすぎないように、指示は、ユーザーが集中しやすく困難を感じないような順序にします。

自作は可能ですか?

はい。 ゲームに使用する独自のジェスチャを作成し、ぜひ、コミュニティに投稿してください。 ご自身のアプリに使用できるリギングされた手の Maya ファイルを用意しました。こちらからダウンロードできます: HandCoach_MRTK.zip のダウンロード

Maya のアニメーションハンドの例
Maya のボックスをつつくアニメーション化された手の例

推奨される作成ツール

多くの 3D アーティストから選ばれているのは、HoloLens の使用に対応した Autodesk の Maya で、これはアセットの画期的な作成方法となっています。 提供されている手のファイルは Maya のバイナリ ファイルであるため、手をアニメーション化してエクスポートするには Maya を使用することをお勧めします。 独自のコントローラー セットアップを作成するために別の 3D プログラムの使用を希望する場合は、.FBX があります。 HandCoachMRTK_FBX.zip のダウンロード

提供されているダウンロード可能な Maya のハンド ファイルを使用する場合は、Unity でハンドを 0.6 にスケールダウンすることをお勧めします。

例: Maya のハンド コーチ リグ
リギングされた手

技術仕様

  • 両手用ファイルは Maya ASCII 形式で使用できます
  • 右手と左手は Maya バイナリ形式で使用できます
  • Maya ファイルを 24 FPS に設定します
  • このファイル内には左手と右手があり、両手または片手のジェスチャに使用できます。 既定では右手のみが表示されます。
  • フェードのために最初と最後に約 10 フレームのバッファーを残しておくことをお勧めします
  • 指定したターゲットを使用してオブジェクトをアニメーション化する場合は、既定のボックスまたは Null にアニメーション化することをお勧めします。
  • ハンドでボックスなどの物理的なオブジェクトをアニメーション化する場合、そのベスト プラクティスとして、Maya 内の平行移動はアニメーション化せず、Unity または Code でアニメーション化することをお勧めします。
  • 意味のある情報を伝達するには、表示されるアニメーションは 1.5 秒必要です
  • アニメーションに問題がなければ、次のようにします。

Maya からのエクスポート

アニメーションに問題がなければ、次のようにします

  • すべてのジョイントを選択する: [選択] > [階層]

    例: メニューの階層

  • アニメーションをベイクする: [アニメーション] > [キー] > [Bake Animation]に切り替える

    例: ベイク アニメーション メニューの場所

  • コントローラーのリグを削除する: [アウトラインの作成] > [MainR_Grp or MainL_Grp]

    例: コントローラー リグ メニューの場所

  • FBX としてエクスポートする: JNT とメッシュを選択: [ファイル] > [エクスポートの選択] (オプション ボックス) > [エクスポートの選択]

    例: 選択メニューの場所をエクスポートする

    例: メニューの場所

    例: [エクスポート オプション] メニューの場所

FBX としてエクスポートし、Unity に取り込む場合は、ハンドを 0.6 にスケールダウンします。 それが手を表示するのに最適なバランスであることがわかりました。

例: Unity の設定
MRTK で表示される HandCoach_R prefab の Unity 設定

Unity プロジェクトにハンドを実装する

ベスト プラクティス

  • Unity でハンドを 0.6 にスケールダウンすることをお勧めします

  • ハンドは 2 回再生し、ジェスチャが完了しない場合は完了するまで連続してループする必要があります。 ユーザーがジェスチャの登録と確認を行う時間を確保するために、ハンドは 2 回ループする必要があります。 ハンドはループ間でフェードイン、フェードアウトする必要があります。

  • ユーザーの手が HL2 カメラで見えていても、ユーザーが必要な操作を行っていない場合、手が表示されるのは 10 秒後です。

  • ユーザーの手が HL2 カメラで見えていない場合は、5 秒後に手が表示されます。

  • アニメーションの途中でユーザーの手が HL2 カメラによって視覚的にトラッキングされている場合は、アニメーションが完了してフェードアウトします。

  • ボイス オーバーを含める場合は、ハンドのジェスチャに対応したものにすることをお勧めします。

  • 少なくとも 1 回ハンドに学習させた場合は、ユーザーの操作が止まっていることが検出された場合にのみジェスチャを繰り返します。

  • 指または手の特定の位置が重要である場合は、アニメーションでそれらの微妙な部分をユーザーがはっきりと確認できるようにします。 最も重要な部分がクリアに表示されるように、手の角度を試してみてください。

  • 手にひずみがある場合は、Unity の品質設定にアクセスして、骨の数を増やす必要があります。 Unity の [編集] > [プロジェクト設定] > [品質] > [その他] > [Blend Weights](ブレンドの重み) にアクセスします。 スムーズなジョイントが表示されるように「4 bones」が選択されていることを確認します。

    例: [プロジェクト設定] ウィンドウ

避けるべきこと

  • ハンドのサイズを大きくしすぎる
  • 手をユーザーに近づけすぎている
  • ハンドは 1 回だけ学習させる必要があります。 過度に学習させると、混乱と乱雑さを招く可能性があります
  • Unity に取り込むには、こちらから最新の MRTK をダウンロードしてください: https://github.com/microsoft/MixedRealityToolkit-Unity

関連項目