MRTK での目でサポートされるナビゲーション

MRTK

Imagineスレートに関する情報を読み取り、表示されるテキストの末尾に到達すると、テキストが自動的に上にスクロールして、より多くのコンテンツが表示されます。 または、見ている場所を流流的に拡大することができます。 また、関心のあるものを視野内に保持するために、マップによってコンテンツが自動的に調整されます。 もう 1 つの興味深いアプリケーションは、見ているホログラムの部分を前面に自動的に取り込む 3D ホログラムのハンズフリー観察です。 これらは、目でサポートされるナビゲーションのコンテキストでこのページで説明されている例の一部です。

次の説明では、MRTK シーンで目の追跡を設定する方法と、MRTK Unity で目の追跡データにアクセスする基本について既に理解しているユーザーを想定しています。 以下で説明する例はすべて EyeTrackingDemo-03-Navigation 、(Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation) シーンの一部です。

概要: テキストの自動スクロール、目の視線入力がサポートされている仮想マップのパンとズーム、ハンズフリーの視線入力方向の 3D 回転。

自動スクロール

自動スクロールを使用すると、ユーザーは指を持ち上げずにテキストをスクロールできます。 読み続けるだけで、ユーザーが探している場所に応じて、テキストが自動的に上下にスクロールします。 最初に EyeTrackingDemo-03-Navigation 、(Assets/MRTK/Examples/Demos/EyeTracking/Scenes) で提供されている例から開始できます。 この例では 、TextMesh コンポーネントを使用 して、新しいテキストを柔軟に読み込み、書式設定できます。 自動スクロールを有効にするには、テキスト ボックスのコライダー コンポーネントに次の 2 つのスクリプトを追加します。

ScrollRectTransf

TextMeshまたはより一般的に言えばRectTransformコンポーネントをスクロールするには、ScrollRectTransf スクリプトを使用できます。 RectTransformではなくテクスチャをスクロールする場合は、ScrollRectTransfの代わりにScrollTextureを使用します。 以下では、Unity エディター で使用できる ScrollRectTransf のパラメーターについて詳しく説明します。

パラメーター 説明
LimitPanning 有効にすると、 はスクロール可能なコンテンツをその境界で停止します。
RectTransfToNavigate スクロールする RectTransform への参照。
RefToViewport スクロール可能なコンテンツ の親 RectTransform を参照して、正しいオフセットと境界を決定します。
AutoGazeScrollIsActive 有効にすると、ユーザーがアクティブな領域を見た場合 (垂直 スクロール速度が 0 ではない場合は、スクロール パネルの上部と下部など)、テキストが自動的にスクロールされます。
ScrollSpeed_x 0 に等しくない値に設定すると、水平スクロールが有効になります。 負の値は、スクロール方向の変化を意味します。左から右へ、右から左へ。
ScrollSpeed_y 0 に等しくない値に設定すると、垂直スクロールが有効になります。 負の値は、スクロール方向の変化を意味します:上から下へ、
MinDistFromCenterForAutoScroll ターゲットのヒット ボックスの中心 (0, 0) からスクロールまでの x と y の最小距離を正規化しました。 したがって、値の範囲は 0 (常にスクロール) から 0.5 (スクロールなし) である必要があります。
UseSkimProofing 有効にすると、すばやく見回す際のスクロールの突然の移動が防止されます。 これにより、スクロールの応答性が低い場合があります。 SkimProofUpdateSpeed 値を使用してチューニング できます。
SkimProofUpdateSpeed 値が小さいと、スキーミング後のスクロール速度が遅くなります。 推奨値: 5。

Unity での目でサポートされるスクロールのセットアップ

EyeTrackingTarget

EyeTrackingTarget コンポーネントをアタッチすると、目の視線入力関連のイベントを柔軟に処理できます。 スクロール のサンプルでは、ユーザーがパネルを見てから始まり、ユーザーが見ているときに停止するテキスト のスクロールを 示します。 Unity での目でサポートされるスクロールのセットアップ: EyeTrackingTarget

視線入力がサポートされるパンとズーム

Whoを検索したり、完全に新しい場所を探索したりするために、以前に仮想マップを使用したことがない場合は、 目の追跡を使用すると、関心のある部分を正確に直接確認し、ズームインしたら、通りのコースをスムーズに進み、近隣を探索できます。 これは、地理的マップを探索する場合だけでなく、写真、データの視覚化、またはライブ ストリームの医療画像の詳細を確認する場合にも役立ちます。 アプリでこの機能を使用するのは簡単です。 テクスチャにレンダリングされるコンテンツ (写真 、ストリーミング データなど) の場合は 、PanZoomTexture スクリプトを追加します。 RectTransform の場合は、PanZoomRectTransf を使用します。 自動スクロール 機能を 拡張すると、基本的に、垂直方向と水平方向の両方を同時にスクロールし、ユーザーの現在のフォーカス ポイントの周囲にコンテンツを拡大することができます。

