VPS用のスキャン

Scanning Frameworkでは、特定のロケーションをスキャンし、その結果をアップロードすることで、より多くの場所でARDKのVPS機能を作動させることができるようになります。VPS用のスキャンを生成する詳細な方法については、 VPSのためのスキャンを生成する を参照してください。スキャンのためのUnityプロジェクトをまだセットアップしていない場合は、 Scanning Framework入門 を参照してください。

この機能を使用するには、以下の手順に従い、スキャン対象へのユーザーの誘導や、スキャンのアップロード、ユーザーガイダンスの追加、VPSスキャンの品質チェックを行ってください。

注釈

この機能はパブリックベータ版であり、機能性は将来のリリースで変更される可能性があります。ARDK機能のローンチタイプ(パブリックベータ版など)に関する詳細については、Lightshipのローンチタイプをご参照ください。

手順

1. Guide your Users to Scan Targets
  1. ScanTargetClient インターフェイスを使用して、VPSを作動させるために、スキャンのアップロードに適した付近のロケーションを取得します。

    _scanTargetClient = ScanTargetClientFactory.Create(runtimeEnvironment, mockResponses);
    _scanTargetClient.RequestScanTargets(coordinates, queryRadius, (ScanTargetResponse response) => {
      if (response.status == ResponseStatus.Success) {
          List<ScanTarget> scanTargets = response.scanTargets;
          /** store and process scan targets. */
        }
    });
    
  2. この画像は、ユーザーに対して付近のスキャン対象を表示するUIの例です。

    Scan Managerの設定

  3. スキャン対象が決まったら、Scan Managerに設定してスキャンを開始します。

    _arScanManager.SetScanTargetId(scanTargetId);
    _arScanManager.StartScanning();
    

    注釈

    現在のバージョンのScanning Frameworkでは、屋外にある公共物のみスキャンすることができます。プライベートなロケーションのスキャンを送信するには、 Niantic Wayfarerアプリを使用する を参照してください。

2. Upload Scans
  1. You can process the rest of the scan as normal. Make sure to check Processing Scans and choose the recommended settings for VPS scanning. After a scan is processed and saved, use ARScanManager's UploadScan method to upload scans to Niantic for them to be processed for VPS activation.

    1. スキャン時にスキャン対象IDが設定されている場合は、保存したスキャンから後日アップロードすることができます。

      string scanId = ...
      _arScanManager.UploadScan(scanId, (float progress) => {
        /** handle progress */
      }, (bool success, string error) => {
        if (success) {
        /** handle upload success*/
          } else {
        /** handle upload error */
          }
      });
      
    2. アップロードメソッドは scanId と2つのコールバックを受け取ります。最初のコールバックは、アップロード時に進行状況のfloatパラメーターとともに呼び出されます。2番目のコールバックはアップロード完了時に呼び出され、コールバックのステータスと、失敗した場合のエラーメッセージが返ります。

ScanningUpload のサンプルシーンに実装されているスキャンアップロードのフローをご覧ください。

3. Add User Guidance
  1. Niantic のScanning Frameworkでは、プライバシー規制の対象となる可能性のあるエンドユーザーから個人データを収集します。そのため、この個人データを収集するにあたり、エンドユーザーから適切な許可を得る必要があります。

  2. スキャンの事例において、スキャンをNiantic に送り返す場合は、ポップアップ表示を通じて、スキャン機能の初回使用時に以下の内容をエンドユーザーに通知する必要があります。

    • スキャン機能が有効になっていれば、エンドユーザーはいつでもオプトアウトすることができる。

    • 個人の自宅敷地内や、立ち入ることのできない場所はスキャンできない。

  3. また、スキャン機能のオプトインについて、ユーザーが選択を変更できる仕組みを用意する必要があります。

  4. ユーザーが安全な環境でスキャンできるように、ユーザーが初めてスキャンする際に、アプリに警告が1回限り表示される仕組みを用意することをお勧めします。この警告は、「危険な環境ではスキャンしないでください」などのように、簡易的に表示するとよいでしょう。

  5. また、ユーザーは、スキャン対象のオブジェクトやエリアをスキャンする許可を得ている必要があります。墓地や遊び場、学校など、子どもが特定できる場所は、スキャンに適切でない場合があります。

  6. さらに、ユーザー体験を最大限に高めるために、スキャンのベストプラクティスに関するガイダンスをアプリで提供する必要があります。たとえば、次のようなものがあります。

    • スキャンの際、歩幅で距離を測るのではなく「シャッフル」することで、スキャンの安定性を高めることができます。

    • ユーザーは、対象のオブジェクトの周りを必ず一周しながらWayspotをスキャンする必要があります。

    • Wayspotsをスキャンするときは、水平線が表示されるようにしておくと、スキャンによるローカライズの精度が高くなります。

    • ユーザーは、自分のスマートフォンをスプレー缶に見立てることで、スキャン中の対象物に「絵を描いている」ようなイメージを持つことができます。

4. Ensure VPS Scan Quality

VPSのスキャンには、メッシュとトラッキングの品質を確保するための適切なテクニックが必要です。詳細については、 スキャンのベストプラクティス を参照してください。

The Scanning Framework also provides an on-client scan quality check to indicate the scan quality, and possible reasons of a bad scan after the user takes a scan. To use the feature, call GetScanQuality on ARScanManager, or get an IScanQualityClassifier from IScanner, then call ComputeScanQuality.

この品質チェックでは、0~1のスコアが返ります。: スコアが高いほど、そのスキャンが VPS 用のマップを構築するのに適している可能性が高くなります。品質チェックで1つ以上の不良スキャンの信号が検出された場合、検出された可能性のある不良スキャンの品質理由をすべて表示します。すべての悪いスキャンの品質理由については、以下を参照してください。:

Reason

Description

Example

TooBlurry

The scene is too blurry to be understandable. This could be due to fast movement, dirty lense, or camera out of focus.

TooBlurry (不明瞭)

TooDark

The scene is too dark to be understandable.

TooDark (暗すぎる)

GroundOrFeet

The scan is too focused on the ground or the feet.

GroundOrFeet(地面もしくは足元)

ScanIndoors

The scan is indoors.

ScanIndoors (屋内のスキャン)

ScanFromCar

The user is scanning from the inside of a car.

ScanFromCar (車からのスキャン)

Obstructed

The scene is obstructed partly or fully by a finger or a large object.

Obstructed (閉塞的)

TargetNotVisible

The scan target is not clearly visible in the scan.

TargetNotVisible (対象が見えない)

次の手順

VPSのスキャンの詳細については スキャンのベストプラクティス を、スキャンの視覚化と処理については スキャンの設定 を参照してください。