01−03、mqo読み込み
読み込みの流れ
mqoファイルの読み込み処理はdisp4/CPP/mqofile.cppで行います。
mqoの材質はCMQOMaterialクラス, オブジェクトはCMQOObjectクラスに格納します。
mqoの読み込み方法についてですが
まずはファイル全体をバッファに読み込みます。
そしてそのバッファを1行ずつ調べていきます。
現在どの情報を読み込んでいるかということを調べて、m_stateにセットしつつ解析していきます。
m_stateに従って読み込み処理をするコードは以下のようなものです。
|
難しいことは何もないです。
ミソは対応しないチャンクはSkipChunk()で読み飛ばすことです。
マテリアル
材質(マテリアル)はCMQOMaterialに格納します。
CMQOMaterialの変数メンバは以下のようなものです。
|
materialnoは自分で付けるマテリアルのシリアル番号です。
nameは材質名、colは基本色、difは拡散光、ambは環境光、emiは自己照明、spcは反射光、powerは反射の強さです。
dif, amb, emi, spcはfloatの係数です。実際の色はこれに基本色colを掛け算したものになります。
この基本色に係数を掛け算したものがdif4f, amb3f, emi3f, spc3fです。
テクスチャについては後の章で説明しますが
簡単に説明すると
texにテクスチャ名を格納し、DirectXで使用できる形式にした後にそのデータへのシリアル番号m_texidを決定します。
描画の際にはこのm_texidによりテクスチャデータを参照します。
vertex, face
mqoのオブジェクトはCMQOObjectクラスに読み込みます。
CMQOObjectの中核は頂点データと面データです。
これらは以下のように宣言されています。
|
頂点データはm_pointbufに3次元座標として格納します。
面データはCMQOFaceクラスに格納します。
CMQOFaceの変数メンバは以下のようになっています。
|
CMQOFaceは線分、三角、四角に対応しています。
線分のときはm_pointnumに2が、三角のときは3が、四角のときは4が入ります。
そして面を構成する頂点の番号がm_indexに入ります。