RoboCup Simulator Dev

  Column   更新履歴
  第5回 「Xファイルを読み込む」
  1. XファイルとはMicrosoft社のDirectXで使用されているポリゴンデータです。
        今回はds+のAPIを用いてXファイルからポリゴンデータを読み込んでみましょう。

  2. 「ds+」をインストールしましょう。まだ、という方はこちらのページへ。

  3.  ソリューションファイルを開き、プロジェクトファイル(test03)をスタートアッププロジェクトに設定してください。
     

  4.  さて、Xファイルを読み込むにはdsLoadMeshFromX関数を使います。
dsTriMesh dsLoadMeshFromX ( const char * FileName );
        引数はファイル名(***.x)です。

        戻り値の「dsTriMesh」というのは,
          typedef struct _DS_TRIMESH {
                float *Vertices;
                int VertexCount;
                int *Indices;
                int IndexCount;
          } *dsTriMesh;
        と定義された関数ポインタです。

        この関数は引数で指定されたXファイルから、頂点数や座標、三角メッシュ数を読み込んで、
        dsTriMesh構造体のVertices、Indicesなどにそれぞれの値を格納します。

  5.  まずは三角メッシュを作るところで、
        TriData = dGeomTriMeshDataCreate();
       
mesh = dsLoadMeshFromX("cone.x"); // Load mesh data from "cone.x"
        dGeomTriMeshDataBuildSingle(TriData,
mesh->Vertices, 3 * sizeof(float),
                                           mesh->VertexCount,
mesh->Indices, mesh->IndexCount, 3 * sizeof(int));

        という文を追加して、meshにどのポリゴンデータを取り込むのかを教えます。

  6.  次に描画する時にはdsDrawTriMesh関数を使います。
void dsDrawTriMesh ( const float pos[3], const float R[12], dsTriMesh trimesh );

  7.  プログラムの終了時には、dsTriMeshDestroy関数を使って確保したメモリを解放します。
void dsTriMeshDestroy ( dsTriMesh TriMesh );

  8.  ビルド(B)→デバッグ開始(F5)とクリックして、プログラムを実行してみましょう。
     

        このように、読み込んだポリゴンが表示されるはずです。

        ポリゴンモデルはMetasequoia等のソフトで作ることが出来ます。

        他にもいろいろ試してみるのも良いでしょう。

        ちなみにdLoadMeshFromX関数は三角形メッシュにしか対応していません。

        四角形メッシュを読み込みたい場合は三角形に変形するか、XReaderを使うと良いでしょう。

一覧に戻る 前へ 次へ

Home | About | BBS | Column | Downloads | Links
©2010 Shinpuku @ Hibikino-Musashi