最近のトラックバック

無料ブログはココログ

« 【QuadrupleD】DDSDを使うと誤動作 | トップページ | 【D3D】アルファブレンド・合成演算 »

【D3D】LightWave3DアニメーションX出力(その後)

今頃になって実践的な実験を開始しました(汗)

とりあえず、ワンスキンメッシュでアニメーション出力ができました。
ただし、必要な情報が出力されなかったり、複数モーションをひとつのXファイルに入れるにはファイルの中身をいじる・・・などの作業が必要です。
まぁこのぐらいなら簡単なのでとりあえずは手作業でコピペします(^^;
時間ができたら複数モーションを組み込むツールでも作ろうかと思います。

以下作業のメモです。

●LightWave3D Ver9.6 の設定。

  • シーンは 60fps に設定する。(作成するゲームなどのFPSに合わせる。)
  • モーションを設定したら、ファイル->出力->Export DirectX(x) でプラグインを起動。
  • Export File に、出力先のファイルを指定。[...]ボタンでダイアログ選択可能。
  • Texture Directory にテクスチャファイルの出力先を指定。通常はxファイルと同じ場所でOK、。
  • Export タブ
    Version -> DirectX 8 必須。
    Format -> Text 後でエディタで作業するので。
    Export Materials -> ON サーフェス設定出力。
    Export Templates -> ON テンプレート出力。
    Export Animation -> ON もちろんON。
    Export Frames -> ON ていうか、バグでOFFにできない(^^;
    Frame PreFix フレーム名称の接頭辞。ご自由に。
  • Mesh タブ
    Export Mesh Normals -> ON 法線情報。スムージング書けるなら必須。
    Export Vertex Colors -> ON or OFF 頂点カラーを使うならON
    Export Texture Coordinates -> ON or OFF テクスチャのUV座標を出力するならON。
    Reverse Texture V Coordinates -> UVのV座標を反転する。BMP,PNGなどの画像を使う場合はデータ上V情報が反転しているのでON。
    Specify Max of SkinWeits/Vertex -> OFF 1頂点当りのウェイト数最大値制限。
    Triangulate All of Polygons -> ON or OFF 全てのポリゴンを三角分割するならON
  • Material タブ
    Material Formal -> Inline xファイルに内包させる。
    Replace Surface Color with Texture -> ON サーフェス色を白にしてテクスチャで置き換える。OFFにするとサーフェス色とテクスチャがブレンドされる。
  • Texture タブ
    Texture Images -> Use Original Files もとのテクスチャ画像ををそのまま使う。
    Texture Filename -> FileBodyname 埋め込むテクスチャファイル名はファイル名のみにする。AbsoplutePath(絶対パス)はフォルダ固定なので危険。RelativePath(相対パス)はフォルダ構成に応じて。
  • Animation タブ
    Frame to export -> KeyFrames Only キーフレームのみ。補完方法はDirectX任せ。
    LightWaveの曲線を再現するなら、~ Sampling を使うが、Frame Stepsごとに出力されるのでファイルサイズが大きくなる。
    場合により使い分ける。
    Remove Unusable Keyframes -> ON モーションに変化の無いキーフレームは削除。
    Use Matrix Key -> ON それぞれのフレームをマトリクス変換する。親から見て相対位置、回転にできるので通常はON。OFFにすると原点を基準にする。
    Export Camera Frames ~ カメラモーションを出力するならON
    Export Light Frames ~ ライトモーションを出力するならON
    Bake Fulltime IK Motions -> ON IKをキーに焼き付けてから出力する。IK使ってるならON。
  • Preview タブ
    出力後にXファイルをプレビューするアプリを設定。
    とりあえず、DirectX SDK付属のビューワを指定。(引数でファイルが取得できればなんでもOK)

●FPSの設定
なぜか、FPSの情報が出力されないので、以下のチャンクをコピペします。

(テンプレート)
template AnimTicksPerSecond {
    <9e415a43-7ba6-4a73-8743-b73d47e88476>
    DWORD AnimTicksPerSecond;
}

(実装部)
AnimTicksPerSecond {
    60; ←ここがFPS
}

●複数モーションの設定
LightWaveはアニメーションソフトなので、通常はひとつのシーンでひとつのモーションを作成します。
複数モーションを含むxファイルを作成するには、同じセッティングのシーンを流用して複数のXファイルを出力し、実際に使用するファイルをテキストエディタで開いて、他のファイルから以下のチャンクをコピペします。(****は任意の名称)

AnimationSet **** {
    Animation **** {
        { **** }
        AnimationKey {

            (ここに複数行のアニメーションデータがあります。)

        }
    }
}

AnimationSet **** チャンクが複数あると複数のアニメーションが設定されているとみなされるようです。
AnimationSet **** の****の部分がLGP4のG3@FRMGETANI で指定するアニメーション名に相当するようです。
記述された順番(一つ目=ゼロ)が G3@FRMSETANI や、G3@FRMSETANICHG で指定するアニメーション番号のようです。
(私が実験した範囲での解析結果なのであいまいな表現になっています。すみません。)


これで、複数モーションが記述されたxファイルができあがりました。ちょっと手間がかかりますが、LightWaveで作業する場合の覚え書きとして載せておきます。

« 【QuadrupleD】DDSDを使うと誤動作 | トップページ | 【D3D】アルファブレンド・合成演算 »

DirectX」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 【QuadrupleD】DDSDを使うと誤動作 | トップページ | 【D3D】アルファブレンド・合成演算 »