4.動的なコンテンツの配置とソルバーの使用4. Placing dynamic content and using Solvers

ホログラムは HoloLens 2 で現実のものとなります。ホログラムは直感的にユーザーを追跡し、滑らかで洗練された操作ができるように物理環境に配置されます。Holograms come to life in HoloLens 2 when they intuitively follow the user and are placed in the physical environment in a way that makes interaction seamless and elegant. このチュートリアルでは、複雑な空間配置シナリオを解決するために、「ソルバー」として知られる MRTK で使用できる配置ツールを使用して、ホログラムを動的に配置する方法について学習します。In this tutorial, we explore ways to dynamically place holograms using the MRTK's available placement tools, known as Solvers, to solve complex spatial placement scenarios. MRTK では、ソルバーとは、UI 要素がシーン内で、あなた、ユーザー、他のゲーム オブジェクトを追跡できるようにするために使用される、スクリプトと動作のシステムです。In the MRTK, Solvers are a system of scripts and behaviors that are used to allow UI elements to follow you, the user, or other game objects in the scene. また、特定の場所にすばやくスナップして、アプリケーションをさらに直感的にするために使用することもできます。They can also be used to snap to certain positions quickly, making your application more intuitive.

目標Objectives

  • MRTK ソルバーの紹介Introduce the MRTK's Solvers
  • ソルバーを使用して、ボタン コレクションにユーザーを追跡させるUse Solvers to have a collection of buttons follow the user
  • ソルバーを使用して、ユーザーの追跡対象の手をゲーム オブジェクトに追跡させるUse Solvers to have a game object follow the user's tracked hands

MRTK でのソルバーの場所Location of Solvers in the MRTK

MRTK のソルバーは、MRTK SDK フォルダーにあります。The MRTK's Solvers are located in the MRTK SDK folder. プロジェクトで使用可能なソルバーを表示するには、[Project](プロジェクト) ウィンドウで、 [Assets](アセット) > [MixedRealityToolkit.SDK] > [Features](機能) > [Utilities](ユーティリティ) > [Solvers](ソルバー) に移動します。To see the available Solvers in your project, in the Project window, navigate to Assets > MixedRealityToolkit.SDK > Features > Utilities > Solvers:

mrlearning-base

このチュートリアルでは、Orbital ソルバーと Radial View ソルバーの実装について説明します。In this tutorial, we will review the implementation of the Orbital Solver and the Radial View Solver. MRTK で利用可能なすべてのソルバーの詳細については、MRTK ドキュメント ポータルソルバーに関するガイドを参照してください。To learn more about the full range of Solvers available in the MRTK, you can visit the the Solvers guide in the MRTK Documentation Portal.

ソルバーを使用してユーザーを追跡するUse a Solver to follow the user

このセクションでは、前のチュートリアルで作成したボタン コレクションを拡張して、ユーザーの視線の方向に従うようにします。In this section, you will enhance the button collection you created in the previous tutorial so it follows the user's gaze direction. さらに、ボタン コレクションが常に次のようになるようにソルバーを構成します。Additionally, you will also configure the Solver so the button collection is always:

  • 左から右への自然な読み取りのために、ユーザーの読み取り方向に対して平行に回転するRotated parallel to the user's reading direction, for natural left to right reading
  • ユーザーの水平の視線の向きより下に配置することで、このチュートリアルの後の方で追加する他のオブジェクトを妨げないようにするPositioned below the user horizontal gaze direction, so it's not obstructing the other objects you will add later in this tutorial
  • ボタンを押しやすくするために、ユーザーからおよそ腕半分の距離に配置するPositioned approximately a half arm's-length from the user, so the buttons can easily be pressed

このためには、参照オブジェクトから、指定された位置とオフセットにオブジェクトをロックする Orbital ソルバーを使用します。For this, you will use the Orbital Solver which locks the object to a specified position and offset from the referenced object.

1.Orbital ソルバーを追加する1. Add the Orbital Solver

[Hierarchy](階層) ウィンドウで、 [ButtonCollection] オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで、 [Add Component](コンポーネントの追加) ボタンを使用して、Orbital (Script) コンポーネントを ButtonCollection オブジェクトに追加します。In the Hierarchy window, select the ButtonCollection object, then in the Inspector window, use the Add Component button to add the Orbital (Script) component to the ButtonCollection object.

注意

ソルバー (この場合は Orbital (Script) コンポーネント) を追加すると、ソルバーで必要になる Solver Handler (Script) コンポーネントが自動的に追加されます。When you add a Solver, in this case the Orbital (Script) component, the Solver Handler (Script) component is automatically added because it is required by the Solver.

2.Orbital ソルバーを構成する2. Configure the Orbital Solver

Solver Handler (Script) コンポーネントを構成するConfigure the Solver Handler (Script) component:

  • [Tracked Target Type](追跡対象の種類)[Head](頭) に設定されていることを確認しますVerify that Tracked Target Type is set to Head

Orbital (Script) コンポーネントを構成します。Configure the Orbital (Script) component:

  • [Orientation Type](向きの種類)[Follow Tracked Object](追跡対象オブジェクトに従う) に設定されていることを確認しますVerify that Orientation Type is set to Follow Tracked Object
  • [Local Offset](ローカル オフセット) を X = 0、Y = 0、Z = 0 にリセットしますReset Local Offset to X = 0, Y = 0, Z = 0
  • [World Offset](ワールド オフセット) を X = 0、Y = -0.4、Z = 0.3 に変更しますChange World Offset to X = 0, Y = -0.4, Z = 0.3

