コンテンツにスキップ

空間キャリブレーション

ここでは、xR および VP ワークフローのために、Designer 内で物理世界と仮想世界を位置合わせする基本的な手順を扱います。このガイドでは xR ワークフローに焦点を当てます。これは、xR では VP よりも誤差の許容範囲がはるかに低いためです。同じ手順は両方に適しています。

適切にキャリブレーションされた xR ステージは、実環境と仮想環境のシームレスなブレンドを損なう継ぎ目や視覚的なアーティファクトを一切見せません。また、十分な準備があれば、数時間以内に完全にキャリブレーションできます。

spatial calibration を開始する前に、以下を確認してください。

  1. カメラトラッキングシステムがセットアップされ、信頼できるデータを受信していること。
  2. xR プロジェクトが MR set、LED スクリーンの正確な OBJ モデル、ビデオ入力が割り当てられた トラッキングされたカメラ で構成されていること。
  3. カメラ、LED プロセッサー、すべてのサーバーが同じ genlock 信号を受信していること。
  4. フィード出力 が構成され、動作が確認されていること。
  5. Delay Calibration が完了していること。

calibration(キャリブレーション)とは、トラッキングシステムの座標空間から Designer の座標空間に変換する数式です。Designer は、observations(オブザベーション)を与えれば、この数式を自動的に算出します。

observation は、黒い背景に白いドット(構造化光と呼ばれる)が表示されたステージを、カメラでキャプチャした一連の画像によって作成されます。Designer は構造化光を使用して、カメラが LED サーフェスに対して実際にどこにあるかを算出します。同時に、Designer はトラッキングシステムに従ったカメラの位置をキャプチャします。これら 2 つの位置が、Designer がキャリブレーションを作成するために使用するデータポイントを形成します。

オブザベーションには 2 種類あります: Primary と Secondary (P と S)

  • Primary オブザベーション は、トラッキング空間を Designer 空間に位置合わせするために使用されます。解法が計算するには最低 5 つの primary オブザベーションが必要なので、キャリブレーションプロセスを開始する際は 5 つの良好なオブザベーションを目指してください。この位置合わせは「Registration」と呼ばれることもあります。
  • Secondary オブザベーション は、ズームとフォーカスのエンコーダーデータを Designer のレンズモデルに位置合わせするために使用されます。

オブザベーションは、大多数のオブザベーションと同じズームおよびフォーカス値を持つ場合、自動的に Primary としてマークされます。

Designer でゼロポイントを割り当てる必要はありません。Primary キャリブレーションを開始する前に、トラッキングデータと Disguise の原点を位置合わせするために最小限のオフセットと変換を適用できますが、これは一般的には必要ありません。

このセクションでは、基本的な spatial および lens キャリブレーションのワークフローを概説します。

キャリブレーション前のセットアップ

Section titled “キャリブレーション前のセットアップ”

spatial calibration を開始する前に、以下を確認してください。

  1. LED スクリーンが、Designer に読み込まれた正確な 3D モデルで構成されていること。モデルが実物に近いほど、キャリブレーションは良くなります。
  2. カメラ、LED プロセッサー、すべてのサーバーが同じ信号に genlock されていること。
  3. 出力が構成され、動作が確認されていること。
  4. Video receive delay がキャリブレーションされていること。手順はこちらで確認できます。
  5. トラッキングシステムがカメラに取り付けられ、Designer の外部と内部の両方で構成されていること。カメラを動かす予定がない場合、これは不要です。
  6. オプション: レンズキャリブレーションに進むには、レンズエンコーダーをレンズに取り付け、Designer の外部と内部の両方で構成する必要があります。

仮想セットのプレビューセットアップ

Section titled “仮想セットのプレビューセットアップ”

キャリブレーションの前に、キャリブレーションの品質を評価しやすくするためにステージをセットアップしておくとよいでしょう。

これを行うには、以下の手順に従います。

  1. test pattern レイヤー を作成します。
  2. キャリブレーションする MR set 内で使用されるすべてのスクリーンを含む Direct mapping を、このレイヤーに割り当てます。
  3. LED スクリーンにコンテンツを送るように フィード出力 を構成します。
  4. virtual line up レイヤー を作成します。
  5. frontplate に設定された spatial mapping を、このレイヤーのマッピングとして割り当てます。これにより仮想セットの表現が表示され、キャリブレーションプロセス中に移動・変形します。
  6. MR set ウィジェットを右クリックして開きます。
  7. オプション: Ctrl + 左クリックでエディターのヘッダーをクリックして、ウィンドウを GUI にピン留めします。

