忠実度の高いセンサーモデルは、認識システムのテストと検証に不可欠です。最新のレイトレーシング API を利用することにより、パフォーマンスを犠牲にすることなく、より忠実なセンサーシミュレーションが可能になります。これは、照明や反射(マルチパス)のフォトン トラバーサルなどの明らかな領域をカバーし、回転するライダーのローリングシャッターやアクティブセンサーに一般的に存在する干渉などのモデリングされた人工物にも適用されます。
Vulkan は、Linux および Windows 上の新しいローレベル グラフィックス API であり、効率的なマルチスレッド レンダリング、レイトレーシング、および古い API と比較して全体的なスループットの向上をサポートします。最新の GPU を効率的に使用し、ボトルネックを取り除き、GPU へのより直接的なアクセスを可能にすることで、グラフィカルな忠実度とパフォーマンスを向上させます。 Applied Intuition では、Vulkan レンダリング機能に加えて、Vulkan が提供するすべての利点を活用するための開発を行っています。
このブログでは、従来のアプローチの制限と、Vulkan とレイトレーシングがセンサーモデルの忠実度とパフォーマンスをどのように改善するかについて説明します。
センサーデータを生成するためのアプローチ:
以前のブログ投稿では、ログの再シミュレーション、部分的な合成シミュレーション、完全な合成シミュレーションなど、認識シミュレーションへの 3 つの主要なアプローチについて説明しました。この投稿では、完全に合成されたセンサーデータの領域に焦点を当てますが、レイトレーシングは部分的に合成されたアプローチにも適用できます。
コンピュータグラフィックスでは、センサーデータを生成するために使用できるいくつかの一般的なレンダリング方法があります。その内の 2 つの方法と、適切な手法を慎重に選択することの重要性について詳しく説明します。アプローチは次のとおりです。
- ラスタライズは、センサーの観点から最終的なピクセル値を計算する従来のアプローチです。非常に効率的で、多くの場合、物理的に正確な結果を生成できますが、反射やグローバルイルミネーションなどの複雑な効果をキャプチャすることは困難です。これらの問題はどちらもおおよその解決策がありますが、視覚的または実験的に綿密に調査すると問題がでてきます。
- レイトレーシングは、フォトンが実世界で跳ね返る方法(つまり、拡散反射/鏡面反射の方法でサーフェスで跳ね返る方法)をエミュレートするレンダリング方法です。レイトレーシングは、光線が複数回跳ね返ることができるため、他のレンダリング方法とは異なります。これにより、正確な反射、動的なグローバルイルミネーション、および従来の方法ではシミュレーションも近似もできない複雑な効果が可能になります。ただし、最近までは実行するにはかなりの時間がひ必要とされていました。
ラスタライズの制限
標準のラスタライズアプローチは、キューブマップや画面スペース効果などの近似に依存しているため、基礎となる物理プロセスを適切にモデル化できない場合があります。
キューブマップの反射
キューブマップ反射は、画像データが後に使用するためのテクスチャ(キューブマップ)にエンコードされるとき、空間内の単一のポイントから生成されます。カメラで反射をレンダリングするには、特定のピクセルにあるサーフェスの法線を使用して、キューブマップ上のピクセルの色を検索します。この方法は一般的にはうまく機能しますが、キャプチャの正確なポイント以外のポイントでレンダリングすると、空間でのルックアップが不正確になり、反射が間違った場所に配置されます。反射は説得力があるように見えるかもしれませんが、実際には正確ではありません。
さらに、キューブマップの反射は、大きな曲面を処理するときに解像度が不足する可能性があり、動的要素が含まれずにフレームごとに再計算されます(コストのかかる操作)。
画面スペースの反射
画面スペースの反射は、画面上にある動的なオブジェクトに適しており、シーン全体を移動しているアクターをキャプチャできます。反射のジオメトリは正しいですが、反射される場所が画面外にある場合、システムはキューブマップのレンダリングに依存する必要があります。これにより、レンダリングされたビューの背後にあるオブジェクトなど、画面スペースの反射データが利用できない画像の境界にアーティファクトが発生する可能性があります。
レイトレーシング:仕組み
レイトレーシングでは、ある程度のエネルギーをもつ光源からの光線を追跡します。光線が光源からカメラまでシーンを通過すると、ボリュームモデルとシーン内のサーフェスの両方と相互作用します。図 1 に散乱光の 2 次反射が、最終的なシーンの照明にどのように影響するかを示しています
表面境界での相互作用に焦点を当てると、光子/光線はエネルギー保存の法則に従います。この法則では、エネルギーの一部が材料に吸収され、一部が透過し、残りがセンサービューと交差する可能性のあるシーンに散乱します。光線が表面とどのように相互作用するかの特定の動作は、双方向反射率分布関数(BRDF)によって定義されます。これは、材料の種類によって実際は大きく異なる可能性があります。
図 2 では、表面が滑らかであるほど、反射光線が空間的にコヒーレント(または鏡のよう)になっていることがわかります。ここでレイトレーシングがますます重要になります。
図 3 では、金属材料の粗さが完全な鏡面反射から部分的な拡散反射に変化していることがわかります。
レイトレーシングを使用した正確なセンサーのモデリング
図 4 に、レイトレーシングがある場合とない場合のシーンの定性的な例を示します。画像の違いと、一方が他方より優れている理由について説明します。
全体的な照明と反射を比較すると、レイトレーシングの利点は明らかです。左側(レイトレーシングなし)では、タンクローリーは反射率が高く、ライダーのリターンは浅いグレージングアングルで実際には正確ですが弱くなります。しかし、環境の正確な反映は見られません(図 5)
- レイトレーシングを使用すると、フレームから外れた赤い車両が反射で表示されます。
- レイトレーシングを使用すると、ガソリンスタンドの計量器によって写っていなかった子供が反射で見えます。
- レイトレーシングを使用すると、白い車両の反射が適切にレンダリングされます。
- レイトレーシングを使用すると、タンカー上のガソリンスタンドの天井からの柱が引き伸ばされたように見えるのではなく、正しく表示されます。
- レイトレーシングは、暗い表面を反射し、光っていないリムの正しい暗さを示します。
- レイトレーシングは、ガソリンスタンドの天井にあるブラックボックス周りの微妙な反射を正しく示しています。
このレベルのギャップは極端なケースですが、この比較は、自動運転システムの検証におけるレイトレーシングの利点を示しています。レイトレーシングは、反射による車両の誤認識など、複雑な問題を再現することもできます(そうでなければ正確にシミュレーションすることはできません)。
アクティブセンサーのマルチパスとゴーストターゲットの生成:
レイトレーシングの重要性は、アクティブセンシングシステムでゴースト検出を作り出す可能性がある状況のモデリングでも明らかです。適切な形状と材料特性により、センサーからの放射は、センサーに戻る前に直線経路よりも長くかかる可能性があり、その結果、表面までの距離が明らかに伸びます(図6)。このタイプの効果は、従来のレンダリング手法(以前お話した認識システムの検証と妥当性確認への挑戦)では直接モデル化することはできません。
この例は、検出の対象がセンサーのプライマリビューに存在しない場合にも適用されます。一般的なケースは、センサーの背後にあるオブジェクトからの 2 次または 3 次反射です。これは、センサービジョンの外側、別のオブジェクトによって遮られている、または視錐台の外側にあるなど、すべてのジオメトリを破棄する従来のレンダリングエンジンにとっては難しいケースです。図 7では、特定の計算では考慮されない可能性のある多数のラジエーターを確認できます。
レイトレーシングが優れたレンダリング方法である場合、なぜ広く採用されていないのでしょうか?レイトレーシングを使用する際の最大の制限要因は、ハードウェア要件のコストが高いことです。最近ではレイトレーシングはハードウェアサポートを取得しましたが、特にクラウドでは、スケーリングシミュレーションにまだ問題がある可能性があります。その上レイトレーシングは、従来のラスタライズよりも実行に時間がかかります。これらを解決する機能の生産が、センサーシミュレーションの最先端となるでしょう。
Vulkanを使用したApplied Intuitionのアプローチ
Applied Intuition では、レイトレーシングをサポートするために Vulkan 用の独自カスタム API を開発しています。これにより、完全カスタムのスキャンパターン、ローリングシャッター効果、および通常はキャプチャできないその他の重要な反射が可能になります。レイトレーシングレンダリングへのアプローチについて詳しく知りたい場合は、エンジニアリングチームにお問い合わせください。