【Blender】Scaniverse SplatのPLY点群データを色付き表示する

Blender

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.03D Gaussian Splatting Blender Addon を使う方法がおススメです。

参考動画

3D Gaussian Splatting Blender Addonの使い方。4:00辺りから。(英語です)

以上.

タイトルとURLをコピーしました