最近Pythonで2次元/3次元問わずデータ処理を行うことが多いんですが、特に3次元データの方のライブラリが色々ありすぎて頭の処理が追いつかないのでちょっとだけ整理していこうと思います。
(随時更新予定…)
PyVista
- https://github.com/pyvista/pyvista
- Visualization Toolkit (VTK)をnumpyでラップした高レベルのAPI
- VTK・SLT・OBJ・PLYなど一通りメッシュが読める
- 結構GUIツールが揃っている感じ?
- 点群とメッシュの変換はできるらしい
- シミュレーション・レイトレーシング・GISで使えるとかなんとか
Leafmap
- https://github.com/giswqs/leafmap
- lasを読み込める
- plyもいける?
- lasを読み込んだ時はlaspyのインスタンスが出来上がる
- 2次元データ処理寄り
Open3D
- https://github.com/isl-org/Open3D
- 3Dデータなら大体ビジュアライズできそう
- 機械学習もサポート
- 3Dデータ処理もいける
Trimesh
- https://github.com/mikedh/trimesh
- 点群とメッシュは大体読めそう?
- ベースの部分に可視化機能はついていないらしい
- pygletと合わせて可視化するっぽい?
- 統計分析・機械学習の前処理によく利用されるっぽい
- kaolinとかpyrenderとかいろんなライブラリの基盤として利用されている
pyntcloud
- https://github.com/daavoo/pyntcloud
- 名前からしてめっちゃ点群をどうこうできそうなライブラリ
- なんだかんだで色んな3D形式を操作できそう
- 分析と前処理がメインっぽい
- 可視化バックエンドとしてthree.jsが選べる
- Open3DやPyVistaと統合が簡単そう
- ボクセル化・特徴点抽出・間引き・外れ値の検出・サブサンプリングなど簡単にできる
結論
- (大体内部ではnumpyが使われている)
- 可視化・ファイル形式変換くらいならとりあえずLeafmap + open3D使っとけばなんとかなりそう
- 点群の大規模な分析になるならpyntcloud + open3Dかな?
- Pythonで3Dデータを利用したシミュレーションなどやるならPyVista
- 3Dデータを綺麗に表示させたいならpyrenderかな?Trimeshを生で使う必要はなさそう
これ以上ライブラリ覚えれないので、完結としたい。