MR set プレビューには、現在のアクティブなカメラビュー、AR Virtual Lineup オーバーレイ、および LED スクリーン出力にマッピングされたテストパターンが表示されます。これでキャリブレーションの準備が整いました!

spatial calibration プロセスは、トラッキング世界を Designer 世界と位置合わせします。これは primary オブザベーションのみを使用します。primary オブザベーションは、すべてのオブザベーションの一覧の中で最も多いズーム/フォーカス値のペアを共有するオブザベーションとして自動的に定義されます。

spatial calibration を実行するには、以下の手順を踏みます。

  1. MR set の spatial calibration ボタンを左クリックして、spatial calibration エディターを開きます。
  2. 正しい MR set が選択され、キャリブレーションするカメラが current target になっていることを確認します。
  3. カメラトラッキングシステムが正しいデータを出力しており、トラッキングソースからスケーリングが適用されていないことを確認します。
  4. プロジェクトの基準となる/最も一貫したショットを設定します。これは「hero」ショットと呼ばれます。
  5. ズームとフォーカスの値を、ショーで最も一貫して使用するレベルに調整します(これが撮影の後半で変わっても心配いりません。キャリブレーションをやり直す必要はありません)。
  6. キャリブレーションエディターで Lock ZoomLock Focus を左クリックして、現在のズームとフォーカスの値を固定します。これにより、取得するすべてのオブザベーションが Primary としてマークされ、spatial calibration に使用されるようになります。
  7. primary オブザベーションの取得を開始します。primary オブザベーションは一覧に P インジケーターで表記されます。
  8. ショーで使用する、異なるカメラアングル/位置から、最低 5 つの良好なオブザベーションを取得します。
  9. 各オブザベーションの後、現在のカメラ位置から位置合わせが良好に見えるはずです。位置合わせが失敗し始めたら、すべてのオブザベーションを確認し、最適でないものを削除します。
  10. 撮影中に動かすと予想される代表的な範囲の位置にカメラを動かします。近くにオブザベーションがない部屋の部分を残すと、その領域にいるときにカメラが使用するキャリブレーションが不正確になることがあります。

lens calibration は、spatial calibration が位置と回転のデータに対して行うのと同じことを、レンズとフォーカスのデータに対して行います。レンズで単一のズームまたはフォーカス設定のみを使用する予定であれば、このステップはまったく行う必要はありません。

focus calibration は、特に「レンズブリージング」の問題を考慮することを目的としています。この問題がない場合は、以下の focus calibration に関する手順を単に無視できます。

ズームおよび/またはフォーカスを使用する予定がある場合は、以下の手順に従ってそれらをキャリブレーションします。

  1. カメラを「hero」または中央のカメラ位置に戻します。
  2. Focus のロックを解除します。
  3. フォーカス値を一方向の範囲の端に調整します。
  4. Secondary オブザベーションをキャプチャします。secondary オブザベーションは S インジケーターで分類されます。
  5. 手順 3 と 4 を繰り返します。新しいフォーカス値を持つ各新規オブザベーションは、新しい Lens ポーズを作成します。通常は、フォーカス範囲の両端に 1 つずつと中間に 1 つの、計 3 つのオブザベーションを使用すると予想されます。さらに必要な場合は取得できますが、曲線の過剰適合を避けるため、あまり近接して取らないように注意してください。
  6. Zoom のロックを解除します。
  7. 使用する予定の範囲の 10% だけズームを調整します。
  8. Zoom をロックします。
  9. 各ズームレベルで複数のフォーカスレベルがオブザベーションとしてキャプチャされるまで、手順 3〜8 を繰り返します。
  10. カメラをズームイン・ズームアウトし、必要に応じてフォーカスを調整します。MR 伝送出力を見て、ステージ要素の仮想ズームとフォーカスが実世界と一致しない明らかな点がないか確認します。それらの値で、必要に応じてズームとフォーカスのオブザベーションを追加します。

ここでは、spatial calibration ウィジェット内のすべての設定の概要を説明します。これらの一部は上記の標準ワークフローで使用され、一部はより高度な使用法やトラブルシューティング用です。

このセクションでは、キャリブレーションしたい MR set を構成できます。高度な ghost-frame ワークフローのために複数の MR set を追加できます。

これにより、LED ウォールに表示されるドットの間隔とサイズを構成できます。spatial calibration が正確な結果を出すには、これらのドットがカメラによって明確に検出される必要があります。

