実績とブログの一覧へ戻る
3DGSIsaac SimLiDAR手順 2026-08-16読了 約5分

Isaac Sim向けに
3DGSシミュレーション環境を
セットアップする

ロケハン3Dの中村です。
LiDAR搭載スキャナで撮った3DGSを、NVIDIA Isaac Simでロボットが物理で走れるシミュレーション環境にする手順をまとめます。
方針は徹底してシンプルです——スキャナ純正の3DGSとメッシュは無加工のまま使い、メッシュの「地面の穴」だけをパッチで塞ぐ
削除系の後処理は行いません。
渋谷スクランブル交差点のスキャンを通し例に、実際に踏んだ罠を記録します。

渋谷スクランブル交差点の3DGSスキャンを俯瞰でレンダリングした図
後処理を終えた渋谷スクランブル交差点の3DGSです。この見た目の下に、不可視のコライダー(純正メッシュ+地面パッチ)を重ねることで、ロボットが物理で走行できるようになります。
3DGSスキャン(無加工) 読み込み 地面の穴だけパッチ 2層で走行
この記事で得られるもの入力は、LiDAR搭載スキャナの標準出力3点——①3DGS ②スキャナ純正メッシュ ③密なLiDAR点群です(カメラのみで作った3DGSにはこの手順は適用できません)。「地面の穴埋め」だけの最小の後処理で、「見た目の3DGS」と「不可視のコライダー」を重ねた2層構造の環境が得られ、Isaac Sim上でロボットの走行・衝突・センサ検証ができるようになります。依存はPython・点群処理ライブラリ・Isaac Simだけです。

01 全体像と前提──なぜコライダーが要るのか

3DGSは見た目の再現に関しては圧倒的です。
ただしそれは「写真と一致するように最適化した」結果であって、「形が正しい」わけではありません
そのままシミュレーションに使うと、二つの事故が起きます。

一つ目はフローター
実体のない場所に残ったガウシアンがロボットのカメラに映り込み、視界ノイズになります。
本記事の方針ではこれは消さずに受け入れます——削除処理は実在物を巻き添えにしやすいためです(オプション節参照)。
二つ目が本命の当たり判定の穴
3DGSは面を持たないため衝突にはスキャナ純正メッシュを使いますが、その穴(どの面にも閉じないエッジ)は屋内外どちらのスキャンにも一定量あり、穴の上にロボットを置くとこうなります。

穴の開いた床にロボットを置いた失敗例です。見た目には床があるのに当たり判定に穴があるため、ロボットは加速しながら床下へ落ち続けました。

解決の設計は2層構造です。
見た目はフローターを除去した3DGSが担当し、物理は不可視のコライダーが担当します。
NVIDIA×Nianticの同種のパイプラインは深度をAIで推定して形状を拘束しますが、それは360度カメラしか無いための選択です。
LiDARの実測深度を持っているなら、推定モデルも再学習も不要で、以降のステップだけで同じものが作れます。

02 STEP 1:3DGSをIsaac Simに読み込む

3DGSのPLYをUSD(ParticleField形式)へ変換して読み込みます。
基本の変換・読み込み手順は別記事の通りです。
セットアップとしてはここで二つの罠を先に潰しておきます。

ロボットを置くときの単位の罠cm単位で作られた参照アセット(Isaac標準のフォークリフト等)は、Kitが自動で補正スケールを付けます。ところが変換を組み直すとこの補正も消え、巨大なフォークリフトが出現します。組み直した場合は縮尺を明示します。

03 STEP 2:メッシュの「地面の穴」だけを塞ぐ

コライダーはスキャナ純正メッシュを無加工のまま使います。
ボクセル穴埋めの水密シェルは「溶けたロウ」状に形が崩れ、シェルから切り出したパッチはトゲ状の断片を生みます——どちらも試して負けました。
細いポールや車止めまで含めて、形の情報は純正メッシュが一番正確です。

