X-FILE Loader_2

カラーモデルに対応した X-FILE Loader 2 です。

Loader とサンプルモデルを圧縮形式で提供します。
Visual Studio Express 2012 for Windows 8 で作成したプロジェクトです。
Windows 8.1 以降では動かないようなのでアップロードを廃止します。
X-FILE Loader 2 の Down Load

前田稔(Maeda Minoru)の超初心者のプログラム入門

X-FILE Loader_2

  1. X-FILE Loader_1 に続いて、ポリゴンの色に対応した X-FILE Loader_2 が使えるようになりました。
    先に X-FILE Loader_1 からプロジェクト一式をダウンロードして下さい。
    次に Loader 2 からダウンロードしたファイルを Loader 1 のファイルに上書きします。
    次のファイルがプロジェクトに組み込まれます。
    (BOXP4.x ConeColor.x CubeColor.x CubeP4C.x)
  2. プロジェクトを起動して「コンパイル&実行」をして下さい。
    ページ先頭の X-FILE(gal2.x) が回転しながら描画されます。
    Loader 1 ではポリゴンの色に対応していなかったのでモノクロでしたが、Loader 2 ではカラーで描画されます。
    一昔前にモノクロテレビがカラーテレビに変わったときの感激を思い出しました。 \(^o^)/
  3. Loader_1 に添付されているモデルも描画出来るので試して下さい。
    X-FILE Loader_2 の仕様は、ポリゴンの色に対応したことを除いて Loader_1 と同じです。
    次は、テクスチャモデルに対応した Loader を開発する予定なので、期待していて下さい。
    テクスチャモデルの Loader は Win10 TextureModel を参照して下さい。
  4. プログラムの手順は Direct3DApp1 に Model Class を組み込んで、Model に Loader Class を組み込みます。
        System⇒.appxmanifest⇒Direct3DApp1⇒Model⇒Loader
        
    Model 及び XLoader の組み込み方は X-FILE Loader_1 を参照して下さい。

Loader_2 の概要

  1. 簡単に X-FILE Loader_2 の概要を説明します。
    このプログラムは X-FILE Loader_1 の続きです。
    基本的な説明は X-FILE Loader_1 を参照して下さい。
  2. X-FILE の中で、ポリゴンの色は Material で定義されています。
    Material は、先頭の方で名前を付けて定義される場合と、MeshMaterialList の中で直接定義される場合があります。
    matName は Material に付けられた名前です。
    Material 構造体では、power, specularColor, emissiveColor なども定義されているのですが、今回は使いません。
    // Material 構造体(MTBL)
    struct  Mat
    {   string  matName;
        float4  faceColor;
        float   power;
        float3  specularColor;
        float3  emissiveColor;
    };
    
        vector<Mat>     MTBL;   // Material Table
    
    Material の定義です。
    Material Matpi {
     0.505882;0.956863;0.996078;1.000000;;
     21.333333;
     0.000000;0.000000;0.000000;;
     0.000000;0.000000;0.000000;;
    }
    Material Matred {
     1.000000;0.000000;0.000000;1.000000;;
     21.333333;
     0.000000;0.000000;0.000000;;
     0.000000;0.000000;0.000000;;
    }
        ・・・
    
  3. Material はポリゴン(Face)ごとに設定されます。
    そこで Face を定義する構造体を使用します。
    Num; が頂点の数(三角ポリゴン,四角ポリゴンなど)です。
    Pos; が頂点 Index の並びで、Norm; が法線 Index の並びです。
    Midx; は Material に対する Index で、指定が無いときは -1 にします。
    // Face 構造体(FTBM)
    struct  Face
    {   int         Num;    // 頂点数
        vector<int> Pos;    // 頂点 Index の並び
        vector<int> Norm;   // 法線 Index の並び
        int         Midx;   // Material(MTBL) Index(-1:指定なし)
    };  
      
        vector<Face>    FTBL;   // Face Table
    
  4. MeshMaterialList で Face ごとの Material が定義されます。
    5; が使用する Material 数で、25; が Face の数です。
     MeshMaterialList {
      5;
      25;
    
    先に Face ごとの Material 番号が定義されます。
      0,
      1,
      1,
      1,
      1,
      1,
      ・・・
      4,
      4;;
    
    次に、ここで使用する Material が続きます。
    Material の名前または Material 自体が直接定義される場合があります。
      {Matpi}
      {Matred}
      {Matye}
      {Matbu}
      {Matgre}
     }
    
  5. ポリゴンは全て三角ポリゴン(TRIANGLELIST)に変換するのですが、Face ごとに Material が関係するので構造体で定義します。
    Pos[3]; が TRIANGLELIST に変換したときの頂点 Index の並びで、Norm[3]; が法線 Index の並びです。
    Midx; は Material への Index です。
    // Polygon3 構造体(POL3)
    struct  Pol3
    {   int     Pos[3];     // 頂点 Index の並び
        int     Norm[3];    // 法線 Index の並び
        int     Midx;       // Material(MTBL) Index
    };
    
        vector<Pol3>    POL3;   // Polygon3 Table
    
  6. Windows10 でリメークしたプロジェクトを XLoader Color に掲載しています。
    XLoader Color には XLoader.h(.cpp) のソースコードを掲載しているので併せて参照して下さい。
    Java でも X-FILE の Loader を作成しています。
    こちらの方がアニメーションにも対応した Loader で詳しく説明しています。

超初心者のプログラム入門(DirectX Store)