XFILE ⇒ sdkmesh

XFILE ⇒ sdkmesh

DirectX Sample Browser

X-FILE を sdkmesh に変換する MeshConvert です。

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

MeshConvert の実行

[スタート] から [すべてのプログラム] [Microsoft DirectX SDK (June 2010)] を選択して [DirectX Sample Browser] を実行して下さい。
[show] から [All Areas] を選択するとページ先頭の画面が表示されます。
一覧から [MeshConvert] の [32-bit Executable] をクリックするとコマンドプロンプトの画面が表示されます。
  1. C:\TMP\ に格納されている Tiny.x を Tiny.sdkmesh に変換してみましょう。
    C:\TMP\ には事前に Tiny.x と Tiny_skin.dds を格納します。
    コマンドプロンプトの画面から次のコマンドを実行します。
    C:\TMP\Tiny.sdkmesh が出力ファイルで、C:\TMP\Tiny.x が入力ファイルです。
    C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\Bin\x86>meshc
    onvert /o C:\TMP\Tiny.sdkmesh /sdkmesh C:\TMP\Tiny.x
    

    /sdkmesh を省略して次のようにタイプしても同じです。
    meshconvert /o C:\TMP\Tiny.sdkmesh C:\TMP\Tiny.x
    

    Tiny.sdkmesh をダブルクリックして DXUT メッシュの Viewer を起動するとテクスチャが貼り付けられて描画されます。
    本来はアニメーションモデルですが、残念ながらアニメーション情報は格納されていないようです。
    DXUT メッシュの Viewer は sdkmesh の Viewer を作成 を参照して下さい。

  2. C:\TMP\Cone.x を Cone.sdkmesh に変換してみましょう。
    Cone.x の取得と説明は X-FILE(Cone.x) の頂点データを定義する を参照して下さい。
    C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\Bin\x86>meshc
    onvert /o C:\TMP\Cone.sdkmesh C:\TMP\Cone.x
    

    Cone.x は LIGHTWAVE で作成したモデルで「頂点座標と法線ベクトルと色」で構成されています。
    ところが何故か色情報が格納されていません。
    DXUT メッシュの Viewer で確認すると、DXUTCreateCylinder() で生成したコーンのメッシュと同じです。
    MeshConvert は色情報を処理していないのでしょうか。 (^_^;)

  3. C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\Media\ChairScene\ から Chair.x を変換します。
    C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\Bin\x86>meshc
    onvert /o C:\TMP\Chair.sdkmesh "C:\Program Files (x86)\Microsoft DirectX SDK (Ju
    ne 2010)\Samples\Media\ChairScene\chair.x"
    

    ChairDiff.dds を C:\TMP\ にコピーして下さい。
    テクスチャが貼り付けられた椅子が描画されます。

  4. C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\Media\Airplane\ から airplane 2.x を変換します。
    C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\Bin\x86>meshc
    onvert /o C:\TMP\airplane.sdkmesh "C:\Program Files (x86)\Microsoft DirectX SDK
    (June 2010)\Samples\Media\Airplane\airplane 2.x"
    

    bihull.bmp と wings.bmp を C:\TMP\ にコピーして下さい。
    テクスチャが貼り付けられた模型飛行機が描画されます。

  5. C:\TMP\Tiger.x を Tiger.sdkmesh に変換してみましょう。
    C:\TMP\ には事前に Tiger.x と Tiger.bmp を格納します。
    もともと Tiger.x には法線が設定されていないのですが、テクスチャも無くのっぺらぼうの輪郭だけになりました。
    C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\Bin\x86>meshc
    onvert /o C:\TMP\Tiger.sdkmesh C:\TMP\Tiger.x
    

コンパイル&実行

  1. Sample Browser から [MeshConvert] の Install Project をクリックして、プロジェクトを作成して下さい。
    そのままプロジェクトをコンパイル&実行して下さい。
    エラーが発生するときや、正常に実行出来ないときは、残念ながら現在の構成は相性が悪いようです。
    OS とコンパイラと DirectX のバージョンとビデオボードの組み合わせを工夫して下さい。
  2. コンソール画面に表示される MeshConvert の説明です。
    Usage: MeshConvert <options> <input filename>
    
       <input filename>    Input mesh filename.
                           The input file can be of .x, .obj, or .sdkmesh format
       /o <file>           Optional output mesh filename
       /y                  Overwrite existing destination file
       /n                  Generate normals
       /t                  Generate tangents
       /tb                 Generate tangents and binormals
       /tcount <count>     Texcoord count for the output mesh
       /a                  Output animation information
       /op                           Vertex cache optimize the mesh before exporting
     (non-functional)
       /sdkmesh            [default] convert to .sdkmesh binary file
       /x                  convert to .x binary file
       /xt                 convert to .x text file
       /v                  Verbose
    
    .SDKMesh is a simple custom mesh format used by new SDK samples
    
  3. コンパイルで作成された MeshConvert.exe と Tiger.x と Tiger.bmp を C:\TMP\ のフォルダーに格納して下さい。
    コマンドプロンプトの画面から次のコマンドを実行します。
    C:\TMP>MeshConvert.exe /o tiger.sdkmesh /n tiger.x
    Press ENTER to continue.
    
    Tiger.sdkmesh を Viewer で起動すると、法線ベクトルが設定されてテクスチャが貼り付けられた虎が描画されます。
  4. Tiny.x と Tiny_skin.dds を C:\TMP\ のフォルダーに格納して下さい。
    コマンドプロンプトの画面から次のコマンドを実行します。
    C:\TMP>MeshConvert.exe /o tiny.sdkmesh /sdkmesh tiny.x
    Press ENTER to continue.
    
    Tiny.sdkmesh を Viewer で起動するとテクスチャが貼り付けられて描画されます。
  5. /a(Output animation information) を指定して変換してみます。
    コマンドプロンプトの画面から次のコマンドを実行します。
    meshconvert /o c:\tmp\anime.sdkmesh /a c:\tmp\tiny.x
    
    anime.sdkmesh と anime.sdkmesh_anim が作成されます。
    ただし、anime.sdkmesh はポリゴンが相当荒く、テクスチャが崩れ「くしゃくしゃ」になりました。

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