ドットの最適なサイズと間隔は、一般にボリュームのサイズとカメラのレンズによって異なるため、カメラのステージからの距離に基づいて位置ごとに異なることがよくあります。すべてのステージに有効な一貫した値の範囲はないため、大きなドットと小さなドットを試して、システム上で結果を比較する時間を見つけることが極めて重要です。

良好な blob 設定をセットアップするためのヒントとコツを以下に示します。

  • デフォルトの blob サイズと間隔は、ほとんどのシナリオで良好なキャリブレーションを得るのに十分です。
  • キャリブレーションは、オブザベーション間でドットのサイズおよび/または間隔が一貫していることを要求しません。
  • LED ウォールに非常に近くズームインすると、LED の個々のピクセルの間に見える暗いスペースが、別々の blob として検出されることがあります。これは spatial calibration の不良につながります。blob サイズを小さくし、blob 間隔を変更することで、これを避けられます。
  • オブザベーションのデバッグツールを使用して、オブザベーションでキャプチャされた画像を見て、blob が期待どおりに現実と一致しているか確認できます。

この見出しの下の設定では、オブザベーションを取得・管理できます。

以下のオプションがあります。

これにより、ドロップしたフレームに対してより寛容な、より遅いキャプチャプロセスをオンに切り替えられます。デフォルトでは選択されていません。

これにより、特定の順序で固定の色のセットを LED ウォールに送る Capture ボタンが表示されます。ウィジェットはキャプチャしたフレームを順に表示します。画像が(説明に基づいて)あるべきものをキャプチャしない場合、フレームを一貫して受信しておらず、オブザベーションのキャプチャに失敗します。

以下のトラブルシューティング手順を試せます。

  1. フレームをドロップしていないか確認します。フレームをドロップしているとキャリブレーションは成功しません。
  2. video receive delay が変化またはドリフトしていないことを検証します。これを行う方法の手順はこちらで確認できます。
  3. サーバーとカメラがまだ genlock されていることを検証します。されていない場合、オブザベーションが失敗することがあります。

問題を解決できない場合は、より遅いがフレームドロップやその他の構成の問題に対してより寛容な Use Legacy Capture をチェックしてみてください。

ここには 2 つのボタンがあります。

  1. Add Observation - 新しいオブザベーションを作成します。
  2. Reset All Observations - すべてのオブザベーションを削除します(最初に確認を求めます)。

spatial および lens キャリブレーションに寄与できるすべてのオブザベーションの一覧です。

各オブザベーションについて一覧表示されるデータには以下が含まれます。

  1. オブザベーションを有効・無効にするトグル。
  2. 各個別オブザベーションのインデックス。
  3. オブザベーションが取得されたときのカメラのトラッキングされた位置。(これを右クリックすると observation debugger にアクセスできます)
  4. オブザベーションの Zoom エンコーダー値。(ユーザー編集可能)
  5. オブザベーションの Focus エンコーダー値。(ユーザー編集可能)
  1. オブザベーションの RMS Error。これは、キャリブレーション後のオブザベーションがカメラの真の位置にどれだけ近いかを数値で表したものです。値が小さいほど良く、これを使ってオブザベーション内の外れ値を検出するのに役立てられます。
  2. オブザベーションのタイプ: Primary は P、Secondary は S
  3. オブザベーションを削除するボタン。

このセクションでは、純粋な AR ワークフローのためにカメラを手動でキャリブレーションできます。このワークフローについては、近日公開予定のガイドで詳しく説明します。

