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

手順Instructions

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

プロジェクトで使用可能なソルバーを見つけるには、MRTK SDK フォルダー (MixedRealityToolkit フォルダー) を探します。To find the available solvers in your project, look in the MRTK SDK folder (MixedRealityToolkit.SDK folder). 次の図に示すように、utilities フォルダーの下に、ソルバーフォルダーが表示されます。Under the utilities folder, you will see the solvers folder, as shown in the image below.

ソルバー

注意

このレッスンでは、回転ソルバーと放射 Alview ソルバーの実装についてのみ説明します。In this lesson, we will only review the implementation of the Orbital solver and the RadialView solver. MRTK で利用可能なすべての種類のソルバーの詳細については、次のページを参照してください: https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_Solver.htmlTo learn more about the full range of solvers available in the MRTK, visit: https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_Solver.html

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

この章の目的は、以前に作成されたボタンコレクションを拡張して、ユーザーの見つめ方向に従うようにすることです。The goal of this chapter is to enhance the button collection that was previously created so that it follows the user’s gaze direction. 以前のバージョンの MRTK と HoloToolkit では、これは tagalong いう機能と呼ばれていました。In the previous version of the MRTK and HoloToolkit, this was referred to as a tagalong functionality.

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

    Lesson3 Chapter2 Step1im

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

    Lesson3 Chapter2 Step2im

    注意

    回転コンポーネントを追加すると、システムによって、必要なコンポーネントである、"要素の追加" コンポーネントも追加されることがわかります。When you add the Orbital component you will notice that the system also adds the SolverHandler component, which is a required component.

  3. ユーザーに従うようにボタンコレクションを構成するには、次の調整を実装する必要があります (以下の図を参照してください)。In order to configure the Button Collection to follow the user, we need to implement the following adjustments (refer to the image below):

    • 回転スクリプトで、[方向の種類] ボックスの一覧を [ヨーのみ] に設定します。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. ワールドオフセットを 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 so 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.
    • ユーザーが十分に離れたところでボタンがユーザーのビューに従うようにするには、次のように、[ワールドオフセットの角度をステップ実行する] チェックボックスをオンにします (注: このタイトルは、次の図のように、一部の画面では切り捨てられる場合があります)。たとえば、オブジェクトが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 below).

    Lesson3 Chapter2 Step3im

追跡したハンドに従ってオブジェクトを有効にするEnabling objects to follow tracked hands

このセクションでは、前に作成したキューブゲームオブジェクトを構成して、ユーザーの追跡対象ユーザーに対して、放射 Alview ソルバーを使用します。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 階層内のキューブオブジェクトを選択します。Select the Cube object in the BaseScene hierarchy. [インスペクター] パネルの [コンポーネントの追加] をクリックします。Click Add Component in the Inspector panel. 検索ボックスに「」と入力し、[放射型] コンポーネントを選択してキューブに追加します。Type in RadialView in the search box and select the RadialView component to add it to the cube. また、このキューブには、パーティションコンポーネントが自動的に追加されます。The SolverHandler component will also be automatically added to the cube.

    mrlearning-base-ch3-3-step3

  2. ヘッドではなく手の形になるように放射 Alview を変更するには、[追跡対象の種類] オプションの横にあるドロップダウンメニューを選択し、メニューから [手の接合] を選択します。To change the RadialView to follow a hand instead of the head, select the dropdown menu next to the Tracked Target Type option and select Hand Joint from the menu.

    mrlearning-base-ch3-3-step2

    これで、2つの新しいオプションである [追跡された人の種類] と [追跡された手の継手] が表示されます。You will now see two new options, Tracked Handness Type and Tracked Hand Joint. この例では、次の図に示すように、左側の手首に従います。For this example, you will have the RadialView follow the wrist of the left hand as shown in the image below.

    mrlearning-base-ch3-3-step2b

  3. 放射状ビューの最大距離と最小距離を0に設定します。これにより、キューブがユーザーの手首と同じ距離になることはありません。Set the maximum and minimum distances of the Radial View 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. また、[参照方向] フィールドを調整して、キューブの向きの動作を調整することもできます。たとえば、オブジェクトをオブジェクト指向に設定することによって、ユーザーの手首でオブジェクトを回転できるようにする場合などです。You might also adjust the Reference Direction field to adjust the behavior of how the cube is oriented, such as if you want to allow the object to rotate with the user's wrist by setting the Reference Direction to Object Oriented.

    mrlearning-base-ch3-3-step3

結論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 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.

次のレッスン: 5. 3D オブジェクトとの対話Next Lesson: 5. Interacting with 3D objects