パラメーター 説明
LimitPanning 有効にすると、 はスクロール可能なコンテンツをその境界で停止します。
HandZoomEnabledOnStartup ズーム ジェスチャを実行するために手のジェスチャを自動的に有効にするかどうかを示します。 ズーム アクションが誤ってトリガーされないように、最初は無効にできます。
RendererOfTextureToBeNavigated 移動するテクスチャの参照されたレンダラー。
Zoom_Acceleration ロジスティック速度関数マッピングの急勾配を定義するズーム アクセラレーション。
Zoom_SpeedMax 最大ズーム速度。
Zoom_MinScale ズームインのテクスチャの最小スケール ( 0.5f (元のサイズの半分) など)。
Zoom_MaxScale 縮小のテクスチャの最大スケール ( 1f (元のサイズ) や 2.0f (元のサイズの 2 倍) など)。
Zoom_TimeInSecToZoom 時間指定ズーム: トリガーされると、指定された時間 (秒) のズームイン/アウトが実行されます。
Zoom_Gesture 拡大/縮小に使用する手のジェスチャの種類。
--- ---
Pan_AutoScrollIsActive 有効にすると、ユーザーがアクティブな領域を見た場合 (垂直 スクロール速度が 0 ではない場合は、スクロール パネルの上部と下部など)、テキストが自動的にスクロールされます。
Pan_Speed_x 0 に等しくない値に設定すると、水平スクロールが有効になります。 負の値は、スクロール方向の変化を意味します。左から右へ、右から左へ。
Pan_Speed_y 0 に等しくない値に設定すると、垂直スクロールが有効になります。 負の値は、スクロール方向の変化を意味します:上から下へ、
Pan_MinDistFromCenter ターゲットのヒット ボックスの中心 (0, 0) からスクロールまでの x と y の最小距離を正規化しました。 したがって、値の範囲は 0 (常にスクロール) から 0.5 (スクロールなし) である必要があります。
UseSkimProofing 有効にすると、すばやく見回す際のスクロールの突然の移動が防止されます。 これにより、スクロールの応答性が低い場合があります。 SkimProofUpdateSpeed 値を使用してチューニング できます。
SkimProofUpdateSpeed 値が小さいと、スキーミング後のスクロール速度が遅くなります。 推奨値: 5。

Unity での目でサポートされるパンとズームの設定

アテンション ベースの 3D 回転

Imagine 3D オブジェクトを見て、見たいパーツは、システムが気を読み、項目を自分の方に向け出すのを知っている場合と同様に、より密接に魔法のように向きます。 これは、指を持ち上げずにホログラムのすべての側面を調査できる、注意ベースの 3D 回転のアイデアです。 この動作を有効にするには、コライダー コンポーネントを使用して GameObject の一部に OnLookAtRotateByEyeGaze スクリプトを 追加 します。 以下に示すいくつかのパラメーターを調整して、ホログラムの回転速度と方向を制限できます。

ご想像のように、この動作を何度もアクティブにすると、混雑したシーンですぐに気が散る可能性があります。 この動作を無効にしてから、音声コマンドを使用してすばやく有効にしたい場合は、これが理由です。 または EyeTrackingDemo-03-Navigation 、TargetMoveToCamera を使用する例 (Assets/MRTK/Examples/Examples/Demos/EyeTracking/Scenes) を追加しました。TargetMoveToCamera を使用すると、フォーカスされたターゲットを選択して目の前に移動します。単純に " 私に来て" と言います。

近いモードになると、自動回転モードが自動的に有効になります。 そのモードでは、すべての側面から、傾いて見て回る、歩き回る、手でつかんで回転させるなど、すべての側面から観察できます。 ターゲットを閉じ (ピンチを&または "Send back" と表示) すると、元の場所に戻り、離れた場所からユーザーへの反応が停止します。

パラメーター 説明
SpeedX 水平方向の回転速度。
スピーディ 垂直方向の回転速度。
InverseX 水平方向の回転方向を逆に設定する場合。
垂直方向の回転方向を逆にするには。
RotationThreshInDegrees 'ターゲットへの視線入力' と 'Camera to Target' の間の角度が、この値より小さい場合は、何も行いません。 これは、小さなジッター回転を防ぐためです。
MinRotX 水平回転角度の最小値。 これは、回転を異なる方向に制限するために使用されます。
MaxRotX 水平方向の最大回転角度。 これは、回転を異なる方向に制限するために使用されます。
MinRotY x 軸の周りの回転を制限する垂直方向の回転角度を最小限に抑える。
MaxRotY y 軸の周りの回転を制限する最大垂直回転角度。

Unity での目でサポートされる 3D 回転のセットアップ

要約すると、上記のスクリプトを使用すると、テキストのスクロール、テクスチャのズームとパン、3D ホログラムの調査の回転など、さまざまな入力ナビゲーション タスクに目の視線入力を使用し始める必要があります。

こちらもご覧ください


"MixedRealityToolkit の目の追跡" に戻る