Meshlabのソースコードへのプローブ



Probe Into Source Code Meshlab



Meshlabのソースコードへのプローブ

著者:徐景周



I.概要

MeshLabこれは、非構造化三角形メッシュを処理および編集するためのオープンソースのポータブルなオープンシステムです。このシステムの目的は3Dスキャンによって生成された非構造モデルは、処理時に役立ち、この形式のメッシュを編集、クリーニング、修復、検査、レンダリング、および変換するための一連のツールを提供します。MeshlabVCGlibすべてイタリア国立研究所の作品です。



第二に、ソフトウェア環境

  • VS2010
  • Meshlab 1.3.3
ダウンロード: https://sourceforge.net/projects/meshlab/files/meshlab/
  • QT 5.2.1(デフォルトのディレクトリであるDドライブにインストールすることをお勧めします。例:D: Qt Qt5.2.1)
  • QTVSアドイン1.2.3

ダウンロードダウンロード: https://www.qt.io/download-open-source/



3.注意が必要な事項

3.1ソースコードのコンパイル

http://wenku.baidu.com/link?url=AJ0j28wFNoXiOhWcoHaLP6W7Uxgapjy6IXut73eR1o6omACaQK8q6Z3mCb1moDnL9Dp9-jCGn5-QSWFxPi5y3lCxd3gAckOZlxl

3.2 filter_csgプラグインのソースコードでは、ソースコードに含まれていないサードパーティライブラリが参照されています。例:mpir.lib

3.3decorate_backgroundプラグインのソースコードに画像がありません: '/textures/cubemaps/uffizi.jpg」。

3.4 filter_cleanプラグインのソースコードには、別のプラグインのソースコードであるedit_pickpointsに依存するファイルがあります。

4、ソースコード分析

4.1メッシュラボ

メインディレクトリ。使用するQT開発されたグリッド処理システム、そのコア用途vcglib。以下でありメッシュラボメインソースディレクトリ構造:


4.1.1一般

基本ファイルディレクトリ。主にプラグインパラメータが含まれています/スクリプト分析、プラグインインターフェイス定義、プラグイン管理、メッシュ管理基本クラスなど

4.1.2外部

