MR 学習ベース モジュール - ダイナミック コンテンツの配置とソルバーMR Learning Base Module - Dynamic Content Placement and Solvers

ホログラムは HoloLens 2 で現実のものとなります。ホログラムは直感的にユーザーを追跡し、滑らかで洗練された操作ができるように物理環境に配置されます。Holograms come to life in the HoloLens 2 when they intuitively follow the user and are placed in the physical environment in a way that makes interaction seamless and elegant. レッスン 3 では、「ソルバー」として知られる MRTK で使用できる配置ツールを使用して、ホログラムを動的に配置する方法について学習します。In Lesson 3, we will explore ways to dynamically place holograms using the MRTK’s available placement tools, known as "solvers." 「ソルバー」と呼ばれているのは、複雑な空間配置アルゴリズムを解決することができるからです。They are known as "solvers" for the way they solve complex spatial placement algorithms. MRTK では、ソルバーとは、UI 要素がシーン内で自分、ユーザー、他のゲーム オブジェクトを追跡できるようにするために使用する、スクリプトと動作のシステムです。In the MRTK, solvers are a system of scripts and behaviors that we use to be able 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.


  • 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 SDK フォルダー ([MixedRealityToolkit.SDK] フォルダー) の [Utilities] (ユーティリティ) フォルダー内の [Solvers] (ソルバー) フォルダーを確認します。To find the available solvers in your project, look in the MRTK SDK folder (MixedRealityToolkit.SDK folder), then under the utilities folder you will see the solvers folder, as shown in the image below.


注:このレッスンでは、"Orbital" ソルバーと "RadialView" ソルバーのみの実装について説明します。Note: In this lesson we will only go over implementation of the "Orbital" solver and the "RadialView" solver. MRTK で利用できるすべてのソルバーについて学ぶには、次を参照してください。 learn more about the full range of solvers available in the MRTK, please visit:

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

この章の目標は、ユーザーの視線の方向を追跡するものとして以前に作成したボタン コレクションを強化することです。The goal of this chapter is to enhance the button collection we previously created such that it follows the user’s gaze direction. 以前のバージョンの MRTK と HoloToolkit では、"taglong" 機能と呼ばれていました。In previous version of the MRTK and HoloToolkit, this was referred to as a "taglong" functionality.

  1. 以前のレッスンから、[Button Collection] (ボタン コレクション) 親オブジェクトを選択します。Select the Button Collection parent object from the previous lesson.

Lesson3 Chapter2 Step1im

  1. [Inspector] (インスペクター) パネルで、[Add Component] (コンポーネントの追加) ボタンをクリックして、「orbital」を検索します。In the inspector panel, click the "add component" button and search for "orbital." [Orbital] コンポーネントが表示されます。The orbital component should appear. これを選択して、[Button Collection] (ボタン コレクション) ゲーム オブジェクトに [Orbital] コンポーネントを追加します。Select it to add the orbital component to the Button Collection game object.

Lesson3 Chapter2 Step2im

注:コンポーネントを追加すると、システムにより [Inspector] (インスペクター) タブに [Orbital (Script)] と [Solver Handler (Script)] が追加されます。これは必須コンポーネントです。Note: When you add the component you will notice that the system adds the orbital script and the solver handler script in the inspector tab, which is a required component.

  1. ユーザーを追跡するようボタン コレクションを構成するには、以下の調整を実装する必要があります (下の図も参照してください)。In order to configure the button collection to follow the user, we need to implement the following adjustments (please also refer to the image below):
  • [Orbital (Script)] で、[Orientation Type] (向きタイプ) ドロップダウン リストを [Yaw Only] (ヨーのみ) に設定します。In the Orbital script, set the "orientation type" drop-down list to "Yaw Only." これを設定するのは、ユーザーを追跡する際にオブジェクトの 1 つの軸だけが回転するようにするためです。This makes it so that only one axis of the object rotates as it follows the user.
  • すべての軸で [Local Offset] (ローカル オフセット) を 0 に設定します。Set the local offset to 0 on all axes. [World Offset] (ワールド オフセット) を、x = 0、y = -0.1、z = 0.6 に設定します。Set the World Offset to x = 0, y = -0.1 and z = 0.6. こうすることでオブジェクトの動きを次のように固定できます。つまり、ユーザーが高さを変えると、オブジェクトは物理環境内で固定された高さにとどまりながら、ユーザーが環境内で移動する際にユーザーを追跡することができます。This locks movement of the object such that when the user changes height, the object will remain at a fixed height in the physical environment, while still allowing it to follow the user as the user moves about the environment. これらの値を調整して、さまざまな動作を実現できます。These values may be adjusted to achieve a wide range of behaviors.
  • ユーザーが頭を大きく回転させた後、ボタンがユーザーの視界だけを追跡する動作の場合、[Use Angle Stepping for world offset] (ワールド オフセットに角度のステップを使用する) チェックボックスを選択できます (注意: 次の図と同じように、画面によってはこのテキストは一部表示されません)。たとえば、オブジェクトに 90 度ごとにユーザーを追跡させるには、ステップの数を 4 に設定します (左の例で緑の矢印で示されている)。For a follow behavior whereby the buttons only follow the user’s view after the user turns his or her head sufficiently far, you could select the "Use Angle Stepping for world offset" checkbox (Note: This title may be truncated on some screens, as it is in the image below.) For example, to have the object follow the user only every 90 degrees, set the number of steps equal to 4 (marked by a green arrow in the example to the left).

