3Dスキャンアプリ「Scaniverse」で、2024年3月に3D Gaussian Splattingに対応したSplat機能が搭載されました。スキャンした点群データはPLY形式でエクスポートすることが可能です。
このPLY形式のデータをBlenderで表示してみたいと思ったのですが、結構いろんなトラップにハマって時間がかかってしまったので、上手くいった2つの方法をここに書き残しておきます。
ハマりポイント
「PLYデータをBlenderで表示」することに関するYouTubeや記事は調べると結構出てくるのですが、その通りにやっても上手くいかない・・・ということが多かったです。
大きな原因は「Blenderのバージョンが合っていなかったこと(初歩的なことではありますが…チュートリアルにバージョンが明記されていないことがある)」「PLYデータの仕様が異なること(同じPLYファイルでも、他のスキャンアプリとScaniverseで仕様が異なる場合がある)」という2点だったと思います。
そういうハマり方をしないように、本記事では2024年7月現在で私が成功した方法をバージョンを記載しながら書き進めていきます。
方法1:アドオン(3D Gaussian Splatting Blender Addon)を使用
一つ目の方法です。この方法が最も簡単で見え方もきれいですが、BlenderのCylclesでしか表示できません。
最大の注意ポイントはBlenderのバージョンです。現時点(2024.07.22)だと、Blender4.0でしか表示ができません。その前後のバージョン、例えば3.6や4.1だと上手くいきませんでした。
ただし、一度4.0で表示して保存したblendファイルを他のバージョンで開くことは可能のようです。少なくとも3.6、4.2LTSで開くことはできました。
4.0が無い方は、Blenderの過去バージョンダウンロードサイトから、blender-4.0.2をダウンロードしてください。
アドオンのインストール
まず、下記URLより 3D Gaussian Splatting Blender Addon をダウンロードします。
ダウンロードURL:https://github.com/ReshotAI/gaussian-splatting-blender-addon
画面右上の<>Code と書いてある緑色のボタンをクリックし、DOWNLOAD ZIP からZIPファイルをダウンロードします。
ZIPファイルを解凍し、blender-addonというフォルダをZIPで圧縮します。(Windows10の場合はフォルダを右クリック > 送る > 圧縮(ZIP形式)フォルダー)
Blender4.0.2を起動し、Edit > Preference > Add-ons > Install から上記の blender-addon.zip を選択し、3D Gaussian Splattingアドオンが表示されたらチェックを入れます。
PLYファイルの読み込み
画面右側の 3D Gaussian Splatting のタブから、Import Gaussian Splatting を選択してPLYデータを指定すると、画面に点群が表示されます。
レンダリングモードをCyclesにすると、色付きの点群データが表示されます。Scaniverse上での見た目と近く、きれいに表示されていると思います。
周りの余計な点群を削除して調整するとこんな感じになります。
方法2:PLYデータのコンバートツール(3D Gaussian Splatting Converter)を使用
こちらの方法はコマンドプロンプトを使うので、人によってはちょっとハードル高く感じるかもしれません。
Python3.8をインストール
まず Python3.8 をインストールします。こちらの記事が参考になりました。Windows版Pythonのインストール
コンバーターでPLYデータを変換
次に、3D Gaussian Splatting Converterを使ってPLYデータを変換します。こちらの記事が参考になりました。3D Gaussian Splatting Converter の使い方
Python3.8インストール後、コマンドプロンプトから下記コマンドでコンバーターをインストールします。
pip install git+https://github.com/francescofugazzi/3dgsconverter.git
入力するPLYファイルがあるフォルダに移動し、アウトプットファイル名を指定して下記コマンドでコンバートします。注意点として、ScaniverseでエクスポートしたPLYデータのファイル名が「Scaniverse 2024-07-22 XXXXXX.ply」のように半角スペースが入ったファイル名になっていますが、これだとコマンドが上手く機能しないので、「input.ply」など半角スペースや記号が入っていない名前にリネームしておいてください。
3dgsconverter -i input.ply -o output.ply -f cc --rgb
Blenderでの読み込みと設定
以下ではBlender4.2LTSを使用しています。File > Import > Stanford PLY (.ply) から、コンバート後のPLYデータをBlenderに読み込みます。読み込む際、Up Axis を -Y に設定しておきます。
読み込んだオブジェクトを選択し、Data(緑色の逆三角のアイコン) > Attributes の中(スクロールして一番下の方)に Col という項目があることを確認します。これがあれば、コンバートは上手くいっています。
ジオメトリノードを下記のように設定します。これで点群を粒子の集まりとして表示することができます。
マテリアルを下記のように設定します。シェーダーノードのAttributeのNameには Col と文字入力します。これで粒子に色を付けることができます。
周りの余計な点群を削除して調整するとこんな感じになります。
ジオメトリノードとマテリアルの設定については、こちらの記事が参考になりました。Blenderで点群(.ply)を色付きでレンダリングする
まとめ
Scaniverse SplatのPLY点群データをBlenderで色付き表示する2つの方法について紹介しました。きれいに手早く表示するなら Blender4.0 と 3D Gaussian Splatting Blender Addon を使う方法がおススメです。
参考動画
3D Gaussian Splatting Blender Addonの使い方。4:00辺りから。(英語です)
以上.