ポリゴンジオメトリ処理ライブラリ『pmp-library (Polygon Mesh Processing Library)』

pmp-library (Polygon Mesh Processing Library)というポリゴンジオメトリを扱う割と新しいC++のライブラリ。MITライセンスなので商用利用も可能。

pmp-library (Polygon Mesh Processing Library)

pmp-library

pmp-libraryは、デジタルジオメトリ処理のための新しいC++オープンソースライブラリです。

特長

シンプルで効率的なデータ構造

pmp-libraryは、ポリゴンサーフェスメッシュを格納・処理するためのシンプルで効率的なhalfedgeのメッシュデータ構造をコアとしており、高い柔軟性を維持しつつ、使いやすさとパフォーマンスを重視して慎重に設計・実装されています。

試行・テスト済みのアルゴリズム

コアのデータ構造に加えて、このライブラリは、Quadric ErrorベースのMesh Simplification、曲率適応再メッシュ化、細分割、スムージング、パラメータ化など、標準的なジオメトリ処理アルゴリズムの実装を提供します。

すぐに使える可視化ツール

ラピッドプロトタイピングをサポートするために、pmp-libraryはOpenGLベースのメッシュビューアと可視化ユーティリティを提供します。さらに、pmp-libraryをJavaScriptにコンパイルすれば、メッシュを処理するアプリケーションをブラウザ上で直接実行することもできます。デモについては、こちらを参照してください。



ソースコードはGitHubで公開されている↓
https://github.com/pmp-library/pmp-library/

さらに詳しくはUser GuideOverviewに書いてあって、ポリゴンのデータ構造を提供するコアモジュール、ジオメトリ処理アルゴリズムを提供するアルゴリズムモジュールと、オプションでOpenGLベースの可視化モジュールを備えているそうです。

コアモジュール

ライブラリのコアは、ポリゴンサーフェスメッシュを表現するためのシンプルで効率的なデータ構造pmp::SurfaceMeshを提供します。そして、3D点やベクトルなどの基本的な型、タイミングやメモリプロファイリングのための基本的なユーティリティクラスも定義されています。

アルゴリズムモジュール

アルゴリズムモジュールは、再メッシュ化やMesh Simplificationなどの標準的なジオメトリ処理アルゴリズムを実装しています。
クラスの構造や名前は単純でわかりやすいスキームで設計されており、1つのクラスが1種類のタスクを提供し、クラス名もタスクを表しています。
例:pmp::SurfaceRemeshingクラスはサーフェスメッシュで動作する再メッシュ化アルゴリズムを提供します。

可視化モジュール

可視化を容易に作成するために、pmp-libraryはオプションとして基本的なビューア機能を持つpmp::MeshViewerなどの可視化モジュールを備えています。データのレンダリングに対応するOpenGLコードはpmp::SurfaceMeshGLにあります。シンプルにするために、このクラスはpmp::SurfaceMeshを継承しています。

チュートリアルでhalfedgeのデータ構造について図で解説されている。

ところで、今流行りのPythonでジオメトリを扱えるライブラリが無いかと探してみたらPyMeshなるライブラリが存在するのね↓
https://pymesh.readthedocs.io/
https://github.com/PyMesh/PyMesh

関連記事

実写と実写の合成時の色の馴染ませテクニック

チャットツール用bot開発フレームワーク『Hubot』

uvでWindows11のPython環境を管理する

MLDemos:機械学習について理解するための可視化ツール

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

Pix2Pix:CGANによる画像変換

無料で使える人体3DCG作成ツール

Digital Emily Project:人間の顔をそっくりそのままCGで復元する

Google App EngineでWordPress

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

OpenCV 3.1から追加されたSfMモジュール

Unreal Engine Tokyo MeetUp!へ行ってきた

単純に遊びに行くのはだめなのか?

Unite 2014の動画

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

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

日本でMakersは普及するだろうか?

Raspberry Pi 2のGPIOピン配置

Shader.jp:リアルタイム3DCG技術をあつかうサイト

BlenderのRigifyでリギング

Webサイトのワイヤーフレームが作成できるオンラインツール

Maya API Reference

ラクガキの立体化 モールドの追加

Netron:機械学習モデルを可視化するツール

ZBrushで基本となるブラシ

Quartus II

オープンソースの顔の動作解析ツールキット『OpenFace』

OpenCVのバージョン3が正式リリースされたぞ

UnityのMonoBehaviourクラスをシングルトン化する

Google Chromecast

『PIXARのひみつ展』に行ってきた

OpenMVSのサンプルを動かしてみる

Verilog HDL

TVML (TV program Making language)

書籍『The Art of Mystical Beasts』を購入

OpenCVのfindEssentialMat関数を使ったサンプルを読んでみる

Deep Learningとその他の機械学習手法の性能比較

PythonのHTML・XMLパーサー『BeautifulSoup』

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

Raspberry Pi 2を買いました

LuxCoreRender:オープンソースの物理ベースレンダラ

Pythonのソースコードに特化した検索エンジン『Nullege』

コメント