ブログ

レンダリングからガウシアンスプラットを作ってみた

レンダリングからガウシアンスプラットを作ってみた

最近起こったガウシアンスプラット
生成工程のブレイクスルーを知っていますか?

最近フォトグラメトリ界隈では、3Dガウシアンスプラット(3DGS) の生成が流行しているのをご存知ですか?
最近以下のブレイクスルーがあり

  • 360度(Spherical) VRムービーカメラの普及 (撮影労力1/6に)(DJI/GoPro/Insta 360/THETA)
  • Agisoft Metashapeで Spherical カメラの直接アライメントが可能に (しかもレンズキャリブレーション不要)
  • LichtFeld-Studio,COLMAPでSphericalカメラ画像で直接トレーニング可能に (2026年7月)

3Dガウシアンスプラットの生成がかなりお手軽になったのです。

お手軽3DGS

お手軽3DGSの時代

そこで考える訳です。実写でそこまで簡単にできるなら V-Ray などの「3DCGレンダリング」を 3DGS にできたら、面白いのでは!?

3Dシーンを3DGSにできれば、超高密度なシーンもとても簡単にリアルタイムビューイングできますし、データの再利用も簡単です。

現実世界のガウシアンスプラットも楽しいですが、デジタルデータのガウシアンスプラットもまた利用価値が沢山ありそうです。

デジタルの3DGS化なら、レンダラーから3DGSを直接生成すればいいんじゃね!?

多くの方がそう考える事でしょう。私もそうでした。

いろいろ調べてみると、そうは簡単ではないのです。3DGS は「空間上に重なった半透明のポイント」に「複数視点からの情報」を AI トレーニングによって詰め込んだ物です。

なので、レンダラーから3DGSを生成しようとしても、ポイントクラウドを発生させて、ポイントクラウドの半透明の重なりによって複数視線からの見える情報を最適化していく工程が必要になります。単にポイントクラウドの視線情報をレイトレースして格納すれば良い訳ではないのです。

結局「画像として多視点をレンダリングしてトレーニングした方が効率的では?」となる訳です。

将来的には3Dアプリからガウシアンスプラットを直接生成できる3Dアプリケーションも登場するでしょう。しかし中でやっているのは「多視点レンダリング」「ポイントクラウド生成」「トレーニング」を全自動化している、という内容になるかと思います。

今回使用するソフト

3ds Max 2027

他のバージョンはテストしていませんが使えるはずです。

V-Ray と Chaos Vantage

360度の Spherical パノラマがレンダリングできるレンダラーなら何でも大丈夫ですが、ここでは Chaos Vantage でレンダリングします。理由は 2K 1枚を10秒以内でレンダリングできる事と、コマンドライン(スクリプト)からレンダリングを実行できる事です。

Agisoft Metashape

弊社で扱っているフォトグラメトリソフト。スタンダード版でも可能ですが、結果のスケールと向きが不定になります。プロフェッショナル版では、カメラ位置の入力、スケール調整、向き(Y-up)調整ができます。

LichtFeld-Studio(リヒトフェルト・スタジオ)

$30〜からのカンパウェアです。(オープンソースなので、自分でBuildすれば無償です)

CGからガウシアンスプラットを生成してみる

難しい話はおいておいて、AIの手を借りていろいろな試行錯誤の末、弊社で 3ds Max 用のユーティリティ「path2flightPlan」を作成しました。
今回はこちらのユーティリティを使って、CGからガウシアンスプラットを生成します。

ダウンロード:path2flightPlan.ms

Version: 2026080703

免責事項

このスクリプトは無償でご利用頂けます。商用利用も可能です。ソースが見えるので改造も自由ですが、無許可での再配布はご遠慮ください。

業務用に作成した訳ではないので、多様なパターンでのデバッグは行っていません。このスクリプトによる不具合が発生しても、株式会社オークは責任は持ちませんので、ご理解の上でご利用ください。

スクリプトの起動方法

path2flightPlan.ms を 3ds Max のウィンドウにドラッグ&ドロップするか、
3ds Max のユーティリティパネル > MAXScript >「スクリプトを起動」から path2flightPlan.ms を選択しても起動できます。

