Table of Contents

診断と修復:アプリケーション内コンテンツが表示されない問題

「実世界は見えるが、仮想コンテンツが表示されない」これは AR 開発で最も一般的な問題の一つです。この問題は、Mega 位置特定自体からレンダリングロジックに至るまで、複数の要因に起因する可能性があります。

本稿では、この問題を体系的にトラブルシューティングし解決する手順を説明します。

トラブルシューティングフロー:外部から内部へ

「外部から内部へ」の原則に従うことで、効率的に問題を特定できます。以下の手順を順番に実行してください:

ステップ1:外部ツールでMega位置特定状態を検証(コード変更不要)

アプリケーションコードを深く調査する前に、まずMega位置特定サービス自体が正常に動作していることを確認します。これは最も重要なステップであり、問題がMega位置特定自体にあるのか、レンダリングなどのアプリケーション統合問題にあるのかを判断するのに役立ちます。

  1. Mega Toolboxの使用(モバイル端末)

    • テスト用携帯電話に Mega Toolbox App をインストールします(まだインストールしていない場合)。
    • Appを開き、「現場位置特定テスト」または類似の機能に移動します。
    • アカウントにログインし、アプリケーションと同じ位置特定ライブラリを選択します。
    • 携帯電話を、アプリケーションのテストでコンテンツが表示されなかった同じ場所に持っていきます。
    • 結果を観察
      • Toolboxが位置特定に成功した場合(インターフェース上でステータスが Found と表示):問題ありません! Mega位置特定サービスは正常です。問題はアプリケーション内部、特にレンダリングとコンテンツ表示ロジックにあります。ステップ2に進んでください。
      • Toolboxが位置特定に失敗した場合(インターフェース上でステータスが NotFound またはその他):問題は位置特定サービス自体にあります。詳細な分析については 次のセクション を参照してください。
  2. PCシミュレーション実行の使用(EIFが収録済みの場合)

    • そのシーン用に EIF データ を収録している場合、PC上のUnityエディタで session 検証ツールを使用してデータを再生できます。
    • 結果を観察
      • 再生中に位置特定が成功した場合(インターフェース上でステータスが Found と表示):問題はアプリケーションコードまたはデバイス固有の環境にあります。
      • 再生中に位置特定が失敗した場合(インターフェース上でステータスが NotFound またはその他):問題は位置特定サービス自体にあります。詳細な分析については 次のセクション を参照してください。

ステップ2:アプリケーション内部のレンダリングとコンテンツロジックを確認

ステップ1でMega位置特定サービス自体が正常であることが確認できた場合、問題はアプリケーションコード内にあります。以下の点を確認してください:

  1. コンテンツが正しいノードの下に配置されているか

    • 3Dオブジェクトをツールが自動生成した MegaBlocks > Block_* ノードの下に正しく配置していますか?
    • コンテンツとBlockノードの階層関係を確認し、実行時に仮想コンテンツが正しい位置にレンダリングされるようにします。
  2. MegaTrackerのBlock Rootが正しく設定されているか

    • AR Session を展開し、Mega Tracker 内の Block Root がツールで生成された MegaBlocks ノードであることを確認します。
  3. MegaBlocksノードが変更されていないか

    • Block_* ノードの名前を変更しておらず、local transform プロパティ内のいかなる値も変更していないことを確認します。
  4. イベントリスナーが正しいか

    • MegaTracker の位置特定コールバック処理ロジックを変更していませんか?
    • 位置特定ステータス成功イベントがトリガーされた後にのみ、仮想コンテンツのインスタンス化または表示を実行するコードになっていますか?
  5. ヘッドセットレンダリングと透過性

    • 仮想オブジェクトが他のオブジェクトに隠されていませんか?レンダリングキューとシェーダーを確認します。
    • VST(ビデオ透過)デバイスを使用している場合、レンダリングがビデオストリーム上に正しくオーバーレイされているか確認します。
    • OST(光学透過)デバイスを使用している場合、環境光が強すぎてコンテンツが見えない可能性がないか確認します。
  6. コンテンツ自体の問題

    • インスタンス化したプレハブ(Prefab)自体に問題はありませんか?例:モデルファイルの欠落、シェーダーエラー、スケールが0など。シーン内に同じオブジェクトを手動で配置し、正常に表示されるか試してみてください。

