ポリゴン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で受け入れることができるでしょう!
関連記事
iPadをハンディ3Dスキャナにするガジェット『iSense...
UnityからROSを利用できる『ROS#』
映画『シン・ウルトラマン』 メイキング記事まとめ
Point Cloud Utils:Pythonで3D点群・...
フィクションに登場するUIデザインのまとめサイト
ZBrushで手首のモデリングをリファイン
『ローグ・ワン/スター・ウォーズ・ストーリー』のVFXブレイ...
Raspberry Pi 2のGPIOピン配置
なんかすごいサイト
Point Cloud Consortiumのセミナー「3D...
デザインのリファイン再び
ZBrush4新機能ハイライト 3DCG CAMP 2010
ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー
ZBrushでアヴァン・ガメラを作ってみる 歯茎を別パーツへ...
SculptrisとBlenderで作ったGodzilla ...
ZBrushでゴジラ2001を作ってみる 目元だけ作り込んで...
Unity ARKitプラグインサンプルのドキュメントを読む
クラスの基本
ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作...
ZBrushでゴジラ2001を作ってみる 姿勢の変更
イタリアの自動車ブランドFiatとゴジラがコラボしたCMのメ...
3D映画のポストプロダクション 2D-3D変換
ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...
iOSデバイスのためのフィジカル・コンピューティングツールキ...
ZBrushでゴジラ2001を作ってみる 身体のバランスを探...
『スター・ウォーズ/スカイウォーカーの夜明け』のVFXブレイ...
ジュラシック・パークのメイキング
トランスフォーマー :リベンジのメイキング (デジタルドメイ...
Javaで作られたオープンソースの3DCGレンダラ『Sunf...
Paul Debevec
書籍『仕事ではじめる機械学習』を読みました
Raspberry PiのGPIOを操作するPythonライ...
MPFB2:Blenderの人体モデリングアドオン
ZBrushで作った3Dモデルを立体視で確認できるVRアプリ...
ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み
Unity Scriptコーディング→Unreal Engi...
2012のメイキングまとめ(途中)
Unityの各コンポーネント間でのやり取り
libigl:軽量なジオメトリ処理ライブラリ
OpenCVの三角測量関数『cv::triangulatep...
Geogram:C++の3D幾何アルゴリズムライブラリ
MythTV:Linuxでテレビの視聴・録画ができるオープン...


コメント