path2flightPlan の起動画面

path2flightPlan の起動画面

フライトプラン(スプライン)の作成

まずガウシアンスプラット化したいシーンを用意します。

トップビューでスプラインを使ってラインを描きます。ドローンの軌跡(フライトプラン)を意識して描くと良いでしょう。スプラインの頂点が撮影ポイントになります。

トップビューでスプラインを描き、ドローンの軌跡(フライトプラン)を作成します

トップビューでスプラインを描き、ドローンの軌跡(フライトプラン)を作成します

 

軌跡は、基本的に 低・中・高の3段階の高さでまんべんなく作成します。死角になりそうな場所には、新しいスプラインを描いてください。
スプラインは幾つでも作成してかまいません。交差しても構いません。とにかく満遍なく撮影ポイントを配置する事が重要です。

スプラインができれば、後は処理するだけなので、ほぼ完成した様な物です。

1フライトプラン生成

スクリプトの「①フライトプラン生成」を見ます。

まず、描いたフライトプランのスプラインを全て選択して「選択を追加」ボタンを押します。選択しているスプラインがリストに追加されます。

リストの下に、追加された全パスの数と合計の頂点数が表示されます。

「選択を追加」でスプラインをリストに追加。全パス数と合計頂点数が表示されます

「選択を追加」でスプラインをリストに追加。全パス数と合計頂点数が表示されます

 

セグメント分割数」を引き上げると、スプラインのセグメントを分割して撮影ポイントを増やす事ができます。なので、荒くスプラインを描いて、セグメント分割を2くらいに設定して撮影ポイントを倍増させるのがオススメです。

ルックアット」を使うと、カメラを特定のオブジェクトに注視させる事ができます。スフィリカルカメラの場合、カメラの向きはあまり関係無いのですが、やはり見せたい物をレンダリングの中央に持ってきた方が、ガウシアンスプラットが綺麗になる?ような気がします。

このスクリプトはスフィリカルカメラ以外にフレームカメラ(ピンホール)でもレンダリングできるので、その場合はルックアットで必ず被写体の中心にカメラを向けてください。

フライトプラン生成」ボタンを押すと V-Ray フィジカルカメラが生成されます。この名前は下にある「カメラ名(-camera)」の部分で決まります。

「フライトプラン生成」で V-Ray フィジカルカメラが生成されます

「フライトプラン生成」で V-Ray フィジカルカメラが生成されます

生成されたカメラには、1フレーム=1撮影ポイントとなるアニメーションが付いています。3ds Max のシーンの長さ(フレーム数)も、全撮影ポイント数に自動設定されます。(撮影ポイントが351なら、アニメーションフレームは 0〜350 フレーム)

アニメーションスライダーを動かすと、カメラがパスの上を移動するのが確認できると思います。

カメラがフライトプラン上を移動していきます

カメラがフライトプラン上を移動していきます

2Chaos Vantage でレンダリング

このスクリプトには Chaos Vantage でパノラマレンダリングする機能()も付けています。

①でカメラを生成したら「.vrscene を書き出し」ボタンを押して、V-Ray シーンファイルを任意の場所に保存します。

vrscene を書き出します

vrscene を書き出します

次に以下をセットします