位置特定失敗の一般的な原因分析と改善策

ステップ1 でMega Toolboxも位置特定できないことが判明した場合、位置特定の問題を詳細に確認して解決する必要があります。以下に一般的な原因と対策を示します:

  • 原因1:マップと環境の不一致
    現場環境が収録・マッピング時と比較して大きく変化している、または体験エリアが収録時にカバーされていなかった、あるいはマップ自体が間違っている。
    改善策

    • 位置特定ライブラリにロードされているマップが、現在の物理空間と一致していることを確認します。
    • 環境が改造された場合(例:改装、陳列変更)、再収録とマップの再生成が必要です。
    • 問題が発生しているエリアが収録・マッピング時にカバーされていなかった場合は、サプリメンタリーアップデート方式でマップを再生成する必要があります。
  • 原因2:初期化環境が不適切
    テクスチャが乏しいエリア(例:単色の壁、地面に向けた状態)でアプリケーションを起動している。
    改善策

    • システムが迅速に初期位置特定を完了できるよう、ユーザーがテクスチャ豊富なエリアでアプリケーションを起動するよう誘導します。
    • アプリケーションのUIで「携帯電話を持ち上げて左右を見回してください」など、明確な指示を出します。
  • 原因3:ネットワークまたはサービス問題
    ネットワーク遅延により位置特定サービスのリクエストがタイムアウトした、あるいは位置特定サービス自体に障害が発生している、または同時利用上限を超えているなど。後者の場合は、速やかにフィードバックをお寄せください。

  • 原因4:アルゴリズム能力限界への到達
    Mega位置特定は先進的なコンピュータビジョンやAIなどのアルゴリズムに基づいていますが、万能ではなく一定のアルゴリズム能力限界が存在します。特定のシーンや地点で位置特定が継続的に失敗する場合は、画面録画やEIFデータ収録などの方法でフィードバックをいただき、アルゴリズムの継続的な改良と反復にご協力ください。

なお、Mega位置特定にはプロセスが必要であり、通常1~2秒程度かかります。ネットワーク輻輳、高負荷、携帯電話の発熱・スロットリングなどの現実的なシナリオを考慮すると、この時間はさらに長くなる可能性があります。したがって、アプリケーション内では「位置特定中...」という明確なロード/待機画面をデザインし、待機中にユーザーがサービスが停止した、あるいは位置特定できないと誤認するのを避ける必要があります。

注記
  • 初回位置特定は通常、以降の位置特定よりも遅くなります。これは、システムが初回位置特定成功後にコンテンツをロードする必要があるためです。これは正常な動作です。
  • デバイスの急速な移動は位置特定の消失を引き起こす可能性があります。ユーザーにデバイスを安定して動かすよう誘導してください。

まとめとベストプラクティス

  • 常に外部ツールで最初に検証する:これにより、問題範囲を「位置特定」または「レンダリング」に迅速に絞り込むことができます。
  • 合理的なユーザー期待値を設定する:UIによるプロンプトで、ユーザーに位置特定に時間がかかることを知らせ、適切な環境へ誘導します。
  • コンテンツロジックに注目する:コンテンツのバインドなどの設定が正しいことを確認します。
  • ログを活用する:イベントトリガー、姿勢取得、応答ステータスなどの重要なポイントでログを出力すると、コードロジックの問題を迅速に特定するのに役立ちます。

以上の体系的なトラブルシューティングにより、「コンテンツが表示されない」問題のほとんどを解決できるはずです。問題が解決しない場合は、EIFデータとログを準備し、問題報告の方法で詳細なレポートを提出してください。