キャリブレーションに関するグローバル設定を調整します。

  • Observations image source: Live、Write、Read。

    • Live(デフォルト): オブザベーションプロセスでキャプチャされた画像はオブザベーションオブジェクト自体に保存され、オブザベーションが削除されると復元できません。
    • Write: オブザベーションプロセスのすべてのキャプチャを、Windows のプロジェクトフォルダー内に新しく作成される /debug というフォルダーにバックアップします。(通常はトラブルシューティングにのみ使用)
    • Read: ディスクからキャプチャした画像を読み取り、オフラインでキャリブレーションを再作成します。(通常はトラブルシューティングにのみ使用)Read モードのときは、Read images from フィールドで読み取り元のフォルダーのインデックスも選択できます。
  • Adjust screen positions

    • このプロパティは、キャリブレーションソルバーが解法中にスクリーンの位置をわずかに調整できるかどうかを定義します。非常に正確な 3D モデルがない場合、これを使って結果が改善されるか試せます。
  • Detect outlier blobs

    • このプロパティはデフォルトでオンになっており、オブザベーションモデル内にうまく収まらない blob を無視します。一部の高度なトラブルシューティングワークフローのために無効にできます。
  • Tracker Distortion Compensation

    • このプロパティは、キャリブレーションシステムがトラッキングシステムの空間を Designer の空間にどのように一致させようとするか、また、より良いキャリブレーションを得るためにどの要因を変更できるかを定義します。一般に、トラッキングシステムについて特別なことを知らない限り、デフォルトのままにすべきです。異なるオプションを試して、より良い結果が得られるか確認することもできます。利用可能な設定は以下のとおりです。
      • None: トラッキングシステムと Disguise の間の物理的なオフセット(tracker → focal point、および tracker origin → Disguise origin)のみを考慮します。理論上、完璧なセットアップではこれだけで十分なはずです。
      • Single gain: tracker と Disguise の測定値の間で単一のスケーリング係数を許容します。
      • Gains: これがデフォルト設定です。X/Y/Z 軸で異なるスケーリング係数を許容します。
      • Gains and Skews: skew(傾き)も追加します。これはおおよそ tracker の軸が垂直でないことに相当します。
      • Matrix: 最も多くの歪みを考慮できますが、キャリブレーションを「過剰適合」させやすく、積極的にキャリブレーションを取っていない場所での外挿結果が悪くなることがあります。
  • Calibration scope

    • このプロパティでは、キャリブレーションでどのパラメーターを解くかを定義できます。利用可能な設定は以下のとおりです。
      • Lens and Registration: レンズの intrinsics とカメラ-tracker の registration の両方を最適化します。
      • Lens Only: レンズの intrinsics を最適化し、位置/回転は tracker から直接取得します。
      • Registration Only: registration を最適化し、レンズ intrinsics は tracker(提供されている場合)またはカメラから取得します。
      • Lens and Manual Registration: 通常のオブザベーションを使用してレンズ intrinsics をキャリブレーションし、manual オブザベーションを使用して registration をキャリブレーションします。
      • Registration and Focal Length: registration とカメラの焦点距離を最適化しますが、歪みパラメーターは最適化しません。

secondary オブザベーションによって作成されたすべての lens ポーズの一覧を提供します。各項目をクリックして手動で編集できます。これは、高度なトラブルシューティングや、受信データ形式の変更を補正するために使用されることがあります。

標準のキャリブレーションプロセスを正しく一貫して行うことは非常に信頼性が高く、通常は非常に良好なキャリブレーションをもたらします。それでも、エラーは発生し得ますし、実際に発生します。キャリブレーション結果が悪い場合は、このセクションが役立ちます!

Debugging セクションは、悪い spatial calibration のデバッグを助ける 3 つのツールを提供します。

  • Observation Debugger - 最もよく使われるツール
  • Plot Calibration Errors - 高度
  • Show 3D Observations

これは、悪いキャリブレーションをデバッグする際に最もよく使うツールです。なぜなら、ほとんどの場合、悪いキャリブレーションは悪いオブザベーションが原因だからです。observation debugger は、各個別オブザベーションを表示して、それらが良好な品質かどうかを確認するオプションを提供します。各キャプチャ画像を見て、blob が適切に識別され、はっきり見え、正しい仮想 blob と一致したかを判断できます。画像に多くの光のこぼれ、反射、不適切なマスキングなどがあったかを確認できます。

Primary オブザベーションは、「Solved」ポーズモードまたは「Tracked」ポーズモードのいずれかで表示できます。Tracked は tracker とカメラから得られる値を表示し、Solved はキャリブレーションによって Designer 空間に変換された値を表示するため、そのキャリブレーションに寄与する現在アクティブなすべてのオブザベーションに依存します。

Secondary オブザベーションは spatial calibration に使用されないため、表示する「Solved」モードはありません。

observation debugger による悪いキャリブレーションのトラブルシューティング
Section titled “observation debugger による悪いキャリブレーションのトラブルシューティング”

悪いキャリブレーションの場合、virtual lineup レイヤーが背景にあるセットの実際の LED と一致しないのが見られます。この問題には複数の原因があり得るため、以下のステップバイステップのトラブルシューティングガイドに従うことをお勧めします。

  1. 初期チェックを実行します。

    1. 「Re-run calibration」ボタンを押して、セットが完全にキャリブレーションされた状態であることを確認します。これは、プロジェクトファイルを再度開いたり更新したりするときに特に重要です。
    2. primary/secondary オブザベーションが期待どおりにラベル付けされているか確認します。ズームやフォーカスの値が変わって、誤った種類として解釈されている可能性があります。
    3. 目的のオブザベーションが一覧エディターで有効になっているか確認します。
  2. observation debugger で「solved」結果が良好に見えるか確認します。

