6.高度な入力オプションの探索6. Exploring advanced input options

このチュートリアルでは、音声コマンド、パン ジェスチャ、視線追跡などを含む、HoloLens 2 でのいくつかの高度な入力オプションについて学習します。In this tutorial, you will explore a few advanced input options for HoloLens 2, including the use of voice commands, panning gesture, and eye tracking.

目標Objectives

  • 音声コマンドとキーワードを使用してイベントをトリガーするTrigger events using voice commands and keywords
  • 追跡対象の手を使用してテクスチャと 3D オブジェクトをパンするUse tracked hands to pan textures and 3D objects with tracked hands
  • HoloLens 2 の視線追跡機能を活用してオブジェクトを選択するLeverage HoloLens 2 eye tracking capabilities to select objects

音声コマンドの有効化Enabling Voice Commands

このセクションでは、音声コマンドを実装して、ユーザーが Octa オブジェクトでサウンドを再生できるようにします。In this section, you will implement a speech command to let the user play a sound on the Octa object. このためには、新しい音声コマンドを作成し、音声コマンドのキーワードが発話されたときに目的のアクションをトリガーするようにイベントを構成します。For this, you will create a new speech command and then configure the event so it triggers the desired action when the speech command keyword is spoken.

これを実現するための主な手順は次のとおりです。The main steps you will take to achieve this are:

  1. 既定の入力システム プロファイルを複製するClone the default Input System Profile
  2. 既定の音声コマンド プロファイルを複製するClone the default Speech Commands Profile
  3. 新しい音声コマンドを作成するCreate a new speech command
  4. Speech Input Handler (Script) コンポーネントを追加して構成するAdd and configure the Speech Input Handler (Script) component
  5. 音声コマンドの Response イベントを実装するImplement the Response event for the speech command

1.既定の入力システム プロファイルを複製する1. Clone the default Input System Profile

[Hierarchy](階層) ウィンドウで [MixedRealityToolkit] オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで [Input](入力) タブを選択し、 [DefaultHoloLens2InputSystemProfile] を複製して、カスタマイズ可能な独自の入力システム プロファイルに置き換えます。In the Hierarchy window, select the MixedRealityToolkit object, then in the Inspector window, select the Input tab and clone the DefaultHoloLens2InputSystemProfile to replace it with your own customizable Input System Profile:

mrlearning-base

ヒント

MRTK プロファイルを複製する方法については、Mixed Reality Toolkit プロファイルを構成する方法に関する説明を参照してください。For a reminder on how to clone MRTK profiles, you can refer to the How to configure the Mixed Reality Toolkit Profiles instructions.

2.既定の音声コマンド プロファイルを複製する2. Clone the default Speech Commands Profile

[Speech](音声) セクションを展開し、 [DefaultMixedRealitySpeechCommandsProfile] を複製して、カスタマイズ可能な独自の音声コマンド プロファイルに置き換えます。Expand the Speech section and clone the DefaultMixedRealitySpeechCommandsProfile to replace it with your own customizable Speech Commands Profile:

mrlearning-base

3.新しい音声コマンドを作成する3. Create a new speech command

[Speech Commands](音声コマンド) セクションで、 [+Add a New Speech Command](新しい音声コマンドの追加) ボタンをクリックして、既存の音声コマンドの一覧の一番下に新しい音声コマンドを追加します。次に、 [Keyword](キーワード) フィールドに適切な単語または語句 (たとえば、Play Music) を入力します。In the Speech Commands section, click the + Add a New Speech Command button to add a new speech command to the bottom of the list of existing speech commands, then in the Keyword field enter a suitable word or phrase, for example Play Music:

mrlearning-base

ヒント

コンピューターにマイクがない場合に、エディター内のシミュレーションを使用して音声コマンドをテストするには、キーコードを音声コマンドに割り当て、対応するキーが押されたときにそれをトリガーすることができます。If your computer doesn't have a microphone and you would like to test the speech command using the in-editor simulation, you can assign a KeyCode to the speech command which will let you trigger it when the corresponding key is pressed.

4.Speech Input Handler (Script) コンポーネントを追加して構成する4. Add and configure the Speech Input Handler (Script) component

