3Dポリゴンジオメトリを扱うライブラリは古よりC++など色んな言語向けに揃っておりますが、このtrimeshは全てPythonで書かれたライブラリ。
trimesh
Trimeshは、全てのコードがPythonバージョン3.7以降で書かれたライブラリで、三角形Meshをロードして使用するために開発され、特に水密サーフェイスの扱いに重点を置いています。
このライブラリの目的は、ShapelyライブラリのPolygonオブジェクトのようなスタイルで、簡単に操作・分析できて十分にテストされた豊富な機能を持つTrimeshオブジェクトを提供することです。
このライブラリのAPIは比較的安定していますが、完全ではなく保証されているものではありません。trimeshを使って何かを展開する計画がある場合は、特定のバージョンをインストールすることをお勧めします。
プルリクエストは大歓迎で、すぐに対応します!貢献を希望する方向けに潜在的な改良点の最新リストがありますが、リストにない提案も歓迎します。簡単な開発と貢献のためのガイドをご参照ください。
ソースコードはGitHubにある。
trimeshはNVIDIAのKaolinでも使われてるらしい。
ここ数年、やたらとPython環境から使えるライブラリが重宝される理由の1つに、研究・教育目的だと処理の過程をそのままJupyter Notebook形式で書いてGoogle Colabとかで共有して説明できるメリットがあるからかもね。
機能
- バイナリー/ASCII STL、Wavefront OBJ、ASCII OFF、バイナリー/ASCII PLY、GLTF/GLB 2.0、3MF、XAML、3DXML形式などのMeshインポート
- DXF・SVGファイルから2D・3Dベクターパスのインポート、2D・3DベクターパスのDXF・SVGファイルへのエクスポート
- GMSH SDKインストール済みの場合、幾何学ファイル(BREP, STEP, IGES, INP, BDFなど)のインポート
- バイナリーSTL、バイナリーPLY、ASCII OFF、OBJ、GLTF/GLB 2.0、COLLADA形式などへのMeshエクスポート
- GMSH SDKインストール済みの場合、Meshファイル(Abaqus INP、Nastran BDFなど)をエクスポート
- pygletを使用したMeshのプレビュー、Jupyter Notebookでthree.jsを使用したインライン表示
- MD5、zlib CRC、xxhashを使用したnumpy配列の自動ハッシュ化と変更追跡
- ハッシュから検証された計算値の内部キャッシング
- Face隣接性、Face角度、頂点の欠陥などの計算
- クロスセクション、つまり3Dプリンティングで使用されるスライス操作の計算
- Meshを1つまたは複数の任意平面でスライスしたサーフェイスを返す
- networkx、graph-tool、scipy.sparseを使用したFaceの接続性に基づくMeshの分割
- 体積、重心、慣性モーメント、慣性ベクトルの主要成分を含む質量特性の計算
- 三角形の巻き方、法線、四角形/三角形の穴など簡単な問題の修復
- Meshの凸包
- 回転/移動/テッセレーション不変識別子の計算と重複Meshの検出
- Mesh水密、凸などであるかどうかの判別
- Mesh表面の均一サンプリング
- 位置、三角形インデックスなどを含むRay-meshクエリ
- OpenSCADやBlenderをバックエンドとして使用したMeshのブーリアン操作(交差、結合、差) 注:一般的にMeshブーリアンは遅く信頼性が低い
- 水密Meshのボクセル化
- Gmsh SDKを使用したボリュームMesh生成(TETgen)
- ラプラシアン平滑化アルゴリズム(クラシック、タウビン、ハンフリー)を使用した水密Meshの平滑化
- MeshのFaceの細分化
- Meshの最小体積方向バウンディングボックスの近似
- 最小体積バウンディング球の近似
- Mesh表面上の最近接点と符号付き距離(SD)の計算
- 良好に構築されたMesh内外の点を符号付き距離を使用して判別
- Trimeshオブジェクトのサブクラスであるプリミティブオブジェクト(Box, Cylinder, Sphere, Extrusion)が全て同じ機能(慣性、ビューアなど)を持つ
- レンダリング(pygletのウィンドウ、jupyter notebookのthree.js、pyrender)やエクスポートに対応したシンプルなシーングラフとtransformのツリー
- 座標変換、ベクトルの単位化、ベクトルの整列、numpy配列の変更の追跡、行のグループ化など、多くのユーティリティ関数
関連記事
映画から想像するVR・AR時代のGUIデザイン
このブログのデザインに飽きてきた
ドラマ『ファーストクラス』のモーショングラフィックス
BlenderProc:Blenderで機械学習用の画像デー...
3Dスキャンしたテクスチャから照明を除去するUnityツール...
世界一下品なクマと世界一紳士なクマ
Adobe Photoshop CS4 Extendedの3...
ZBrushのお勉強
Unityで360度ステレオVR動画を作る
書籍『ゼロから作るDeep Learning』で自分なりに学...
Raytracing Wiki
3Dグラフィックスの入門書
SIGGRAPH 2020はオンライン開催
ZBrush 2021.6のMesh from Mask機能...
ZBrushで仮面ライダー3号を造る 仮面編 リファレンス画...
3DCGのモデルを立体化するサービス
ZBrushでアヴァン・ガメラを作ってみる 壊れたデータの救...
マルコフ連鎖モンテカルロ法
書籍『メイキング・オブ・ピクサー 創造力をつくった人々』を読...
Autodesk CompositeとAutodesk Ma...
ラクガキの立体化 モールドの追加
OpenCV バージョン4がリリースされた!
2012のメイキングまとめ(途中)
Mitsuba 2:オープンソースの物理ベースレンダラ
Maya LTでFBIK(Full Body IK)
adskShaderSDK
Unity ARKitプラグインサンプルのチュートリアルを読...
第20回 文化庁メディア芸術祭『3DCG表現と特撮の時代』
映画『ジュラシック・ワールド/新たなる支配者』を観た
BlenderのPython環境にPyTorchをインストー...
イタリアの自動車ブランドFiatとゴジラがコラボしたCMのメ...
Maya LTのQuick Rigを試す
R-CNN (Regions with CNN featur...
映画『ゴジラ-1.0』 メイキング情報まとめ
AMIMOTO(PVM版)で作成したインスタンスをAMIMO...
html5のcanvasの可能性
『PIXARのひみつ展』に行ってきた
ファンの力
Mayaのレンダリング アトリビュート
色んな三面図があるサイト
Unityの各コンポーネント間でのやり取り
動的なメモリの扱い
コメント