3Dモデルデータフロー考察&とりあえずmqoファイル描画2

mqoのマテリアル(テクスチャと色)を反映して描画してみる。少しDirectX11プログラミングが複雑になってきたので、3Dモデルデータの扱い方について、大まかなデータフロー(仮)を考えてみる。
3Dモデルの描画処理は、そのデータフロー(仮)に沿って作成する。

とりあえずmqoファイル表示2
とりあえずmqoファイル表示2


3Dモデルデータ

3Dモデルデータフロー図
3Dモデルデータフロー(仮)

中間データ

すべての中心となる汎用性と扱いやすさを備えたデータ構造。形状の最適化(頂点マージ、スリップ化など)やゲーム用情報、特殊なシェーダのパラメータなどの調整などを行う。

外部データ

モデリングツールなどから出力されたモデルデータ。必ず中間データに変換してから扱う。

実装データ

グラフィック環境に合わせたデータ。ここではDirectX11のリソース(頂点バッファなど)。DX11バイナリファイルは、シェーダのコンパイル、フォーマットの変換(float⇒half、テクスチャ圧縮など)など実装に特化した時間のかかる最適化を行ったデータ。

データと描画処理の分離

各データに対応するクラスを作成するが、描画処理をそのクラスに定義しない。描画処理は別のクラスを作成する。STLのコンテナとアルゴリズムのような関係を目指す。モデルデータクラスにイテレータ的なものを用意して、描画アルゴリズムクラス(またはテンプレート関数)で描画実行。


サンプルプログラムの説明

■struct MQOModel;
mqoファイルの構造を単純に構造体にしたもの

■class zgmdl::Model
中間モデルデータ(作成中)
描画関連の処理がしやすい構造を目指して作成中

■class zix11::MeshX11
DirectX11関連のリソースを保持するクラス(作成中)
必要最小限のリソースのみ

サンプルダウンロード
mqoファイルの描画(テクスチャと色のみ)


リンクなど

3Dポリゴンモデラー

3Dポリゴンモデラー「メタセコイア」

スクリーンショットのモデルデータ

エナメルP/ハッチ作『ねんどろ風・初音ミク』
-enamel toy box-(一時閉鎖中 2013/3/22現在)
※サンプルプログラムには含まれません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

認証:数字を入力してください(必須) * Time limit is exhausted. Please reload CAPTCHA.