良好でない場合、これは blob 検出段階での問題を示します。考えられる原因は以下のとおりです。

  • blob が間違った場所で検出されている(例: 反射による)。observation debugger またはビューアーで、おかしく見える検出された blob がないか確認します。
  • オブザベーション中にカメラが動いた。
  • ステージモデルが正確でない、または UV が正しくない(例: 間違った方向を向いていてスクリーンが反転している)。
  • フィード出力のマッピングが正しくない。
  1. observation debugger で「tracked」結果が良好に見えるか確認します。

良好でない場合、これはトラッキングシステムの registration の問題を示します。考えられる原因は以下のとおりです。

  • トラッキングシステムがエンゲージされておらず、信頼できるデータを受信していない。
  • トラッキングシステムが物理的に動いた、またはオブザベーション間でセットアップの何かが変わった。
  • トラッキングシステムの座標系が間違っている(例: 軸の反転や回転順序の誤り)。一部のデバッグツールがこれの診断に役立つことがあります。
  • トラッキングシステムがエンコーダーベースで、物理コンポーネントが誤測定されているか、たわんでいる。
  • キャリブレーションの解法を変更してみてください。
  • 上記のいずれも役に立たない場合は、悪いオブザベーションを含む通常の diag があれば、問題を調査するのに十分なはずです。
  1. observation debugger は良好に見えるが、Virtual Lineup レイヤー/コンテンツが悪く見える場合、これはトラッキングまたは registration の何かが適切に適用されていないことを示します。

考えられる原因は以下のとおりです。

  • キャリブレーションが最新でない。「Re-run calibration」ボタンを押して確認してください。
  • トラッキングシステムが物理的に動いた、またはセットアップの何かが変わった。
  • カメラが、十分にキャリブレーションされていない位置に移動した。この位置で別のオブザベーションを取得してみてください。
  • ズーム/フォーカスが変わった。
  1. これらの問題のいずれも見つからない場合は、以下の手順を踏んで、disguise サポートが HQ で問題をデバッグするために必要な情報を含むプロジェクト診断を作成します。

    1. この問題を示すオブザベーションを取得します(例: observation debugger では問題ないのに Virtual Lineup Layer が揃っていない)。
    2. オブザベーションが取得されたのと同じ位置にカメラを残します。
    3. カメラのトラッキングデータの短いデバイスレコーディングを取得します。スクリーンにテストパターンが表示され、Virtual Lineup Layer オーバーレイがない状態で、カメラフィードのスクリーンショットを撮ります。
    4. スクリーンに blob パターンプレビューが表示された状態で、カメラフィードのスクリーンショットを撮ります。
    5. Read モードでオブザベーションを取得します。これにより画像がプロジェクトの output フォルダーに書き込まれ、診断に含まれます。
    6. プロジェクトの診断をエクスポートし、MR set プレビューのスクリーンショットとともに、support@disguise.one に送信します。

これは、各空間次元 X/Y/Z と回転 Pitch/Roll/Yaw を、他のすべての次元と回転に対してプロットしたものを表示します。これにより、トラッキング座標空間内のバイアスを検出できます。各グラフは、ほとんど相関のない、おおよそ散らばった点の集合のように見えると予想されます。

2 つの軸の間に明確な線形または二次の相関のような明らかなパターンが見られる場合、これらが予期せず相関していることを示している可能性があります。例えば、カメラを左右に動かすと、tracker も前後の動きを送ってきている、という具合です。

Designer のキャリブレーションシステムはこの種の相関を考慮できますが、カメラの動きで問題が生じている場合、これはトラッキングシステム内のどこに問題が存在するかの非常に良い手がかりを与えてくれます。

これが重要になる例として、ジブのような機械式トラッキングシステムが挙げられます。機械式システムでは、モーターが伝える情報に基づいてトラッキングデータを受信しますが、ジブアームが伸びるときにたわむと、トラッキングシステムはこのたわみを認識しません。この場合、ジブアームの伸びとその垂直方向の高さの間に相関が見られ、これはこのデバッグウィジェットで確認できます。

Plot calibration errors interface Plot calibration errors のインターフェース

これは、各オブザベーションが 3D 空間のどこで取得されたかを示す 3D の矢印をステージにレンダリングします。これは、オブザベーションが非常に少ない可能性のあるステージの部分があったり、オブザベーションを均等な間隔で取得しようとしている場合に便利です。

また、トラッキング座標系と Designer 座標系の位置合わせを視覚化するのにも役立ちます。2 つのトラッキングシステムの間に系統的な誤差がある場合、3D 空間で両者が一致する領域と一致しない領域を確認できます。