12.「面はすべて同一のマテリアル設定」ではないモデルファイルの描画に対応する



11.で作成したモデルビューワは、モデルファイルの面はすべて同一のマテリアル設定としていました。
マテリアル設定が同一である面の集まりに対してグループというデータ構造を用意し、モデルはグループの集まりであるとするデータ構造を用意することで、「面はすべて同一のマテリアル設定」ではないモデルファイルの描画に対応します。
ついでに、頂点法線ベクトルデータ、面法線ベクトルデータも保持するようにモデルデータ構造を変更します。

プロジェクトを開く

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

モデルに関するデータ構造の変更

マテリアルデータ構造の追加、グループデータ構造の追加、モデルデータ構造の変更等のモデルに関するデータ構造の変更を行ないます。

ModelDataStructure.h の内容を以下のようにします。



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

ファイル読み込み処理の変更

データ構造の変更にあわせて、ファイル読み込み処理を、変更後のデータ構造に対応したものへ変更します。

LoadStlFile.cpp のLoadStlFile関数の内容を以下のようにします。



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

描画処理の変更

データ構造の変更にあわせて、描画処理を、変更後のデータ構造に対応したものへ変更します。

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



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

実行

実行し、動作を確認します。
(11.で作成したモデルビューワと動作上の変化はありません。)

sphere.stlファイルの読み込み
(「メニュー/表示/描画」で、点、線を非描画にしています。)

ダウンロード

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

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