Open8

Immersalを用いたアプリ開発で気付いたことを残す

環境

  • 自然豊かな場所

失敗事例

  • 晴れた日に撮影
    • 影も影響するので、晴れた日のデータは数時間違うだけで影が移動して認識しなくなる
      • 1時間のずれであればまだ何とか?
      • 長期間開催するイベントの場合は太陽の高さも変わるので致命的

対策

  • 曇りの日に撮影したデータを使用するとたまに認識する
    • これでも自然豊かな場所だとかなり厳しく運用上厳しい

環境

  • 自然豊かな場所

失敗事例

  • 自然豊かな場所を撮影
    • 風、光、季節等で自然環境は刻一刻と変化するため、その時は認識しても次の機会には認識しない
    • 異なる場所でも誤って認識してしまうこともある
    • そもそも撮影に成功しないことも多々

対策

  • 人工物を置く
    • マーカーになる物を置くことでマーカーベースで認識させる
    • マーカー、表示オブジェクトの位置は、表示する空間をLiDARでスキャンしたデータを用いてUnity上で調整する

失敗事例

  • 同じ場所のARMapを複数配置
    • 同じ場所のARMapを複数配置すると、どのARMapを認識するかによって位置がずれる
    • 認識する度に表示するオブジェクトの位置が変わる

対策

  • 同じ場所のARMapは一つにする
  • 複数撮影したデータを用いたいときは、Developer PortalからStitch mapsを行う

失敗事例

  • 認識したらすぐにオブジェクト表示
    • ARMapがぴったり一致するまでに数回の認識が必要
    • 表示したオブジェクトがドリフトするため、見た目が悪い

対策

  • 認識してから数秒間オブジェクトを表示しないようにする
  • 認識した場所で動かないようにしてもらうようなメッセージを表示する

問題

サンプルを参考に新規プロジェクトを作成したが、認識回数が進まない

確認事項

  • ARLocalizerをImmarsal SDKに追加しているか?(AR Fundationの場合)
  • CameraのTagがMainCameraになっているか?

問題

次第に位置がずれて2秒に1回直る

確認事項

  • ARLocalizerのLocalization Intervalがデフォルトは2秒になっている

問題

シーンを切り替えて再表示すると認識しなくなる

原因

  • ARMap で LoadMap() を2回実行しているので、static 変数や native 環境に Map が2重登録される
        private void Start()
        {
            LoadMap();
        }

        private void OnEnable()
        {
            InitializeMesh();
            LoadMap();
        }

対策

  • シーン切り替え前に下記2つのメソッドから Map を開放する
    • ARSpace.UnregisterSpace(Transform tr, int mapId)
    • Immersal.Core.FreeMap(int mapHandle)
ログインするとコメントできます