既存アプリが実行ループを制御したまま、OpenUSDの3Dシーンからカメラやlidarの模擬出力を生成できる。NVIDIAのC・Python対応SDK「ovrtx」は、必要な出力を指定して実行し、結果をアプリへ戻す。
センサーシミュレーションを既存アプリへ組み込む
NVIDIAは、Omniverse RTXのセンサーシミュレーションを既存アプリへ組み込むC・Python対応SDK「ovrtx」をプレリリース版として公開した。ホストアプリは自身の構成やUI、データモデルを保ちながら、必要な場面でライブラリを呼び出す。
ワークフローの制御もホストアプリ側に残る。これにより、シーンの更新とセンサー出力の取得を、アプリが扱う作業の流れに沿って組み立てられる。
OpenUSDのシーンを共有ランタイムへ渡す
ホストアプリは、既存の制作工程にあるOpenUSDコンテンツを読み込むか参照させる。OpenUSDは3Dシーンを記述する形式で、ovrtxはそのシーンを模擬出力の入力に使う。
Omniverseライブラリの共有ランタイム「ovstage」は、OpenUSDのシーンデータを保持する。この共通のシーン情報を通じて、センサーシミュレーション用のovrtxと物理シミュレーション用のovphysxが連携する。
出力の指定をRTXによる描画へつなぐ
ホストアプリはRenderProductsとRenderVarsを設定し、カメラ、lidar、レーダー、セマンティックセグメンテーションなど、処理に必要な出力を指定する。指定された出力の生成には、ovrtxが公開するOmniverse RTX Rendererを使う。
このレンダラーはRTX GPUのRT CoreとTensor Coreによるアクセラレーションを利用し、3D環境内の光の伝搬を模擬する。シーンと出力の指定が、カメラ画像やセンサー出力を生成する処理につながる。
アプリの実行ループで進め、結果を受け取る
描画やセンサーシミュレーションのステップは、ホストアプリ自身の実行ループから進める。ovrtxが生成した出力はCPUまたはGPUメモリーへマッピングされ、アプリ側へ戻る。
戻された出力は、アプリ内での表示や保存、解析、後続処理に利用できる。入力シーンの管理から出力の利用までを既存のワークフローへ接続できる構成だ。