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



「面はすべて同一のマテリアル設定」ではないモデルファイルの読み込みに対応します。
12.のファイル読み込み処理は、アスキー形式STLファイル読み込み処理でしたが、新たに、OBJファイル読み込み処理を追加し、読み込むファイルの拡張子により、アスキー形式STLファイル読み込み処理とOBJファイル読み込み処理のどちらかが呼び出されるように変更します。
※STLファイルは、「面はすべて同一のマテリアル設定」であるモデルしか表現できませんが、OBJファイルは、「面はすべて同一のマテリアル設定」でないモデルも表現できます。また、OBJファイルは、頂点ごとに異なる法線ベクトルデータを持ったモデルも表現できます。

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

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

プロジェクトを開く

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

モデルデータ読み込み関数のヘッダーファイルの作成

「メニュー/ファイル/新規作成」(もしくは、「メニュー/プロジェクト/プロジェクトへ追加/新規作成」)でファイル名「LoadObjFile.h」のファイルを作成します。

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

モデルデータ読み込み関数のソースファイルの作成

「メニュー/ファイル/新規作成」(もしくは、「メニュー/プロジェクト/プロジェクトへ追加/新規作成」)でファイル名「LoadObjFile.cpp」のファイルを作成します。

LoadObjFile.cppの内容を以下のようにします。



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

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

ファイル選択ダイアログにobjファイルに関する項目の追加と、選択したファイルの拡張子によって読み込み関数を振り分ける処理を追加します。

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



ModelViewerView.cppのファイルのヘッダー部に
#include "LoadObjFile.h"
を追加します。



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

実行

実行し、アスキー形式STLファイルだけでなくOBJファイルからモデルデータを読み込んで描画できるようになっていることを確認します。

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