カメラクラスとXファイルのモデルの表示


カメラクラスの作成が終わったので、モデルの表示まで行いました。
カメラクラスと言ってもDXUTのカメラクラスの足元にも及ばないようなものですが。

SetPos()でカメラの座標を設定し、SetTar()でカメラの注視点を設定し、
Calc()でD3DXMatrixLookAtなんたらしてビューマトリクスを計算し、GetMtx()で取得するクラス。

後はモデル(メッシュ)の描画ごとにモデルローカルマトリクス*GetMtxしたビューマトリクスをdevice->SetTransform(D3DTS_VIEW, mtx );で設定して描画するだけ。
しかしこれは固定機能パイプラインを用いた場合の話であって頂点シェーダを用いた場合はそうではない。
いや頂点シェーダ触ったことないから勢いで適当に言い切ったけど。

頂点シェーダが使えない環境に長いこといたのだからしょうがない。しょうがないよな。
カメラはそんな感じ。カメラの位置と、注視点だけ変更できれば問題ない。画角なんかは変えられたほうがいいかな。

Xファイルからモデル(メッシュ)の表示

とりあえず拾ってきたコードを使う。

Xファイルからメッシュの生成と、マテリアルの生成、そのマテリアルで使われているテクスチャの生成。
ライトを適当に設定してメッシュの描画と。そんな感じで今日の1枚の出来上がりです。
ライトもカメラのようにクラスとして扱ったほうが便利そうです。
ライトをゴリゴリ動かしたりはしないですけどね。

モデルの表示は何とかなったとして、問題はモデル、と言うかXファイルの読み込みです。
でかいと読み込みでブロックするでしょう。
これはスレッドを分けて、ロードはロードで勝手にやって、描画は描画でしっかりやらなけらばいけないです。メンドイ
ゲームを起動して真っ暗画面でしばらく動かないゲームとかありますが、壊れてんのかと心配になります。
短い時間だと特に問題はないのですが、せめてNow Loadingの文字くらいは動かしておきたいものです。

と言うわけで次のテーマはスレッド。
スレッドの次はアニメーション、プログラマブルシェーダ・・・と続いていく予定です。


スクリーンショットのモデルはこのゲームと全然関係ないです。