研究開発日誌

CG研究・開発のちょっとしたメモ書き

MeshLabを使ったメッシュのプレビュー

2015-01-15

MeshLabを使ってメッシュをプレビューするTipsです.

MeshLabは,PLY, STL, OFF, OBJといった研究でよく使われている3Dファイルフォーマットを入力して表示可能なフリーのメッシュ編集ソフトです.メッシュの細分割,簡略化,スムージング,曲率計算といった機能をデフォルトで備えていて,メッシュを使ってちょっとした編集・解析をするのに向いています.

MeshLabのスクリーンショット

CG技術の実装と数理の実装では,Pythonで開発していいたため,3Dメッシュの表示部分に少し困っていました.matplotlibというMATLABで表示できるようなグラフをPythonでもサポートするライブラリもあるのですが,3D表示機能に関しては少し弱いです.そこで,その時は,バッチ処理で変更したメッシュをOBJファイルとして保存し,MeshLabでプレビューする方式を取りました.

MeshLabを使ったメッシュのプレビュー

MeshLabを使ってメッシュをプレビューする操作は非常に簡単です.OBJファイルを単にドラッグ&ドロップするだけです.複数ファイルを読み込むことができ,UIでどのメッシュを表示するか簡単に選択できるようになっています.また,OBJファイルに頂点カラーを仕込むときちんと表示してくれます.メッシュのノイズ除去のプロジェクトだったので,ground truthからの誤差を頂点カラーで表示しています.

メッシュのプレビュー

OBJファイルには,通常のxyz座標に加えて,rgb値を各頂点に追加すればOKです.

#
# Vertex Data
#  v  x y z   r g b
####
v 0.5  0.2  0.3   0.9  0.8  0.2
v 0.2  0.4  0.4   0.8  0.7  0.1
....
#
# Face Data
# f  fv1 fv2 fv3
####
f 1   5  10
f 1  10  15

Pythonを使ってOBJファイルを入出力するサンプルは,こちらの記事をご覧ください.

MeshLabを使ったメッシュのファイルフォーマット変換

MeshLabにはPLY⇒OBJ,OFF⇒OBJといったファイルフォーマットを変換する機能がデフォルトで備わっています.例えば,メニューを使う場合,File->Export Mesh Asを選んで,その他のフォーマットに変換することができます.しかし,変換したい3Dモデルが多数ある場合,1つ1つ手作業で変換していくのは少々面倒です.そんな時に便利なのが,バッチ処理を行うことができるmeshlabserverです.僕が実験しているWindows環境の場合,meshlabserver.exeは,実行ファイルと同じフォルダ(C:\Program Files\VCG\MeshLab)にあるので,そこにパスを通しておくと良いと思います.

コマンドプロンプト上で,meshlabserverと入力して実行するとオプションを表示してくれます.

> meshlabserver
Usage:
    meshlabserver arg1 arg2 ...
where args can be:
 -i [filename...]  mesh(s) that has to be loaded
 -o [filename...]  mesh(s) where to write the result(s)
 -s filename                script to be applied
 ....

メッシュ変換を行う場合,下記のように-iと-sを指定してやればOKです.

> meshlabserver -i inputFile.ply -s outputFile.obj

meshlabserverでは,メッシュの編集操作をスクリプトファイルにして実行するのも可能のようですので,メッシュ編集処理を一括して行いたい場合は調べてみると良いかもしれません.

参考文献

[1] MeshLab: http://meshlab.sourceforge.net/ [2] matplotlib: http://matplotlib.org/