VRChat Gaussian Splattingの使い方

VRChat Gaussian Splatting』がMichaelMoroz氏により公開されました!

ついにVRChatへも3DGS (3D Gaussian Splatting ガウシアンスプラッティング) のデータが持っていけるように。

早速これを使ったVRChatワールドも作成してみました。
鳥取『米子城跡VR』

プロジェクト作成手順

通常通りVCCで新規プロジェクトを作成。

VRChatGaussianSplattingのリポジトリにアクセス。
https://github.com/MichaelMoroz/VRChatGaussianSplatting

リリースページへアクセス。

.unitypackageファイルをダウンロード。

Unityへ読み込む。

ここで以下のエラーが出る場合がある。

Assets\VRChatGaussianSplatting\Scripts\Importer\GaussianFileReader.cs(46,35): error CS0227: Unsafe code may only appear if compiling with /unsafe. Enable “Allow ‘unsafe’ code” in Player Settings to fix this error.

これはエラーメッセージにあるように、Project Settings > Player > Allow ‘unsafe’ Code を有効にする。

プロジェクトにサンプルシーンがあるのでこれを開いて確認する。

開くと描画が発光したような破綻した見た目になっているが-

シーンを実行すると正しく描画される。

ReadmeやWarningの書かれているように、MSAAはオフが推奨との事。

 VRChatでこれを使用する場合、MSAAをオフにすることをお勧めします。パフォーマンスが大幅に低下し、スプラットの視覚的な違いがなくなるためです。

独自のplyを変換する手順

メニューに「Gaussians Splatting」が出来ているので、ここからply変換用のダイアログを表示する。

変換したいplyファイルと変換後のデータを保存するフォルダを指定する。

Importボタンを押して読み込む。

しかしここで失敗する場合がある。

Outputフォルダの指定をUnityプロジェクト外からの絶対パスで指定するとこのエラーになる。
任意のフォルダに書き出したい場合はAssets以下のパスで指定する。

NGの例)

OKの例)

すると変換に成功する。

postshotで作成したplyでも問題なく変換できた。

Splat数はどの程度まで変換できるのかも試してみました。
(2025/07/15時点の検証結果)

20M Splat:❌️Out of memory 表示

16M Splat:❌️Unityがクラッシュ
12M Splat:❌️Unityがクラッシュ
10M Splat:❌️Unityがクラッシュ

8M Splat:⭕️変換成功

現状では8M Splatが上限か?

独自plyデータのシーンへの適応

このデータをシーンに適応させるには、すでに設定が完了しているVRChat Gaussian Splattingのサンプルシーンを編集してしまうのが簡単。

Assets > VRChatGaussianSplatting にある Example Scnene を開き、
Hierarchy の GaussianSplatting > GaussiansSplats に新規のGameObjectを作成し、
Mesh FilterとMesh Rendererのコンポーネントを追加する。

Mesh Filter には VRChat Gaussain Splatting > Resources > Meshes にあるメッシュを指定する。

Mesh Renderer には前の手順でplyを変換したフォルダ内にあるGaussianSplatMaterialマテリアルを指定する。

すると画面上に表示されるので向きなどを調整する。

続いてGaussian Splat Renderer を編集する。

1. Gaussian Splat Rendererを選択
2. SplatObjects を + で追加
3. 前手順で作成したSplatのGameObjectを追加
4. 初期表示させたいオブジェクトの番号に変更

最後にシーンを実行する。

以上!

その他の設定

遠景を表現したい場合

Max Sort Distance の値を上げると遠景まで表現出来た。
サンプルシーンではデフォルトが200になっていたが、これを上げていった比較が以下。

100

1,000

10,000

100,000