MRが楽しい

MRやVRについて学習したことを書き残す

SpatialMappingのデータにNavMeshを適用する その3

前回記事の続きです。
bluebirdofoz.hatenablog.com

前回参考にしていた記事に続きがありましたので、こちらの動作も確認してみることにしました。
tarukosu.hatenablog.com
経路探索のロジックを応用して、現在位置から目的地の道筋を表示します。

本章ではSDユニティちゃんは用いません。
Agent設定を行ったその1終了時点のプロジェクトから作業を開始します。
bluebirdofoz.hatenablog.com

プロジェクトのバックアップがない場合は以下のように、SD_unitychan_humanoid オブジェクトと MoveToClickPoint オブジェクトを無効化する形でも問題ありません。
f:id:bluebirdofoz:20170811020940j:plain

最初に、目的地を表すオブジェクトの Destination オブジェクトを以下の手順で作成します。
1.Hierarchyを右クリックして 3DObject -> Cilynder でオブジェクトを作成する。
2.オブジェクト名を Destination に設定する。
3.Transform を以下の設定値に変更する。

Position X 0    Y 0.5 Z 0
Rotation X 0    Y 0   Z 0
Scale    X 0.05 Y 0.5 Z 0.05

f:id:bluebirdofoz:20170811020949j:plain

参考記事の DestinationPlacement.cs スクリプトを作成し、Destination オブジェクトに追加します。
f:id:bluebirdofoz:20170811021000j:plain

今回も unity 上で動作確認を行うため、DestinationPlacement.cs について以下のコードを追加しました。
・MoveToClickPoint.cs

  void Update()
  {
    if (Input.GetKeyDown(KeyCode.Space))
    {
      Debug.Log("click LOG");
      var hitInfo = GazeManager.Instance.HitInfo;
      transform.position = hitInfo.point + transform.localScale.y * Vector3.up;
    }
  }

次に経路探索と経路表示を行うゲームオブジェクトを作成します。
1.空の GameObject を作成する。
2.オブジェクト名を HumanNavigation に設定する。
3.NavMeshAgent をアタッチする。
4.LineRenderer をアタッチする。
f:id:bluebirdofoz:20170811021030j:plain


参考記事の HumanNavigation.cs スクリプトを作成し、HumanNavigation オブジェクトに追加します。
追加後、Inspector タブの DestinationDestination オブジェクトを設定します。
f:id:bluebirdofoz:20170811021042j:plain

シーンを再生して、目的地に視点を合わせてスペースキーを押下すると……。
f:id:bluebirdofoz:20170811021054j:plain
目的地までのルートが表示されました。成功です。

道案内のラインの太さや色は HumanNavigation オブジェクトの LineRenderer を設定することで変更可能です。
f:id:bluebirdofoz:20170811021107j:plain