.vrscene シーンファイル 書き出した .vrscene ファイルをセットします。(.vrscene を書き出しすると、自動的に書き出したシーンファイルへのパスがセットされます)
Vantage.exe Chaos Vantage の実行ファイル(exe)のパスをセットします。デフォルトで C:\Program Files\Chaos\Vantage\vantage.exe がセットされています。(Chaos Vantage のデフォルトインストール場所)
出力フォルダ レンダリングイメージの出力先フォルダをセットします。
カメラ名 「フライトプラン生成」ボタンを押した時に生成されるカメラの名前です。このカメラで Chaos Vantage のレンダリングが実行されます。
画像ベース名
拡張子/連番桁数
レンダリングイメージの接頭辞とファイルフォーマット、連番の桁数です。例えばベースに shot.png、桁数 5 を指定すると、レンダリング出力は shot.00000.png, shot.00001.png, shot.00002.png の連番ファイルで出力されます。Chaos Vantage は .exr / .png / .jpeg のみをサポートしています。
解像度 レンダリング解像度を指定します。プリセットの 2K〜8K とカスタムを設定できます。
`Samples Chaos Vantage のレンダリングサンプル数です。デフォルトは 100 です。
追加オプション Chaos Vantage のコマンドラインレンダリングの引数を任意で追加できます。
カメラモード Spherical 360 パノラマ」もしくは「通常フレームカメラ」(ピンホールカメラ)を選択できます。

Vantage レンダージョブ実行」ボタンを押してレンダリングを実行すると、Chaos Vantage でレンダリングが実行されます。(デノイザー有効、ビネット無効、被写界深度無効 で実行されます)

おまけツール:差分レンダリング

差分レンダリング」ボタンは、後でカメラが不足している事に気づいて、セグメント分割数やスプラインの頂点を増やしてフライトプラン(カメラ)を再作成した場合に、既存のレンダリングを飛ばして増分だけをレンダリングする機能です。しかし、あまりテストしていないのでうまく動かないかもしれません。
差分一致許容距離」は、この距離内の増分カメラは増分から除外する機能です。

3Metashape でのアライメント

Metashape はスタンダード版でも構いませんが、プロフェッショナル版とワークフローが異なります。

Metashape スタンダード版の場合

スタンダード版の場合、スクリプトの③は使用しません。カメラの座標入力ができない為、生成されるデータは「スケールなし」「向きなし」となります。つまり、生成される結果が「すごく小さい or 大きい」「あらぬ場所を向いている」となります。

これは、LichtFeld-Studio でガウシアンスプラット生成後に、スケールや向きを調整する必要がある事を意味します。

Metashape での手順は至極簡単です:

  1. レンダリングしたイメージが入っているフォルダをドラッグ&ドロップして読み込みます
  2. ツール > カメラキャリブレーション でカメラタイプを「スフィリカル/球」にセットします
  3. ワークフロー > 写真のアライメント で精度を「」もしくは「最高」を選択して実行します

 

アライメントが終わったら

  • ファイル > エクスポート > ポイントクラウドをエクスポート から Stanford PLY(*.ply)形式でポイントクラウドをエクスポートします
  • ファイル > エクスポート > カメラをエクスポート から Agisoft XML(*.xml)形式でカメラをエクスポートします

アライメントできないカメラ」は多くの場合、前後のレンダリングの視差ギャップが大きい事に原因があります。なので、撮影間隔をもっと短くするか、アライメントしない場所の撮影密度を高めてください。

Metashape プロフェッショナル版の場合

プロフェッショナル版の場合、カメラの座標を入力できるので「スケールの調整」「向きの調整」ができます。
スクリプトのでは、プロフェッショナル用に Y-Up 調整スケール の調整パラメーターがあります。

リファレンスCSVの書き出し」ボタンを押すと、3ds Max のカメラ情報を CSV 形式で書き出します。

Metashape Professional用の カメラCSV書き出し

Metashape Professional用の カメラCSV書き出し

Metashape での手順:

  1. レンダリングしたイメージが入っているフォルダをドラッグ&ドロップして「シングルカメラ」として読み込みます
  2. 座標データペインで座標インポートボタンを押し、3ds Max スクリプトで書き出した .csv ファイルを読み込みます
  3. 座標設定で Local Coordinates (m) になっている事を確認し、「カメラ(m)」精度を 0.005 等の極端に低い値に設定します。つまり、カメラの座標値はアライメントしなくても 3ds Max で予め分かっているので絶対値になります。カメラ精度(deg)[カメラの向き]はあまり影響ありませんが、とりあえず 1 等の値をセットして CSV からの精度を強くします。
  4. ツール > カメラキャリブレーション でカメラタイプを「スフィリカル/球」にセットします
  5. ワークフロー > 写真のアライメント で精度を「」もしくは「最高」を選択し、座標事前選択を「ソース」にセットして実行します

 

アライメントが終わったら

  • ファイル > エクスポート > ポイントクラウドをエクスポート から Stanford PLY(*.ply)形式でポイントクラウドをエクスポートします
  • ファイル > エクスポート > カメラをエクスポート から Agisoft XML(*.xml)形式でカメラをエクスポートします

アライメントできないカメラ」は多くの場合、前後のレンダリングの視差ギャップが大きい事に原因があります。なので、撮影間隔をもっと短くするか、アライメントしない場所の撮影密度を高めてください。

スクリプトで書き出す CSV ファイルは カメラ名=レンダリング画像ファイル名です。つまり、レンダリングの接頭辞が shot の場合、shot.00000.png がカメラ名になります。

4LichtFeld Studio 用のファイルを作成する

Metashape で .ply.xml ファイルを作成したら、スクリプトの で LichtFeld-Studio が読み込める transforms.json 形式を作成します。

Metashape cameras.xml Metashape からの camera の .xml ファイルをセットします
Metashape からの点群 Metashape からのポイントクラウド .ply ファイルをセットします
写真フォルダ レンダリングした画像のあるフォルダをセットします

最後に「transforms.json 書き出し」ボタンで transforms.json を書き出します。

tranform.jsonの作成

tranform.jsonの作成

LichtFeld Studio で 3DGS をトレーニング

transforms.json まで準備できたら、後は LichtFeld Studio で 3DGS をトレーニングするだけです!

LichtFeld Studio を起動して、transforms.json をドラッグ&ドロップして読み込みます。Metashape からの初期点群とカメラ位置が読み込まれていれば OK です。

設定すべきパラメーター

Iterations
イテレーション
簡単に説明すると「学習・最適化を何回繰り返したか」です。おおよそ 20,000〜30,000 が目安です。
Max Gaussians ガウシアンスプラット生成工程で、補間的に生成できるポイントの最大数をセットします。GPU メモリが少ない場合、あまり大きすぎるとクラッシュする可能性があるので、ご利用の環境に合わせて数値を減らしてください。
SH Degrees 見る方向によって色や明るさが変わる表現を、どこまで細かく持たせるかです。反射や透明が多くあるシーンでは 3。反射や透明が少ない場合は 2 程度でも十分なケースが多いです。こちらはデータ量に「かなり影響」するので、必要最小限にしましょう。
GUT 3DGUT(3D Gaussian Unscented Transform)です。360 Spherical パノラマを学習に使う場合、必ず有効にします。

Start Training(トレーニングを開始)ボタンを押して、トレーニングを開始しましょう!

LichtFeld Studio のトレーニングパラメーター設定

LichtFeld Studio のトレーニングパラメーター設定

完成

ガウシアンスプラットが完成したら、ファイル > エクスポートPLY(標準)もしくは SPZ 形式(データが PLY より小さい)で保存します。

ブラウザで見る

LichtFeld Studio では、エクスポートから「HTML ビューワー」形式で保存できます。

出力された HTML をブラウザで開くだけで、ガウシアンスプラットが参照できます。ファイルサイズも比較的小さいので、十分データ共有に使えますね。

アプリで使う

3ds Max 2027.2.ply.spz をドラッグ&ドロップするだけで、ガウシアンスプラットとして利用できます。(V-Ray での 3ds Max の 3DGS レンダリングは、V-Ray 7 for 3ds Max, update 4, hotfix 2(7.40.04)で初期対応しました

3ds Max 2027.2 でガウシアンスプラットを表示

3ds Max 2027.2 でガウシアンスプラットを表示

 

V-Ray では VRayGaussiansGeom オブジェクトを作成して .ply を読み込んでレンダリングできます。(.spz はアップデートで対応予定)

V-Ray の VRayGaussiansGeom でのレンダリング

V-Ray の VRayGaussiansGeom でのレンダリング

弊社で作成したガウシアンスプラットデータ

SuperSplat などの WEB サービスを使うと、自社 WEB サイトに掲載もできます。

以上です!

現在は実写ソースの3Dガウシアンスプラットが殆どですが、CG データをソースとしたガウシアンスプラットが作成できる事で、また新しい用途が考えられますね!

次回は、CG データソースならではのガウシアンスプラットについて試したレポートを掲載したいと思います。

補足

  • ②のレンダリングは、V-Ray や Corona、Arnold の様な非リアルタイム系で 360度 Spherical レンダリングしても、まったく問題ないです。

関連記事

ページ上部へ戻る