15.Hira3D読み込みプラグインを利用したモデルファイルの読み込みに対応する



Hira3D読み込みプラグインを利用したモデルファイルの読み込みに対応します。
Hira3D読み込みプラグインを利用したモデルファイルの読み込みに対応すると、読み込みプラグインが存在するモデルファイルフォーマットに関しては、自分でファイル読み込み処理を作る必要がなくなります。
(2006/01/15現在 Hira3DViewerには、「.3ds」「.dxf」「.gts」「.obj」「.stl」読み込みプラグインが添付されています。)

プロジェクトを開く

14.で作成したモデルビューワプロジェクトを開きます。

Hira3DLoadPluginライブラリファイルのプロジェクトへの追加

ModelViewerフォルダの下にHira3DLoadPluginというフォルダを作り、そのフォルダの中にHira3DLoadPluginライブラリソースファイルを置きます。

Hira3DLoadPluginライブラリソースファイル

「メニュー/ファイル/追加/既存のプロジェクト」でHira3DLoadPluginライブラリをプロジェクトへ追加します。
(Hira3DLoadPlugin.vcproj を選択し、「開く」ボタンを押します。)

PluginObjectライブラリファイルのプロジェクトへの追加

ModelViewerフォルダの下にPluginObjectというフォルダを作り、そのフォルダの中にPluginObjectライブラリファイルを置きます。

PluginObjectライブラリソースファイル

「メニュー/プロジェクト/プロジェクトをワークスペースへ挿入」でPluginObjectライブラリをプロジェクトへ追加します。
(PluginObject.vcproj を選択し、「開く」ボタンを押します。)


「メニュー/プロジェクト/プロジェクト依存関係」で、追加した2つのプロジェクトがModelViewerプロジェクトに依存するようにします。


ビルドし、エラー、警告がないことを確認します。

Hira3D読み込みプラグイン用のメンバ変数、メンバ関数の宣言の追加

ModelViewerView.h のCModelViewerViewクラスに
Hira3D読み込みプラグイン用のメンバ変数の宣言

std::vector<HIRA3DLOADPLUGIN> m_vLoadPlugin;

と、Hira3DLoadPlugin用のメンバ関数の宣言

void InitPlugins();
void UninitPlugins();
int PluginModel2Model( const PLUGINMODEL* pPluginModel, CModel* pModel );

を追加します。



ModelViewerView.h のファイルのヘッダー部に

#include "Hira3DLoadPlugin\Hira3DLoadPlugin.h"

を追加します。



ビルドし、エラー、警告がないことを確認します。

メンバ関数の定義の追加

ModelViewerView.cpp に、Hira3D読み込みプラグイン用のメンバ関数
InitPlugins
UninitPlugins
PluginModel2Model
の関数の定義を追加します。



ModelViewerView.cpp のファイルのヘッダー部に

#include "PluginObject\PluginObjectUtility.h"
#include <math.h> // sqrt()

および

#define NhGlobalAlloc(a,b) (b ? GlobalAlloc(a,b) : 0)
#define NhGlobalFree(a) if( a ){ GlobalFree(a); a = 0; }
#define NhGlobalLock(a) (a ? GlobalLock(a) : 0)
#define NhGlobalUnlock(a) if( a ){ GlobalUnlock(a); }
#define NhGlobalSize(a) (a ? GlobalSize(a) : 0)
#define NhGlobalFlags(a) (a ? GlobalFlags(a) : 0)

を追加します。



ビルドし、エラー、警告がないことを確認します。

OnCreateメッセージハンドラとOnDestroyメッセージハンドラの追加、編集

以下のメッセージハンドラをCModelViewerViewクラスに追加します。

ウィンドウメッセージ名 メッセージハンドラ名
WM_CREATE OnCreate
WM_DESTROY OnDestroy

OnCreateメッセージハンドラにInitPlugins関数呼び出しを追加し、
OnDestroyメッセージハンドラにUninitPlugins関数呼び出しを追加します。



ビルドし、エラー、警告がないことを確認します。

メニュー「ファイル/開く」の応答関数の変更

メニュー「ファイル/開く」の応答関数をHira3D読み込みプラグインを用いてファイル読み込みを行うように変更します。

ModelViewerView.cpp のCModelViewerView::OnFileOpen関数の内容を以下のようにします。



ビルドし、エラー、警告がないことを確認します。

実行

実行ファイルのあるフォルダの中に、「plugins」という名前のフォルダを作成し、「plugins」フォルダの中に、Hira3D読み込みプラグインファイルを置き、実行します。
「.3ds」「.dxf」「.gts」「.obj」「.stl」読み込みプラグイン
メニュー「ファイル/開く」の、ファイルを開くダイアログの、ファイルの種類に、Hira3D読み込みプラグインによってサポートされたファイルの種類が増えていることを確認します。



いろいろな種類のモデルファイルを読み込み動作を確認します。
cube.dxfファイルの読み込み

ダウンロード

実行形式ファイルダウンロード (ModelViewerOpenGLMFC2005_15_exe.lzh)

ソースファイルダウンロード (ModelViewerOpenGLMFC2005_15_src.lzh)