X_file Object Class & Tiny.x

X_FILE Object Class を使って Tiny.x を静止して描画します。
アニメーションデータが含まれている Tiny.x ですが、アニメーション無しで描画することも出来ます。

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

プログラムの説明

  1. X_FILE.h を include して下さい。
    *xfile が X_FILE Object Class の定義です。
    Path[] には Tiny.x が置かれているディレクトリのパスを格納して下さい。
        #include    "X_FILE.h"
        X_FILE      *xfile  = NULL;         // X_FILE Object Class
        CHAR        Path[MAX_PATH] = "C:\\Data\\Model\\Tiny";   // Tiny.x のパス
        
  2. Path を CurrentDirectory に設定して "tiny.x" を指定してオブジェクトを生成します。
        SetCurrentDirectory( Path );
        xfile= new X_FILE(g_pDEV,"tiny.x");
        
  3. Render() メンバー関数では SetupMatrices() で Matrices を設定してメッシュを描画します。
        SetupMatrices();
        xfile->Render();
        
  4. SetupMatrices() 関数です。
    基本的に今までと同じ要領ですが、"tiny.x" をそのまま描画すると頭を奥にしてうつ伏せに描画されます。
    そこで正面から描画するように World 座標を回転します。
    またティーポットに比べてモデルのサイズが相当大きいようなので調整が必要です。
        VOID SetupMatrices()
        {   D3DXMATRIXA16 matWorld, matWK;
    
            D3DXMatrixIdentity(&matWorld);
            D3DXMatrixRotationX(&matWorld,-(D3DX_PI/2));
            D3DXMatrixRotationY(&matWK,-D3DX_PI);
            matWorld= matWorld*matWK;
            g_pDEV->SetTransform(D3DTS_WORLD,&matWorld);
    
            D3DXVECTOR3 vEyePt( 0.0f, 200.0f,-1000.0f );
            D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
            D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
            D3DXMATRIXA16 matView;
            D3DXMatrixLookAtLH(&matView,&vEyePt,&vLookatPt,&vUpVec);
            g_pDEV->SetTransform(D3DTS_VIEW,&matView);
            D3DXMATRIXA16 matProj;
            D3DXMatrixPerspectiveFovLH(&matProj,D3DX_PI/4,1.0f,1.0f,10000.0f);
            g_pDEV->SetTransform(D3DTS_PROJECTION,&matProj);
        }
        
  5. プログラムを終了する前に Object Class を削除して下さい。
        SAFE_DELETE(xfile);
        
  6. X_FILE Object Class の説明は X_file Object Class を参照して下さい。
    C#でも同様のプログラムを作成しています。
    「超初心者のプログラム入門(C#)/DirectX 3D入門/Tiny.x を静止して描画する」を参照して下さい。

超初心者のプログラム入門(DirectX9 game program)

超初心者のプログラム入門(DirectX10 game program)