13.「面はすべて同一のマテリアル設定」ではないモデルファイルの読み込みに対応する
「面はすべて同一のマテリアル設定」ではないモデルファイルの読み込みに対応します。
12.のファイル読み込み処理は、アスキー形式STLファイル読み込み処理でしたが、新たに、OBJファイル読み込み処理を追加し、読み込むファイルの拡張子により、アスキー形式STLファイル読み込み処理とOBJファイル読み込み処理のどちらかが呼び出されるように変更します。
※STLファイルは、「面はすべて同一のマテリアル設定」であるモデルしか表現できませんが、OBJファイルは、「面はすべて同一のマテリアル設定」でないモデルも表現できます。また、OBJファイルは、頂点ごとに異なる法線ベクトルデータを持ったモデルも表現できます。
解説
以下を行います。
- OBJファイル読み込み処理の作成
- モデルファイル読み込み処理の変更(拡張子による読み込み関数の分岐)
プロジェクトを開く
12.で作成したモデルビューワプロジェクトを開きます。
モデルデータ読み込み関数のヘッダーファイルの作成
「メニュー/プロジェクト/新しい項目の追加」でファイル名「LoadObjFile.h」のファイルを作成します。
LoadObjFile.hの内容を以下のようにします。
ビルドし、エラー、警告がないことを確認します。
モデルデータ読み込み関数のソースファイルの作成
「メニュー/プロジェクト/新しい項目の追加」でファイル名「LoadObjFile.cpp」のファイルを作成します。
LoadObjFile.cppの内容を以下のようにします。
ビルドし、エラー、警告がないことを確認します。
メニュー「ファイル/開く」の応答関数の変更
ファイル選択ダイアログにobjファイルに関する項目の追加と、選択したファイルの拡張子によって読み込み関数を振り分ける処理を追加します。
ModelViewerRenderer.cpp の WndProc関数 のID_FILE_OPENに対応する処理の内容を以下のようにします。
ModelViewerRenderer.cppのファイルのヘッダー部に
#include "LoadObjFile.h"
を追加します。
ビルドし、エラー、警告がないことを確認します。
実行
実行し、アスキー形式STLファイルだけでなくOBJファイルからモデルデータを読み込んで描画できるようになっていることを確認します。
al.objファイルの読み込み
(「メニュー/表示/描画」で、点、線を非描画にしています。)
ダウンロード
ソースファイルダウンロード ( ModelViewerOpenGLWinAPI2015_13objfileload.zip )
関連ページ
前項目:12.「面はすべて同一のマテリアル設定」ではないモデルファイルの描画に対応する
次項目:14.頂点法線ベクトルデータを使用した描画