mrlearning-base

3.エディター内シミュレーションを使用して Orbital ソルバーをテストする3. Test the Orbital Solver using the in-editor simulation

[Play](再生) ボタンを押してゲーム モードに入り、マウスの右ボタンを押したままにして視線方向を回転させます。次の点に注意してください。Press the Play button to enter Game mode and press and hold the right mouse button to rotate your gaze direction, and notice the following:

  • ButtonCollection の変換位置が、ソルバーの設定によって決定されるようになりましたThe ButtonCollection's Transform Position is now driven by the Solver settings
  • ソルバーの影響を受けない Cube は同じ位置のままになりますThe Cube, which is not affected by the Solver, remains in the same position

mrlearning-base

ヒント

シーン ウィンドウにカメラの光線が表示されない場合は、ギズモ メニューが有効になっていることを確認してください。If you don't see the camera ray in your Scene window, make sure your Gizmos menu is enabled. ギズモ メニューと、それを使用してシーン ビューを最適化する方法の詳細については、Unity の ギズモ メニューに関するドキュメントを参照してください。To learn more about the Gizmos menu and how you can use it to optimize your scene view, you can visit Unity's Gizmos menu documentation.

上の図に示されているようにシーンとゲーム ウィンドウを並べて表示するには、ゲーム ウィンドウをシーン ウィンドウの右側にドラッグします。To display your Scene and Game window side by side as shown in the image above, simply drag the Game window to the right side of the Scene window. ワークスペースのカスタマイズの詳細については、Unity のワークスペースのカスタマイズに関するドキュメントを参照してください。To learn more about customizing your workspace, you can visit Unity's Customizing Your Workspace documentation.

オブジェクトに追跡対象の手を追跡させるEnabling objects to follow tracked hands

このセクションでは、前のチュートリアルで作成した Cube オブジェクトを、ユーザーの追跡対象の手 (特に右手の手首) を追跡するように構成します。In this section, you will configure the Cube object you created in the previous tutorial so it follows the user's tracked hands, specifically the right hand wrist. さらに、キューブが常に次のようになるようにソルバーを構成します。Additionally, you will also configure the Solver so the cube:

  • ユーザーの手の回転に合わせて向きを変えるChanges it's orientation with the user's hand rotation
  • ユーザーの手首の位置に移動するPositioned on the user's wrist

このためには、参照オブジェクトによって投影されるビュー円錐内にオブジェクトを維持する Radial View ソルバーを使用します。For this, you will use the Radial View Solver which keeps the object within a view cone cast by the referenced object.

1.Radial View ソルバーを追加する1. Add the Radial View Solver

[Hierarchy](階層) ウィンドウで、 [Cube] オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで、 [Add Component](コンポーネントの追加) ボタンを使用して、Radial View (Script) コンポーネントを Cube オブジェクトに追加します。In the Hierarchy window, select the Cube object, then in the Inspector window, use the Add Component button to add the Radial View (Script) component Cube object.

2.Radial View ソルバーを構成する2. Configure the Radial View Solver

Solver Handler (Script) コンポーネントを構成するConfigure the Solver Handler (Script) component:

  • [Tracked Target Type](追跡対象の種類)[Hand Joint](手の関節) に変更しますChange Tracked Target Type to Hand Joint
  • [Tracked Handness](追跡対象の手)[Right](右) に変更しますChange Tracked Handness to Right
  • [Tracked Hand Joint](追跡対象の手の関節)[Wrist](手首) に変更しますChange Tracked Hand Joint to Wrist

Radial View (Script) コンポーネントを構成します。Configure the Radial View (Script) component:

  • [Reference Direction](参照方向)[Object Oriented](オブジェクトの向き) に変更してから、 [Orient To Reference Direction](参照方向に向ける) チェックボックスをオンにしますChange Reference Direction to Object Oriented, then check the Orient To Reference Direction checkbox
  • [Min Distance](最小距離) および [Max Distance](最大距離) を 0 に変更しますChange Min Distance and Max Distance to 0

mrlearning-base

3.エディター内シミュレーションを使用して Radial View ソルバーをテストする3. Test the Radial View Solver using the in-editor simulation

[Play](再生) ボタンを押してゲーム モードに入り、スペースキーを押して保持することで手を表示します。Press the Play button to enter Game mode and then press and hold the spacebar to bring up the hand. マウス カーソルを移動して手を動かし、マウスの左ボタンを押したままにして手を回転させます。Move the mouse cursor around to move the hand, and click and hold the left mouse button to rotate the hand:

mrlearning-base

結論Congratulations

このチュートリアルでは、MRTK ソルバーを使用して UI に直感的にユーザーを追跡させる方法を学びました。In this tutorial, you learned how to use the MRTK's solvers to have a UI intuitively follow the user. また、ソルバーをオブジェクト (cube) に追加して、ユーザーの追跡対象の手を追跡させる方法についても学びました。You also learned how to attach a Solver to an object (i.e., cube) to follow the user's tracked hands. MRTK に含まれるこれらのソルバーや他のソルバーについて学ぶには、MRTK ドキュメント ポータルソルバー に関するガイドを参照してください。To learn more about these and other solvers included with the MRTK, you can visit the Solvers guide in the MRTK Documentation Portal.

次のチュートリアル:5.3D オブジェクトの操作Next Tutorial: 5. Interacting with 3D objects