サードパーティのソースコードライブラリのディレクトリ。なぜならvcglibメッシュラボそれらはファイルで使用されるので、コンパイルしますメッシュラボエンジニアリングするときは、最初にこのディレクトリでプロジェクトをコンパイルする必要があります((生成しますlibファイルをにコピーします配布目次)。コンパイルの詳細については、注記の上部にある段落を参照してください。


例えば:

  • lib3ds-xx

Autodesk 3D StudioファイルC言語ライブラリ

  • muparser_xx

高速数式パーサーライブラリ

  • OpenCTM-xx

3D三角形メッシュの圧縮用ライブラリ

  • bzip2-xx

ファイル 圧縮 プログラム 使用する インクルード バロウズ–ウィーラー アルゴリズム。

  • jhead-xx

エキス そして 操作する Jpeg EXIFinformation 写真。

  • levmar-xx

ザ・Levenberg-Marquardtアルゴリズムは、非線形関数の2乗の合計として表される関数の極小値を見つける反復手法です。一般的な非線形最小二乗アルゴリズム図書館

  • glew-xx

ザ・OpenGL拡張ラングラーライブラリ。

  • qhull -xx

Qhullは、凸包、ドロネー三角形分割、ボロノイ図、点の周りの半空間交差、最も遠いサイトのドロネー三角形分割、および最も遠いサイトのボロノイ図を計算します。 2次元、3次元、4次元、およびそれ以上の次元で実行されます。凸包問題の調査と解決

4.1.3meshlabplugins

プラグインディレクトリ。メッシュラボプラグインをロードする方法は2つあります。1つはプラグインディレクトリをトラバースする方法です。ロードするファイル。もう1つは、プラグインディレクトリをトラバースすることですxmlファイル((例えば:filter_measure.xml)、あるかどうかを判断することによりxml同じ名前のファイルファイルとxmlファイルに含まれていますかjavascriptさまざまな方法でロードします。その中で、プラグインのダイアログボックスなど。玉ねぎ部分的にMeshlabStdDialogMeshLabXMLStdDialog2つのクラスが生成されます。


MeshLabその機能の拡張は、プラグインを介して実現されます。さまざまなインターフェイスを実装することで、プラグインをさまざまなメニューまたはツールバーの下に配置できます。例えば:MeshFilterInterface実装するためのインターフェースフィルタメニューの下のプラグイン。

例えば:

  • filter_meshing

メッシュメッシュ処理:スケーリング、移動、回転、面の細分割、重複する頂点の削除など。

  • filter_select

複数の選択および削除方法を提供します。

  • filter_layer

メッシュレイヤー操作。例:削除/コピー/名前を変更するメッシュレイヤー、マージメッシュレイヤーなど

  • i_base

インポート/いくつかエクスポートする3Dファイル。例えば:STL、PLY、注文番号待つ。

  • decorate_base

座標軸、頂点、コーナー、境界線、グリッド、ラベル、フィーチャヒストグラムなどを描画します。

  • edit_manipulators

操作するマウスとキーボードのキー:ズーム、パン、回転。

  • edit_align

メッシュスプライス。

  • edit_hole

メッシュ穴を埋めます。

  • edit_measure

測定するメッシュ選択した距離。

  • render_gdp

シェーダー:トラバーサルの読み込みと処理.gdpファイル。

  • render_rfx

シェーダー:トラバーサルの読み込みと処理.rfxファイル。

4.1.4サンプルプラグイン

拡張プラグインの例のソースコードのディレクトリ。

4.1.5メッシュラボ

メインプログラムディレクトリ。例:プログラムエントリ(MainWindowの実装mainwindow_RunTimemainwindow_Initファイル内)。、そして様々なアクション(レンダリング部分生成、rendermodeactionsファイル内)。メニューツールバーダイアログロジックなど

4.1.6meshlabserver

手動の作業負荷を軽減するためのバッチ処理ツールカタログ。使用するmeshlabserver(コマンドライン)+ mlxファイル(filterscript)自動化可能Meshlab仕事。

4.1.7配布

公開ディレクトリ、コンパイル後に生成されたファイルはここに保存されます

4.2vcglib

メッシュラボコアライブラリ。以下でありvcglibメインソースディレクトリ構造:

4.2.1vcg

ライブラリ全体のコアは、すべてのアルゴリズムとデータ構造を定義します


4.2.2ラップ

いくつかの特定のニーズが含まれています/環境/図書館VCGコンセプトのカプセル化。例:多くの形式のグリッドデータのインポートとエクスポート、使用OpenGL三角形メッシュなどをレンダリングするためのコード。


4.2.3ownLib

線形代数ライブラリ、VCGLibの高度な行列演算は、このライブラリに基づいています。

vcglib標準を使用C ++開発およびカプセル化OpenGLその他の機能。コア機能は次のとおりです。

  • 提供するメッシュ((三角メッシュ四面体メッシュ、三角形メッシュまたは四面体メッシュ)データ構造定義、データ構造はサポートしますメッシュデータ(トポロジ情報、空間クエリなど)への迅速なアクセスと、グリッド上でのアルゴリズムの効率的な実行
  • メッシュデータ構造に基づいて、グリッド修復、平滑化、変形、曲率計算、細分割、ポアソンディスクサンプリング、等表面計算など、多数の効率的なグリッドアルゴリズムが実装されます。
  • サポート、読み取り、書き込みプライOBJSTL3DSオフDXF他の形式のグリッドファイル
  • 玉ねぎなどのサポートOpenGLグリッド表示、トラックボール相互作用など

V.アーキテクチャ


フレーム


ユースケース図


プラグインのクラス図


イベントグラフを開始