[Hierarchy](階層) ウィンドウで、 [Octa] オブジェクトを選択し、Speech Input Handler (Script) コンポーネントを Octa オブジェクトに追加します。In the Hierarchy window, select the Octa object and add the Speech Input Handler (Script) component to the Octa object. 次に、 [Is Focus Required](フォーカスが必要) チェックボックスをオフにして、ユーザーが Octa オブジェクトを確認しなくても音声コマンドをトリガーできるようにします。Then uncheck the Is Focus Required checkbox so the user is not required to look at the Octa object to trigger the speech command:

mrlearning-base

5.音声コマンドの Response イベントを実装する5. Implement the Response event for the speech command

Speech Input Handler (Script) コンポーネントで、小さい + ボタンをクリックして、キーワードの一覧にキーワード要素を追加します。On the Speech Input Handler (Script) component, click the small + button to add a keyword element to the list of keywords:

mrlearning-base

新しく作成した [Element 0](要素 0) をクリックして展開し、 [Keyword](キーワード) ドロップダウンから、前に作成した [Play Music] キーワードを選択します。Click the newly created Element 0 to expand it, and then, from the Keyword dropdown, choose the Play Music keyword you created earlier:

mrlearning-base

注意

[Keyword](キーワード) ドロップダウンのキーワードは、音声コマンド プロファイルにある音声コマンド リストで定義されているキーワードに基づいて設定されます。The keywords in the Keyword dropdown are populated based on the keywords defined in the Speech Commands list in the Speech Commands Profile.

新しい Response () イベントを作成し、イベントを受信するように Octa オブジェクトを構成し、トリガーするアクションとして AudioSource.PlayOneShot を定義します。次に、適切なオーディオ クリップ (MRTK_Gem オーディオ クリップなど) を [Audio Clip](オーディオ クリップ) フィールドに割り当てます。Create a new Response () event, configure the Octa object to receive the event, define AudioSource.PlayOneShot as the action to be triggered, and assign a suitable audio clip to the Audio Clip field, for example, the MRTK_Gem audio clip:

mrlearning-base

ヒント

イベントを実装してオーディオ クリップを割り当てる方法については、「On Touch Started イベントを実装する」の説明を参照してください。For a reminder on how to implement events and assign an audio clip, you can refer to the Implement the On Touch Started event instructions.

パン ジェスチャThe Pan Gesture

パン ジェスチャは、指または手を使ってコンテンツをスクロールするのに役立ちます。The pan gesture is useful for scrolling by using your finger or hand to scroll through content. この例では、まず 2D UI をスクロールし、次にそれを展開して 3D オブジェクトのコレクションをスクロールできるようにする方法について説明します。In this example, you will first learn how to scroll a 2D UI and then expand on that to be able to scroll through a collection of 3D objects.

これを実現するための主な手順は次のとおりです。The main steps you will take to achieve this are:

  1. パンに使用できる Quad オブジェクトを作成するCreate a Quad object that can be used for panning
  2. Near Interaction Touchable (Script) コンポーネントを追加するAdd the Near Interaction Touchable (Script) component
  3. Hand Interaction Pan Zoom (Script) コンポーネントを追加するAdd the Hand Interaction Pan Zoom (Script) component
  4. スクロールする 2D コンテンツを追加するAdd 2D content to be scrolled
  5. スクロールする 3D コンテンツを追加するAdd 3D content to be scrolled
  6. Move With Pan (Script) コンポーネントを追加するAdd the Move With Pan (Script) component

注意

Move With Pan (Script) コンポーネントは、MRTK の一部ではありません。The Move With Pan (Script) component is not part of MRTK. このチュートリアルのアセットと共に提供されました。It was provided with this tutorial's assets.

1.パンに使用できる Quad オブジェクトを作成する1. Create a Quad object that can be used for panning

[Hierarchy](階層) ウィンドウで、空の領域を右クリックし、 [3D Object](3D オブジェクト) > [Quad] を選択して、Quad をシーンに追加します。In the Hierarchy window, right-click at an empty area and select 3D Object > Quad to add a quad to your scene. PanGesture のような適切な名前を付け、適切な場所に配置します (たとえば、X = 0、Y = - 0.2、Z = 2 など)。Give it a suitable name, for example, PanGesture, and position it in a suitable location, for example, X = 0, Y = -0.2, Z = 2.

mrlearning-base

ヒント