足すのは地面のパッチだけです。
LiDAR実測面から滑らかな地面の高さ場を作り、純正メッシュに地面が存在しないセルだけをその高さで面化して敷きます。
壁や建物の穴は走行に影響しないため放置します。
渋谷では走行域のどこから落としても抜けないことを確認しています。
ロボットが落ちる穴だけが塞がり、それ以外は1三角形も変わりません。

同じカメラで3層を見比べたところです。上が無加工の3DGS、中央が無加工のスキャナ純正メッシュ(穴あり)、下がコライダー(純正+地面パッチのみ)。中央と下は地面の穴以外は完全に同一で、車止めやポールも1本残らず一致します。

04 STEP 3:2層を重ねて、走らせる

1つのUSDにまとめます。
Z-upのステージにphysicsSceneを定義し、3DGSは元ファイルをそのまま参照してX軸-90°回転で立てる(座標変換の焼き込み書き出しは不要です)、コライダーはMeshとして埋め込んでCollisionAPI(approximation=none)を適用し、MakeInvisible()で不可視にします。
これで見た目は無加工の3DGS・物理は純正メッシュ+地面パッチの2層環境が完成します。

車両はPhysX Vehicle(omni.physx.vehicle)で作ります。
ウィザードAPI(VehicleDatacreate_vehicle)で、スプリング/ダンパー付きサスペンションとアッカーマン操舵を備えた4輪車が数行で生成でき、accelerator(0〜1)とsteer(-1〜1)の2値で運転できます。
サスペンションが路面の細かな凹凸を吸収するため、無加工のスキャン路面でも滑らかに走れます。
罠は二つ:VehicleDataにはrootVehiclePathrootSharedPathを明示すること、コライダーを生成されたGroundSurfaceCollisionGroupに登録することです。

完成した環境を走るPhysX Vehicleです。スクランブル交差点の南側をまっすぐ走り抜け、歩道の段差をサスペンションで越え、最後は交差点角の構造物に衝突してそのまま停止します——貫通もすり抜けもありません。無加工方針のため写り込んだ通行人も実在障害物として機能します(動画はシミュ時間の約2倍速)。
同じ走行を車載カメラ(車窓)から見たところです。カメラを車体に子付けしているため、サスペンションの揺れごと「ロボットのカメラに映る渋谷」が体験できます。横断歩道を渡り、MAGNET前の角に衝突して止まるまでの一部始終です。

05 オプション:クリーンアップは慎重に

フローターや写り込んだ通行人を後処理で消すことも可能ですが、削除処理はポール・看板・車止めなどの実在物を巻き添えにしやすいため、本手順では行いません。
どうしても消す場合は、参照面に生LiDAR点群を含める・矩形でなくシルエット単位で消す・処理のたびにbefore/afterを同一視点で見比べて消えた物を目視確認する、の3点を守ってください。
衝突・経路検証が目的なら、消さないのが一番安全です。

06 まとめ

LiDAR搭載スキャナの3DGSをIsaac Simのシミュレーション環境にする手順は、この3行に収まります。

限界は二つだけ覚えておけば十分です:LiDARが観測していない領域には面が無いため走行経路は観測済み範囲に限ること、無加工方針のため写り込んだ通行人や停車車両は実在障害物として残ることです。

3DGSをIsaac Simに読み込む基本手順は別の記事にまとめています。

SCAN / 3DGS

ロケハン3Dでは、実在の空間を
シミュレーションに使える形でスキャンします

LiDARと写真を同時に取得するため、見た目と実測形状の両方が揃ったデータになります。
ロボット検証・デジタルツイン・映像制作まで、用途に合わせた形式でお渡しします。

スキャンの相談をする →
Credits / 制作

制作クレジット

中村 航
中村 航Kou Nakamura
ロケハン3D 代表 / 検証・執筆

ロケハン3D(LOCAHUN 3D)代表。
3DGSスキャンとゲームエンジン・AIを組み合わせた撮影ワークフローを研究・検証している。

@Kou45388803 をフォロー →