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

関連記事

ZBrushでゴジラ2001を作ってみる 頭の概形作り

MetaHumanの頭部をBlenderで編集できるアドオン

OpenCV 3.3.0-RCでsfmモジュールをビルド

TorchStudio:PyTorchのための統合開発環境とエコシステム

ROSの薄い本

OpenCVの三角測量関数『cv::triangulatepoints』

WordPressプラグインの作り方

UnityでPoint Cloudを表示する方法

『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン まとめ

ブラウザ操作自動化ツール『Selenium』を試す

OpenCV バージョン4がリリースされた!

Phongの表現力パネェ 材質別のPhong Shader用パラメータ一覧

株式会社ヘキサドライブの研究室ページ

ZBrush 2018へのアップグレード

ZBrushで仮面ライダー3号を造る 仮面編 リファレンス画像の表示

ポリ男からMetaHumanを作る

IronPythonを使ってUnity上でPythonのコードを実行する

Windows Server 2008にAutodesk Maya 2009をインストール

iOSで使えるJetpac社の物体認識SDK『DeepBelief』

ZBrushで仮面ライダー3号を造る 仮面編 ZRemesher

レンダラ制作はOpenGL とか DirectX を使わなくてもできるんだぜ

WebGL開発に関する情報が充実してきている

Blendify:コンピュータービジョン向けBlenderラッパー

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

布のモデリング

Blenderでよく使うaddon

Unityで強化学習できる『Unity ML-Agents』

Unite 2014の動画

法線マップを用意してCanvas上でShadingするサンプル

リメイク版ロボコップスーツのメイキング

ラクガキの立体化 1年半ぶりの続き

2012のメイキングまとめ(途中)

TeleSculptor:空撮動画からPhotogrammetryするツール

BlenderProc:Blenderで機械学習用の画像データを生成するPythonツール

AndroidもopenGLも初心者さ (でもJavaは知ってるよ)

プログラムによる景観の自動生成

JavaScriptとかWebGLとかCanvasとか

Verilog HDL

『パシフィック・リム: アップライジング』のVFXブレイクダウン まとめ

3Dスキャンしたテクスチャから照明を除去するUnityツール『De Lighting tool』

MB-Lab:Blenderの人体モデリングアドオン

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

コメント