Technology

カメラやlidarの模擬出力を既存アプリ内で生成するSDK「ovrtx」

この記事のポイント

  1. 実現したこと

    既存アプリから、OpenUSDシーンに基づくカメラ、lidar、レーダーの模擬出力を生成できる。

  2. 実現の仕組み

    OpenUSDのシーンを読み込み、RenderProductsとRenderVarsで必要な出力を指定する。

  3. 得られた結果

    生成した出力をCPUまたはGPUメモリーへ戻し、アプリ内の表示や解析へ渡せる。

  4. 従来との違い

    既存アプリがUIと実行ループの制御を保ったまま、センサーシミュレーションを組み込める構成になった。

OpenUSDの3Dシーンからカメラ・lidar・レーダーの模擬出力を生成し、既存アプリへ返す流れ
AI生成画像

既存アプリが実行ループを制御したまま、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メモリーへマッピングされ、アプリ側へ戻る。

戻された出力は、アプリ内での表示や保存、解析、後続処理に利用できる。入力シーンの管理から出力の利用までを既存のワークフローへ接続できる構成だ。