サイトアイコン NegativeMindException

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


スポンサーリンク

関連記事

  • TensorSpace.js:ニューラルネットワークの構造を可視化するフレームワーク
  • ジュラシック・パークの続編『ジュラシック・ワールド』
  • スクレイピング
  • Photogrammetry (写真測量法)
  • 日立のフルパララックス立体ディスプレイ
  • トランスフォーマーの変形パターンを覚えるのは楽しいと思うんだ
  • Python.NET:Pythonと.NETを連携させるパッケージ
  • スクラッチで既存のキャラクターを立体化したい
  • Polyscope:3Dデータ操作用GUIライブラリ
  • 株式会社ヘキサドライブの研究室ページ
  • FreeMoCap Project:オープンソースのマーカーレスモーションキャプチャ
  • C#で使える遺伝的アルゴリズムライブラリ『GeneticSharp』
  • OpenGVのライブラリ構成
  • MythTV:Linuxでテレビの視聴・録画ができるオープンソースプロジェクト
  • ZBrushで仮面ライダー3号を造る 仮面編 横顔のシルエットをリファレンスに合わせる
  • 書籍『開田裕治 怪獣イラストテクニック』
  • ZBrushでアヴァン・ガメラを作ってみる 頭頂部の作り込み・舌の追加
  • 仮想関数
  • オープンソースのIT資産・ライセンス管理システム『Snipe-IT』
  • Raspberry Pi
  • BSDF: (Bidirectional scattering distribution funct...
  • デザインのリファイン再び
  • ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調整
  • 今年もSSII
  • ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作り込む
  • WordPress on Windows Azure
  • Paul Debevec
  • 日本でMakersは普及するだろうか?
  • ポリゴンジオメトリ処理ライブラリ『pmp-library (Polygon Mesh Process...
  • OpenCVでPhotoshopのプラグイン開発
  • ZBrushでアヴァン・ガメラを作ってみる 歯を配置
  • UnityでShaderの入力パラメータとして行列を渡す
  • Dlib:C++の機械学習ライブラリ
  • COLMAP:オープンソースのSfM・MVSツール
  • AMIMOTO(PVM版)で作成したインスタンスをAMIMOTO (HVM版)へ移行する
  • UnrealCLR:Unreal Engineで.NET Coreを利用できるプラグイン
  • Open3D:3Dデータ処理ライブラリ
  • ニンテンドー3DSのGPU PICA200
  • iPhone・iPod touchで動作する知育ロボット『ROMO』
  • 3Dスキャンに基づくプロシージャルフェイシャルアニメーション
  • Blendify:コンピュータービジョン向けBlenderラッパー
  • MFnDataとMFnAttribute
  • モバイルバージョンを終了