Meshlabのソースコードへのプローブ
Probe Into Source Code Meshlab
Meshlabのソースコードへのプローブ
著者:徐景周
I.概要
MeshLabこれは、非構造化三角形メッシュを処理および編集するためのオープンソースのポータブルなオープンシステムです。このシステムの目的は3Dスキャンによって生成された非構造モデルは、処理時に役立ち、この形式のメッシュを編集、クリーニング、修復、検査、レンダリング、および変換するための一連のツールを提供します。MeshlabとVCGlibすべてイタリア国立研究所の作品です。
第二に、ソフトウェア環境
- VS2010
- Meshlab 1.3.3
- 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さまざまな方法でロードします。その中で、プラグインのダイアログボックスなど。玉ねぎ部分的にMeshlabStdDialogとMeshLabXMLStdDialog2つのクラスが生成されます。
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_RunTimeとmainwindow_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その他の機能。コア機能は次のとおりです。
- 提供するメッシュ((三角メッシュ、四面体メッシュ、三角形メッシュまたは四面体メッシュ)データ構造定義、データ構造はサポートしますメッシュデータ(トポロジ情報、空間クエリなど)への迅速なアクセスと、グリッド上でのアルゴリズムの効率的な実行
- にメッシュデータ構造に基づいて、グリッド修復、平滑化、変形、曲率計算、細分割、ポアソンディスクサンプリング、等表面計算など、多数の効率的なグリッドアルゴリズムが実装されます。
- 私サポート、読み取り、書き込みプライ、OBJ、STL、3DS、オフ、DXF他の形式のグリッドファイル
- 玉ねぎなどのサポートOpenGLグリッド表示、トラックボール相互作用など
V.アーキテクチャ
フレーム
ユースケース図
プラグインのクラス図
イベントグラフを開始