Unity プリミティブ (3D quad など) をシーンに追加する方法については、「キューブをシーンに追加する」の説明を参照してください。For a reminder on how to add Unity primitives, such as a 3D quad, to your scene, you can refer to the Add a cube to the scene instructions.

他の操作と同様に、パン ジェスチャにもコライダーが必要です。As with any other interaction, the the pan gesture also requires a collider. 既定では、Quad にはメッシュ コライダーがあります。By default, a Quad has a mesh collider. ただし、メッシュ コライダーは極めて薄いため、理想的ではありません。However, the mesh collider is not ideal because it is extremely thin. ユーザーがコライダーを簡単に操作できるようにするために、メッシュ コライダーをボックス コライダーに置き換えます。To make it easier for the user to interact with the collider, we will replace the mesh collider with a box collider.

PanGesture オブジェクトを選択した状態で、Mesh Collider コンポーネントの [Settings](設定) アイコンをクリックし、 [Remove Component](コンポーネントの削除) を選択してメッシュ コライダーを削除します。With the PanGesture object still selected, click the Mesh Collider component's Settings icon and select Remove Component to remove the Mesh Collider:

mrlearning-base

[Inspector](インスペクター) ウィンドウで [Add Component](コンポーネントの追加) ボタンを使用してボックス コライダーを追加し、ボックス コライダーの [Size](サイズ) Z を 0.15 に変更してボックス コライダーの厚みを増やします。In the Inspector window, use the Add Component button to add a Box Collider, then change the Box Collider Size Z to 0.15 to increase the thickness of the box collider:

mrlearning-base

2.Near Interaction Touchable (Script) コンポーネントを追加する2. Add the Near Interaction Touchable (Script) component

[PanGesture] オブジェクトが選択された状態で、Near Interaction Touchable (Script) コンポーネントを PanGesture オブジェクトに追加します。次に、 [Fix Bounds](境界の修正) および [Fix Center](センターの修正) ボタンをクリックして、Near Interaction Touchable (Script) の [Local Center](ローカルのセンター) および [Bounds](境界) のプロパティを BoxCollider に一致するように更新します。With the PanGesture object still selected, add the Near Interaction Touchable (Script) component to the PanGesture object, and then click the Fix Bounds and Fix Center buttons to update the Local Center and Bounds properties of the Near Interaction Touchable (Script) to match the BoxCollider:

mrlearning-base

3.Hand Interaction Pan Zoom (Script) コンポーネントを追加する3. Add the Hand Interaction Pan Zoom (Script) component

PanGesture オブジェクトが選択された状態で、Hand Interaction Pan Zoom (Script) コンポーネントを PanGesture オブジェクトに追加し、次に [Lock Horizontal](水平方向のロック) チェックボックスをオンにして、垂直スクロールのみを許可します。With the PanGesture object still selected, add the Hand Interaction Pan Zoom (Script) component to the PanGesture object, and then check the Lock Horizontal checkbox to allow vertical scrolling only:

mrlearning-base

4.スクロールする 2D コンテンツを追加する4. Add 2D content to be scrolled

[Project](プロジェクト) パネルで PanContent 素材を検索し、それをクリックして PanGesture オブジェクトのメッシュ レンダラー [Materials](素材) の [Element 0](要素 0) プロパティにドラッグします。In the Project panel, search for the PanContent material and then click-and-drag it on to the PanGesture object's Mesh Renderer Material Element 0 property:

mrlearning-base

[Inspector](インスペクター) ウィンドウで、新しく追加した PanContent 素材コンポーネントを展開します。次に、 [Tiling](タイル表示) の Y 値を 0.5 に変更して X 値と一致させ、タイルを正方形で表示します。In the Inspector window, expand the newly added PanContent material component, and then change it's Tiling Y value to 0.5 so it matches the X value and the tiles appear square:

mrlearning-base

ここでゲーム モードに入ると、エディター内のシミュレーションでパン ジェスチャを使用して、2D コンテンツのスクロールをテストできます。If you now enter Game mode, you can test scrolling the 2D content using the pan gesture in the in-editor simulation:

mrlearning-base

5.スクロールする 3D コンテンツを追加する5. Add 3D content to be scrolled

