演習 - ソルバーによるインテリジェントなオブジェクト配置を作成する

完了

ソルバーは、Mixed Reality Toolkit (MRTK) のコンポーネントの 1 つです。 ここからは、2 種類のソルバーと、それぞれの機能について説明します。

MRTK でのソルバーの場所

MRTK のソルバーは、[MRTK SDK] フォルダー内にあります。 プロジェクトで使用可能なソルバーを確認するには、[プロジェクト] ウィンドウで、[パッケージ]>[MRTK 空間操作]>[ソルバー] の順に移動します。

Screenshot that shows the location of the solvers folder.

Directional Indicator ソルバー

Directional Indicator ソルバーは、オブジェクトの方向にユーザーを誘導するために使用します。 以下にその方法を示します。

  1. [Project](プロジェクト) ウィンドウで、[Assets](アセット)>[MRTK.Tutorials.GettingStarted]>[Prefabs] に移動します。 [Chevron] (シェブロン) プレハブをドラッグして [階層] ウィンドウにドロップし、変換の [Position] (位置) を X = 0、Y = 1.5、Z = 2 に設定することで、RoverExplorer オブジェクトの近くに配置します。

    Screenshot that shows the newly added Chevron prefab selected.

  2. 新しく追加した Chevron オブジェクトの名前を「Indicator」に変更します。 その次に、[Inspector](インスペクター) ウィンドウで [Add Component](コンポーネントの追加) を選択し、[DirectionalIndicator] を追加します。

    Screenshot that shows the DirectionalIndicator solver component added.

  3. [DirectionalIndicator] コンポーネントと [SolverHandler] コンポーネントを次のように構成します。

    a. [SolverHandler] コンポーネントの [Tracked Target Type](追跡対象の種類)[Head] に設定されていることを確認します。

    b. [RoverExplorer][DirectionalIndicator] コンポーネントの [Directional Target](方向のターゲット) に割り当てるために、[Hierarchy](ヒエラルキー) からドラッグして [None (Transform)] フィールドにドロップします。

    c. [View Offset](オフセットの表示)0.2 に変更します。

    Screenshot that shows the DirectionalIndicator solver component configured.

  4. [Game] モードに移行するには、[Play] を押します。 マウスの右ボタンを長押ししながらマウスを左右に移動して、視線の方向を回転させます。

    RoverExplorer オブジェクトから視線を外すと、[Indicator] オブジェクトが表示され、RoverExplorer オブジェクトの方向が示されます。

    Screenshot that shows the Play mode split view with DirectionalIndicator solver in use.

Tap To Place ソルバー

Tap To Place ソルバーは、オブジェクトの配置を変更する場合に使用します。 以下にその方法を示します。

  1. [Hierarchy](ヒエラルキー) ウィンドウで、[RoverExplorer]>[RoverAssembly] オブジェクトの順に選択します。 その次に、[インスペクター] で、[コンポーネントの追加] を使用して [Tap To Place] (タップして配置) コンポーネントを追加します。 このコンポーネントを次のように構成します。

    a. [SolverHandler] コンポーネントの [Tracked Target Type](追跡対象の種類)[Head] に設定されていることを確認します。

    b. [Use Default Surface Normal Offset] (既定のサーフェスの法線のオフセットを使用) をオフにして、[Surface Normal Offset] (サーフェスの法線のオフセット) が 0 に設定されていることを確認します。

    c. [垂直方向を保つ] チェックボックスをオンにします。

    Screenshot that shows the Tap To Place solver component added and configured.

  2. 次に、[コンポーネントの追加] を使用して、ステートフル対話可能コンポーネントを追加します。 [インスペクター] ウィンドウで、On Clicked () イベントを見つけます。 + アイコンを選択して、新しいイベントを追加します。 イベントを次のように構成します。

    a. RoverAssembly オブジェクトは、[Hierarchy] (階層) から [なし (オブジェクト)] フィールドにドラッグして、On Clicked () イベントのリスナーとして割り当てます。

    b. [関数なし] ドロップダウン リストから TapToPlace>StartPlacement() を選択し、イベントがトリガーされたときにこのメソッドを呼び出します。

    Screenshot that shows the Tap To Place On Placing Started event configured.

  3. [Hierarchy](ヒエラルキー) ウィンドウで RoverAssembly オブジェクトを選択したままにして、[Inspector](インスペクター) ウィンドウで [On Placing Started ()] イベントを見つけます。 + アイコンを選択して、新しいイベントを追加します。

    Screenshot that shows the Tap To Place On Placing Started event added.

  4. イベントを次のように構成します。

    a. [RoverAssembly] オブジェクトは、[Hierarchy](ヒエラルキー) から [None (Object)] フィールドにドラッグして、On Placing Started () イベントのリスナーとして割り当てます。

    b. [No Function] ドロップダウン リストから、[TapToPlace]>[float SurfaceNormalOffset] の順に選択し、イベントがトリガーされたときに [SurfaceNormalOffset] プロパティ値が更新されるようにします。

    c. 引数が 0 に設定されていることを確認します。

    Screenshot that shows the Tap To Place On Placing Started event configured.

  5. [Hierarchy](ヒエラルキー) の空いている場所場所を右クリックします。 [3D Object]>[Cube] の順に選択して、地表を表す一時オブジェクトを作成し、[Transform] コンポーネントを次のように構成します。

    • 位置: X = 0、Y = 0.15、Z = 6
    • 回転:X = 0、Y = 0、Z = 0
    • スケール:X = 10、Y = 0.2、Z = 10

    Screenshot that shows the temporary ground Cube object added and positioned.

  6. [Game] モードに移行するには、[Play] を押します。 その後で、視線が RoverAssembly オブジェクトに合わさるまで、マウスの右ボタンを長押しながらマウスを下方向に移動します。

    Screenshot that shows the Play mode split view, with gaze hitting the RoverAssembly object.

  7. スペース バーを長押しし、マウスの左ボタンをクリックしてエアタップを行い、tap-to-place プロセスを開始します。

    Screenshot that shows the Play mode split view, with placing started.

  8. マウスの右ボタンを長押ししながらマウスを左右に移動して、視線の方向を回転させます。 配置に問題がなければ、スペース バーを長押しし、マウスの左ボタンをクリックして終了エアタップを行います。

    Screenshot that shows the Play mode split view, with placing ended.

  9. [Game] モードで機能のテストが完了したら、Cube オブジェクトを右クリックし、そのオブジェクトをシーンから削除するために [Delete] を選択します。

    Screenshot that shows how to delete the temporary ground Cube.