trimesh:PythonでポリゴンMeshを扱うライブラリ

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配列の変更の追跡、行のグループ化など、多くのユーティリティ関数

関連記事

Siggraph Asia 2009 カンファレンスの詳細

UnityのTransformクラスについて調べてみた

PGGAN:段階的に解像度を上げて学習を進めるGAN

ZBrushでアヴァン・ガメラを作ってみる モールドの彫り込み・身体の形出し

線画を遠近法で描く

HD画質の無駄遣い その2

Kornia:微分可能なコンピュータービジョンライブラリ

cvui:OpenCVのための軽量GUIライブラリ

uGUI:Unityの新しいGUI作成システム

2012 昨日のクローズアップ現代を見た

ZBrushでアヴァン・ガメラを作ってみる 歯を配置

Raytracing Wiki

ちょっと凝り過ぎなWebキャンペーン:全日本バーベイタム選手権 (MITSUBISHI KAGAKU...

python-twitterで自分のお気に入りを取得する

ZBrushでアヴァン・ガメラを作ってみる パーツ分割

ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調整

3D復元技術の情報リンク集

Unityの薄い本

『スター・ウォーズ/スカイウォーカーの夜明け』のVFXブレイクダウン

Pythonの自然言語処理ライブラリ『NLTK(Natural Language Toolkit)』

生物の骨格

Human Generator:Blenderの人体生成アドオン

Mayaのポリゴン分割ツールの進化

Unityをレンダラとして活用する

第20回 文化庁メディア芸術祭『3DCG表現と特撮の時代』

ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを作り込む

ZBrushでアヴァン・ガメラを作ってみる 口のバランス調整

Maya API Reference

Open Shading Language (OSL)

Maya には3 種類のシェーダSDKがある?

『ピクサー展』へ行ってきた

Unity ARKitプラグインサンプルのドキュメントを読む

Faceshiftで表情をキャプチャしてBlender上でMakeHumanのメッシュを動かすデモ

ZBrushのUV MasterでUV展開

Adobe Photoshop CS5の新機能

Point Cloud Utils:Pythonで3D点群・Meshを扱うライブラリ

3分の動画でプログラミングを学習できるサイト『ドットインストール』

ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作り込む

Zbrushでメカ物を作るチュートリアル動画

ラクガキの立体化 胴体の追加

BlenderのGeometry Nodeで遊ぶ

第1回 3D勉強会@関東『SLAMチュートリアル大会』

コメント