Lesson3 Chapter2 Step3im

オブジェクトに追跡対象の手を追跡させるEnabling Objects to Follow Tracked Hands

このセクションでは、RadialView ソルバーを使用してユーザーの追跡対象の手を追跡するために、以前に作成した cube ゲーム オブジェクトを構成します。In this section, we will configure the cube game object previously created to follow the user’s tracked hands using the RadialView solver.

  1. [BaseScene] 階層内で [Cube] オブジェクトを選択します。Select the cube object in the BaseScene hierarchy. [Inspector] (インスペクター) パネルで、[Add Component] (コンポーネントの追加) をクリックします。Click "add component" in the inspector panel.

Lesson3 Chapter3 Step1im

  1. 検索ボックスで「RadialView」と入力し、[RadialView] コンポーネントを選択して cube に追加します。Type in "RadialView" in the search box and select the RadialView component to add it to the cube. [Solver Handler] コンポーネントも自動で cube に追加されます。The solver handler component will also be automatically added to the cube.

  2. ラジアル ビューを、頭ではなく左手を追跡するように変更します。Change the radial view to not follow the head but follow the left hand. [tracked object to reference] (参照する追跡対象オブジェクト) オプションの隣にあるドロップダウン メニューを選択します。Select the dropdown menu next to the "tracked object to reference" option. メニューから [Hand Joint Left] (左手の関節) を選択します。Then select "hand joint left" from the menu.

Lesson3 Chapter3 Step3im

  1. 手の関節を選択したら、cube に追跡させる手の部分を選択できます。Once you select the hand joint, you can choose which part of the hand you want the cube to follow. この例では、手首を使います。For this example, we are going to use the wrist. [tracked hand joint] (追跡対象の手の関節) オプションの隣にあるドロップダウン メニューから、[wrist] (手首) を選択します。Next to the option "tracked hand joint" select the dropdown menu and select wrist.

Lesson3 Chapter3 Step4im

  1. cube とユーザーの手首との間隔がなくなるように、最小距離と最大距離を 0 に設定します。Set the maximum and minimum distances to 0 so that the cube will not have any distance between it and the user’s wrist. 設定すると、cube は完全に手首を追従するようになります。Once set, the cube will be perfectly aligned with the wrist. また、[Reference Direction] (リファレンスの方向) フィールドを調整して、cube の方向付けに関する動作を調整することもできます (たとえば、ユーザーの手首に合わせてオブジェクトを回転させる場合、リファレンスの方向を [Orient with Tracked Object] (追跡対象オブジェクトに合わせて方向付け) に設定します)。You may also adjust the "Reference Direction" field to adjust the behavior of how the cube is oriented (e.g., if you would like to allow the object to rotate with the user's wrist, set the reference direction to "Orient with Tracked Object")

Lesson3 Chapter3 Step5im


これで終了です。Congratulations! このレッスンでは、MRTK ソルバーを使用して UI に直感的にユーザーを追跡させる方法を学びました。In this lesson, 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 a game 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, feel free to visit the MRTK solvers documentation page.

次のレッスン:3D オブジェクトの操作Next Lesson: 3D Object Interaction