[Hierarchy](階層) ウィンドウで、PanGesture オブジェクトの子オブジェクトとして 4 つのキューブを作成し、[Transform](変換) の [Scale](スケール) を X = 0.15、Y = 0.15、Z = 0.15 に設定します。In the Hierarchy window, create four cubes as a child objects of the PanGesture object and set their Transform Scale to X = 0.15, Y = 0.15, Z = 0.15:

mrlearning-base

キューブを均等に配置して時間を節約するには、Grid Object Collection (Script) コンポーネントをキューブの親オブジェクト (PanGesture オブジェクト) に追加し、次のようにグリッド オブジェクト コレクション (スクリプト) を構成します。To space the cubes out evenly, and save some time, add the Grid Object Collection (Script) component, to the cubes' parent object, i.e. the PanGesture object, and configure the Grid Object Collection (Script) as follows:

  • [Num Rows](行数) を 1 に変更して、すべてのキューブを 1 行に整列させるChange Num Rows to 1 to have all the cubes aligned on one single row
  • [Cell Width](セル幅) を 0.25 に変更して、行内でキューブを一定間隔で並べるChange Cell Width to 0.25 to space out the cubes within the row

次に、Update Collection」(コレクションの更新) ボタンをクリックして、新しい構成を適用します。Then click the Update Collection button to apply the new configuration:

mrlearning-base

6.Move With Pan (Script) コンポーネントを追加する6. Add the Move With Pan (Script) component

[Hierarchy](階層) ウィンドウで、すべてのキューブ子オブジェクトを選択してから、[Inspector](インスペクター) ウィンドウで、 [Add Component](コンポーネントの追加) ボタンを使用して、Move With Pan (Script) コンポーネントをすべてのキューブに追加します。In the Hierarchy window, select all the Cube child objects, then in the Inspector window, use the Add Component button to add the Move With Pan (Script) component to all the cubes:

mrlearning-base

ヒント

[Hierarchy](階層) ウィンドウで複数のオブジェクトを選択する方法については、すべてのオブジェクトに Manipulation Handler (Script) コンポーネントを追加する方法に関する説明 を参照してください。For a reminder on how to select multiple objects in the Hierarchy window, tou can refer to the Add the Manipulation Handler (Script) component to all the objects instructions.

すべてのキューブが選択された状態で、PanGesture オブジェクトをクリックし、 [Pan Input Source](パン入力ソース) フィールドにドラッグします。With all the cubes still selected, click-and-drag the PanGesture object to the Pan Input Source field:

mrlearning-base

ヒント

各キューブの Move With Pan (Script) コンポーネントでは、前の手順でパン入力ソースとして割り当てた PanGesture オブジェクトの HandInteractionPanZoom (Script) コンポーネントによって送信される Pan Updated イベントをリッスンし、それに従って各キューブの位置を更新します。The Move With Pan (Script) component on each cube listens for the Pan Updated event sent by the HandInteractionPanZoom (Script) component on the PanGesture object, which you assigned as the Pan Input Source in the step above, and updates each cube's position accordingly.

[Hierarchy](階層) ウィンドウで [PanGesture] オブジェクトを選択し、次にインスペクターで [Mesh Renderer](メッシュ レンダラー) チェックボックスをオフにして、Mesh Renderer コンポーネントを無効にします。In the Hierarchy window, select the PanGesture object, then in the inspector un-check the Mesh Renderer checkbox to disable the Mesh Renderer component:

mrlearning-base

ここでゲーム モードに入ると、エディター内のシミュレーションでパン ジェスチャを使用して、3D コンテンツのスクロールをテストできます。If you now enter Game mode, you can test scrolling the 3D content using the pan gesture in the in-editor simulation:

mrlearning-base

視線追跡Eye Tracking

このセクションでは、プロジェクトで視線追跡を有効にする方法を学習します。In this section, you will explore how to enable eye tracking in your project. この例では、ユーザーが視線を向けている間、3DObjectCollection の各オブジェクトをゆっくり回転させるとともに、視線を向けているオブジェクトがエアタップまたは音声コマンドによって選択されたときにブリップ効果をトリガーする機能を実装します。For this example, you will implement functionality to make each object in the 3DObjectCollection spin slowly while being looked at by the user's eye gaze, as well as, trigger a blip effect when the object being looked at is selected by air-tap or speech command.

