ポリゴンMeshや点群などの3Dデータを扱うビューア、インターフェイスを提供するライブラリ。VTKなんかよりもずっと手軽に導入できそう。MITライセンス。
Polyscope
Polyscopeは、Meshや点群などの3Dデータ用のC++/Pythonビューア・ユーザーインターフェイスです。Polyscopeを使えば、プログラムや動的なGUIを通じてデータを登録でき、即座に情報を美しく可視化できます。Polyscopeは軽量になるよう設計されており、プログラム全体の「所有権を奪う」ことはなく、既存のコードベースや一般的なライブラリと簡単に統合できます。Polyscopeが目指すのは、たった1行のコードを通じてデータへの便利なビジュアルインターフェイスの提供することです。
Polyscopeではstructureとquantityのパラダイムを採用しています。structureとは、サーフェスMeshや点群など、シーン内の幾何学的オブジェクトのことです。quantityとは、スカラー関数やベクトル場など、structureに関連付けられたデータのことです。
任意の構造や数量を登録すると、Polyscopeはそれらをインタラクティブな3Dシーンに表示し、可視性の切り替え、データのカラーマッピングとマップの調整、シーン内をクリックして数値を照会する「ピッキング」等、定型的問題を処理できます。
ソースコードはGitHubで配布されている↓
https://github.com/nmwsharp/polyscope
コード例を見ると、3Dデータの可視化GUIをかなりお手軽に実現できるようです↓
Polyscopeでデータを可視化する簡単なワークフローは以下のようになります:
C++:#include "polyscope/polyscope.h" #include "polyscope/surface_mesh.h" // Initialize polyscope polyscope::init(); // Register a point cloud // `points` is a Nx3 array-like container of points polyscope::registerPointCloud("my points", points) // Register a surface mesh structure // `meshVerts` is a Vx3 array-like container of vertex positions // `meshFaces` is a Fx3 array-like container of face indices polyscope::registerSurfaceMesh("my mesh", meshVerts, meshFaces); // Add a scalar and a vector function defined on the mesh // `scalarQuantity` is a length V array-like container of values // `vectorQuantity` is an Fx3 array-like container of vectors per face polyscope::getSurfaceMesh("my mesh")->addVertexScalarQuantity("my_scalar", scalarQuantity); polyscope::getSurfaceMesh("my mesh")->addFaceVectorQuantity("my_vector", vectorQuantity); // View the point cloud and mesh we just registered in the 3D UI polyscope::show();Python:
import polyscope as ps # Initialize polyscope ps.init() ### Register a point cloud # `my_points` is a Nx3 numpy array ps.register_point_cloud("my points", my_points) ### Register a mesh # `verts` is a Nx3 numpy array of vertex positions # `faces` is a Fx3 array of indices, or a nested list ps.register_surface_mesh("my mesh", verts, faces, smooth_shade=True) # Add a scalar function and a vector function defined on the mesh # vertex_scalar is a length V numpy array of values # face_vectors is an Fx3 array of vectors per face ps.get_surface_mesh("my mesh").add_scalar_quantity("my_scalar", vertex_scalar, defined_on='vertices', cmap='blues') ps.get_surface_mesh("my mesh").add_vector_quantity("my_vector", face_vectors, defined_on='faces', color=(0.2, 0.5, 0.5)) # View the point cloud and mesh we just registered in the 3D UI ps.show()Polyscopeは、楽に利用できるよう設計されています。ビルドは簡単で、10行未満のコードで視覚化できます。
C++ではいくつかのテンプレートマジックにより、既に使用しているデータ型をPolyscopeで受け入れることができるでしょう!
関連記事
SONY製のニューラルネットワークライブラリ『NNabla』
ZBrushのお勉強
MeshLab:3Dオブジェクトの確認・変換に便利なフリーウ...
無料で使える人体3DCG作成ツール
CNN Explainer:畳み込みニューラルネットワーク可...
ZBrush 4R7
ZBrushでアヴァン・ガメラを作ってみる 下半身のバランス...
Open Shading Language (OSL)
CGのためのディープラーニング
映画『シン・仮面ライダー』 メイキング情報まとめ
OpenCVのfindEssentialMat関数を使ったサ...
チャットツール用bot開発フレームワーク『Hubot』
書籍『The Art of Mystical Beasts』...
UnityでPoint Cloudを表示する方法
Google App EngineでWordPress
Unity MonoBehaviourクラスのオーバーライド...
ZBrushでアヴァン・ガメラを作ってみる 甲羅のバランス調...
ラクガキの立体化
ROSの薄い本
Photo Bash:複数の写真を組み合わせて1枚のイラスト...
Raspberry PiのGPIOを操作するPythonライ...
ZBrush 4R8 リリース!
WordPress on Google App Engine...
ZScript
トランスフォーマーの変形パターンを覚えるのは楽しいと思うんだ
ZBrush 2018へのアップグレード
Mixamo:人型3Dキャラクターアニメーション制作サービス
ゴジラ三昧
3D復元技術の情報リンク集
OpenCVで顔のランドマークを検出する『Facemark ...
Webサイトのワイヤーフレームが作成できるオンラインツール
『シン・ゴジラ』のコンセプトアニメーションのメイキング動画が...
ZBrushでアヴァン・ガメラを作ってみる 下アゴの付け根を...
映画『ゴジラ-1.0』 メイキング情報まとめ
ZBrush キャラクター&クリーチャー
続・ディープラーニングの資料
『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン ...
OpenCV
Google Colaboratoryで遊ぶ準備
書籍『3次元コンピュータビジョン計算ハンドブック』を購入
オープンソースのテクスチャマッピングシステム『Ptex』
NeRF (Neural Radiance Fields):...


コメント