これを実現するための主な手順は次のとおりです。The main steps you will take to achieve this are:

  1. Eye Tracking Target (Script) コンポーネントをすべてのターゲット オブジェクトに追加するAdd the Eye Tracking Target (Script) component to all target objects
  2. Eye Tracking Tutorial Demo (Script) コンポーネントをすべてのターゲット オブジェクトに追加するAdd the Eye Tracking Tutorial Demo (Script) component to all target objects
  3. While Looking At Target イベントを実装するImplement the While Looking At Target event
  4. On Selected イベントを実装するImplement the On Selected event
  5. エディター内のシミュレーションでシミュレートされた視線追跡を有効にするEnable simulated eye tracking for in-editor simulations
  6. Visual Studio プロジェクトのアプリ機能で視線入力を有効にするEnable Gaze Input in the Visual Studio project's app capabilities

1.Eye Tracking Target (Script) コンポーネントをすべてのターゲット オブジェクトに追加する1. Add the Eye Tracking Target (Script) component to all target objects

[Hierarchy](階層) ウィンドウで、 [3DObjectCollection] オブジェクトを展開し、すべての子オブジェクトを選択してから、[Inspector](インスペクター) ウィンドウで、 [Add Component](コンポーネントの追加) ボタンを使用して、Eye Tracking Target (Script) コンポーネントをすべての子オブジェクトに追加します。In the Hierarchy window, expand the 3DObjectCollection object and select all the child objects, then in the Inspector window, use the Add Component button to add the Eye Tracking Target (Script) component to all the child objects:

mrlearning-base

すべての子オブジェクトが選択された状態で、Eye Tracking Target (Script) コンポーネントを次のように構成します。With all the child objects still selected, configure the Eye Tracking Target (Script) component as follows:

  • [Select Action](アクションの選択)[Select](選択) に変更して、このオブジェクトのエアタップ アクションを [Select](選択) として定義しますChange Select Action to Select, to define the air-tap action for this object as Select
  • [Voice Select](音声の選択) を展開し、音声コマンドの一覧の [Size](サイズ) を 1 に設定し、表示される新しい要素の一覧で、 [Element 0](要素 0)[Select](選択) に変更して、このオブジェクトの音声コマンド アクションを [Select](選択) として定義しますExpand Voice Select and set the voice command list Size to 1, and then, in the new element list that appear, change Element 0 to Select, to define the speech command action for this object as Select

mrlearning-base

2.Eye Tracking Tutorial Demo (Script) コンポーネントをすべてのターゲット オブジェクトに追加する2. Add the Eye Tracking Tutorial Demo (Script) component to all target objects

すべての子オブジェクトが選択された状態で、 [Add Component](コンポーネントの追加) ボタンを使用して、Eye Tracking Tutorial Demo (Script) コンポーネントをすべての子オブジェクトに追加します。With all the child objects still selected, use the Add Component button to add the Eye Tracking Tutorial Demo (Script) component to all the child objects:

mrlearning-base

注意

Eye Tracking Target (Script) コンポーネントは、MRTK の一部ではありません。The Eye Tracking Target (Script) component is not part of MRTK. このチュートリアルのアセットと共に提供されました。It was provided with this tutorial's assets.

3.While Looking At Target イベントを実装する3. Implement the While Looking At Target event

[Hierarchy](階層) ウィンドウで [Cheese] オブジェクトを選択してから、新しい While Looking At Target () イベントを作成し、イベントを受信するように [Cheese] オブジェクトを構成し、トリガーされるアクションとして EyeTrackingTutorialDemo.RotateTarget を定義します。In the Hierarchy window, select the Cheese object, then create a new While Looking At Target () event, configure the Cheese object to receive the event, and define EyeTrackingTutorialDemo.RotateTarget as the action to be triggered:

mrlearning-base

3DObjectCollection 内のそれぞれの子オブジェクトに対して繰り返しますRepeat for each of the child objects in the 3DObjectCollection.

ヒント

イベントを実装する方法については、「手の追跡のジェスチャと操作可能なボタン」の説明を参照してください。For a reminder on how to implement events, you can refer to the Hand tracking gestures and interactable buttons instructions.

4.On Selected イベントを実装する4. Implement the On Selected event

[Hierarchy](階層) ウィンドウで [Cheese] オブジェクトを選択し、新しい On Selected () イベントを作成します。次に、イベントを受信するように [Cheese] オブジェクトを構成し、トリガーするアクションとして EyeTrackingTutorialDemo.BlipTarget を定義します。In the Hierarchy window, select the Cheese object, then create a new On Selected () event, configure the Cheese object to receive the event, and define EyeTrackingTutorialDemo.BlipTarget as the action to be triggered:

mrlearning-base

3DObjectCollection 内のそれぞれの子オブジェクトに対して繰り返しますRepeat for each of the child objects in the 3DObjectCollection.

5.エディター内のシミュレーションでシミュレートされた視線追跡を有効にする5. Enable simulated eye tracking for in-editor simulations

[Hierarchy](階層) ウィンドウで [MixedRealityToolkit] オブジェクトを選択し、次に [Inspector](インスペクター) ウィンドウで [Input](入力) タブを選択し、 [Input Data Providers](入力データ プロバイダー) セクションを展開して、 [Input Simulation Service](入力シミュレーション サービス) セクションを展開し、 DefaultMixedRealityInputSimulationProfile を複製して、カスタマイズ可能な独自の [Input Simulation Profile](入力シミュレーション プロファイル) に置き換えます。In the Hierarchy window, select the MixedRealityToolkit object, then in the Inspector window, select the Input tab, expand the Input Data Providers section and then the Input Simulation Service section, and clone the DefaultMixedRealityInputSimulationProfile to replace it with your own customizable Input Simulation Profile:

mrlearning-base

ヒント

MRTK プロファイルを複製する方法については、Mixed Reality Toolkit プロファイルを構成する方法に関する説明を参照してください。For a reminder on how to clone MRTK profiles, you can refer to the How to configure the Mixed Reality Toolkit Profiles instructions.

[Eye Simulation](目のシミュレーション) セクションで、 [Simulate Eye Position](目の位置のシミュレート) チェックボックスをオンにし て、視線追跡シミュレーションを有効にします。In the Eye Simulation section, check the Simulate Eye Position checkbox to enable eye tracking simulation:

mrlearning-base

ここでゲーム モードに入ると、カーソルがオブジェクトの 1 つに接触するようにビューを調整し、手の操作または音声コマンドを使用してオブジェクトを選択することによって、実装したスピンとブリップの効果をテストできます。If you now enter Game mode, you can test the spin and blip effects you implemented by adjusting the view so the cursor hits one of the objects and using hand interaction or speech command to select the object:

mrlearning-base

注意

Mixed Reality ツールキットを構成する」の手順に従って、DefaultHoloLens2ConfigurationProfile を使用して、カスタマイズ可能な MRTK 構成プロファイルを複製しなかった場合、視線追跡がプロジェクトで有効になっていない場合があり、有効にする必要があります。If you did not use the DefaultHoloLens2ConfigurationProfile to clone your customizable MRTK configuration profile, as instructed in the Configure the Mixed Reality Toolkit instructions, eye tracking may not be enable in your project and will need to be enabled. 詳細については、「MRTK での視線追跡の概要」 の手順を参照してください。For that, you can refer to the Getting started with eye tracking in MRTK instructions.

6.Visual Studio プロジェクトのアプリ機能で視線入力を有効にする6. Enable Gaze Input in the Visual Studio project's app capabilities

アプリをビルドして、Visual Studio からお使いのデバイスにデプロイする前に、プロジェクトのアプリの機能で視線入力が有効になっている必要があります。Before building and deploying your app from Visual Studio to your device, Gaze Input has to been enabled in the project's app capabilities. そのためには、 HoloLens 2 の Unity アプリのテストに関するページの手順を使用できます。For this, you can follow the Testing your Unity app on a HoloLens 2 instructions.

結論Congratulations

これで基本的な視線追跡機能をアプリケーションに追加することができました。You have successfully added basic eye tracking capabilities to your application. これらの操作は、視線追跡が持つ可能性のほんの一部にすぎません。These actions are only the beginning of a world of possibilities with eye tracking. このチュートリアルでは、音声コマンドやパン ジェスチャなど、その他の高度な入力機能についても学習しました。In this tutorial, you also learned about other advanced input features, such as voice commands and panning gestures.

次のレッスン:7.月着陸船サンプル アプリケーションの作成Next Lesson: 7. Creating a Lunar Module sample application