MechaStudio BBS

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

ツリー一括表示

Nomal Xファイルの出力 /黒翼 (07/10/30(Tue) 22:33) #80
Nomal Re: Xファイルの出力 /ピエール (07/10/31(Wed) 22:23) #81
  └Nomal Re: Xファイルの出力 /黒翼 (07/11/01(Thu) 21:00) #82
    └Nomal Re: Xファイルの出力 /黒翼 (07/11/01(Thu) 23:57) #83
      └Nomal Re: Xファイルの出力 /ピエール (07/11/02(Fri) 21:36) #84
        └Nomal 原因判明! /ピエール (07/11/04(Sun) 18:36) #87 118.jpg/63KB
          └Nomal そのファイル /ピエール (07/11/04(Sun) 18:42) #88 119.lzh/712KB
            └Nomal おぉ〜 /黒翼 (07/11/04(Sun) 20:45) #89
              └Nomal Re: Xファイルの出力 /ピエール (07/11/23(Fri) 11:23) #90


親記事 / ▼[ 81 ]
■80 / 親階層)  Xファイルの出力
□投稿者/ 黒翼 -(2007/10/30(Tue) 22:33:00)
http://www2.atpages.jp/fuckinjap/
    ToyStudio1203で出力したXファイルを、うまく読み込めなかったのでご報告します。

    現在DarkBASICProでゲームを開発しているのですが、ToyStudioで出力したXファイルがアニメしないようなのです。
    Xファイルは柔軟な(悪く言えば雑多な)構造を持つコンテナなので、読める読めないの相性も多いようです。
    以下、いくつかテストを行ってみました。


    Microsoft DirectX SDK (August 2007)付属のDirectX Viewer
    問題は無い。

    DarkBASIC Professional ver6.5
    表示は出来るが、アニメしない。

    ] ファイルビューア バージョン2.10
    http://www.vector.co.jp/soft/win95/art/se370901.html
    読み込めるが、表示できない。

    D-STORM,Inc. DX Viewer ver1.2
    エラーが表示され読み込めない。


    常に変化し続ける仕様に色々な人や会社が振り回されているようですが、
    ここはひとつ、どんなソフトでも読み込ませるつもりで開発してはどうでしょう?
    私もそれほどファイルフォーマットに詳しい訳では無いので、頓珍漢な例を出すかもしれませんがまとめてみました。


    改行コードの有無の切替
    Xファイルは出力するソフトによっては改行コードが有ったり無かったりします。
    この辺りの有無を変更できるようにしてはどうでしょう?

    タグの値の変更
    ユーザーが指定せずに固定値で出している値も全て変更できるようにする。

    タグの出力の切替
    例えば、AnimTicksPerSecond { }等は無くても動きます。
    このようにタグ自体を出力するかしないかを設定できるようにします。

    UV情報、テクスチャ情報の出力有無
    ゲームなどで使用する場合、モデルデータは同じでテクスチャは何種類も張り替える事があります。
    この為、テクスチャ情報は必要なかったり、邪魔になる時もあります。(でもUV情報は欲しい)
    その出力の可否を設定できるようにすると良いと思います。

    構造を可変にする
    この辺りは知識不足でなんとも自信がないのですが、データ構造をダイナミックに変えられる様にしてはどうでしょう?
    出力の順番を入れ替えたり、場合によっては親子構造の変更も出来るようにすると、かなりのソフトで読み込みに関する問題が解消するのではないでしょうか?

    コメント出力の有無
    #で始まる行はコメントですよね?
    これらの出力有無も指定できるようにすると良いのではないでしょうか?

    ポリゴンの分割方法、カリング方向等の設定
    最適化がされているでしょうし、これを一々指定するのは無理かもしれませんが、大雑把に指定できても良いと思います。

    テクスチャに全角文字などを指定していると問題が発生する場合があるので、
    そのようなテクスチャが貼ってある場合は出力時に警告を出すと良いかもしれません。


    以上色々と書いてみましたがどうでしょうか?
[ □ Tree ] 返信 削除キー/

▲[ 80 ] / ▼[ 82 ]
■81 / 1階層)  Re: Xファイルの出力
□投稿者/ ピエール -(2007/10/31(Wed) 22:23:00)
http://www.mechastudio.net/
    黒翼さま。
    詳しいご報告、ありがとうございます。とても助かります。

    Xファイルが正常に読み込まれない場合があるようですね。

    調べてみたいのですが、それらのソフトで動くスキンアニメーション付きの
    Xファイルがありましたら、単純なものでかまいませんのでファイルを添付して
    いただけないでしょうか?

    DirectX SDKに添付されているものなら、そのファイル名でも大丈夫です。

    ご提案されているXファイルの出力オプションは、FBXについても同様で、
    あった方が便利ですね。
    工数的にやりやすいものから対応したいと思います。

    「親子構造」については、親子構造がこういった場合には読み込めないソフト
    があるなどの実例があれば参考になります。
[ 親 80 / □ Tree ] 返信 削除キー/

▲[ 81 ] / ▼[ 83 ]
■82 / 2階層)  Re: Xファイルの出力
□投稿者/ 黒翼 -(2007/11/01(Thu) 21:00:00)
http://www2.atpages.jp/fuckinjap/
    申し訳ありません。
    報告は間違っていました。
    結論から言うとToyStudioで出力したXファイルはDarkBASICで読み込むと動きます。

    ただし、ぱっと見では気付かないほどゆっくりですが……。

    DirectX SDKの
    \Samples\Media\Tiny
    は物凄くゆっくりですが動いています

    RokDeBone2_ver3039
    のサンプルで入っているネコミミの娘にモーションを適用してX出力すると丁度良い速度で動きます。

    DarkMATTERも丁度良い速度で動きます。
    このモデルは素材集として販売されているものでDarkBASICにバンドルされています。


    DarkBASIC でも再生速度は調節できるのですが、最高速度で表示しても実用に足りない速度です。
    Xファイル内のAnimTicksPerSecondの値を弄ってみても速度が変わらなかったのでちょっと私には手が出せません。
    同じように、「どのようなデータ構造だと読めるか」というのはちょっと勉強不足で原因が特定できず、プログラマとしては情けない所です。
    DarkBASICでの表示チェックは私のページにメッシュビュワーを置いたのでよろしければそちらから。
[ 親 80 / □ Tree ] 返信 削除キー/

▲[ 82 ] / ▼[ 84 ]
■83 / 3階層)  Re: Xファイルの出力
□投稿者/ 黒翼 -(2007/11/01(Thu) 23:57:00)
http://www2.atpages.jp/fuckinjap/
    うーむ( ̄〜 ̄)
    アニメと時間の問題なので
    Animation〜
    も怪しそうですが、一番は
    TimedFloatKeys
    ですかね?
[ 親 80 / □ Tree ] 返信 削除キー/

▲[ 83 ] / ▼[ 87 ]
■84 / 4階層)  Re: Xファイルの出力
□投稿者/ ピエール -(2007/11/02(Fri) 21:36:00)
http://www.mechastudio.net/
    なるほどDarkBASICでは表示がゆっくりなのですね。
    キーフレームのデータ数や再生速度に関連する問題であれば、
    原因がわかればあっけなく解決する問題かも知れませんね。

    X-ファイルがらみの問題なので、
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/directx9_c/directx/graphics/reference/xfile/fileformat/textencoding/textencoding.asp
    とにらめっこする必要がありますね。

    > DarkBASICでの表示チェックは私のページにメッシュビュワーを
    > 置いたのでよろしければそちらから。

    これはいいものをありがとうございます!これでチェックができます。

    試してみたのですが、DirectX SDK付属の「tiny.x」(3D Studioで制作)と
    ToyStudioの出力ファイルでは全く同じ症状で、
    http://www.microsoft.com/japan/msdn/directx/japan/dx9/mxd6.aspx
    にアップされているスキニングを使っていない「AnimatedSkelton.x」でも同じ現象ですね。

    これらはどれもDirectX SDKに付属の正規のビューアーでは問題なく動くので、
    根本的な原因はDarkBASICでのxファイルの扱いに問題があるのではないかと思います。

    原因がわかれば、ToyStudioのXファイル出力でそれを避けるようなオプションをつければ
    いいので、再生が遅くなるファイルとそうでないファイルとの違いがわかれば対処ができますね。
[ 親 80 / □ Tree ] 返信 削除キー/

▲[ 84 ] / ▼[ 88 ]
■87 / 5階層)  原因判明!
□投稿者/ ピエール -(2007/11/04(Sun) 18:36:00)
http://www.mechastudio.net/
    色々試したところ、この件についての原因が判明しましたので報告いたします。

    結論から言いますと、ToyStudioで出力したXファイルに問題はなく、
    むしろ、最も仕様に忠実で正確なXファイルを出力しております。(^〜^)

    問題があったのは、Microsoft以外のビューアーや各種読み込み
    ライブラリーの読み込みコードにあるようです。

    上記のMicrosoftのサイトにアップされている「AnimatedSkelton.x」ファイルを例にしますと、
    -------------------------------
    Animation Anim-Bip01 {

    { Bip01 }

    AnimationKey {
    4;
    52;
    0;16;0.003860,-0.203785,〜;;,
    160;16;-0.009195,-0.195059,〜;;,
    ---------------------------------
    となっているところの

    0;16;0.003860,-0.203785,〜;;,
    160;16;-0.009195,-0.195059,〜;;,

    の部分が黒翼さんも怪しいとおっしゃっている
    「TimedFloatKeys」テンプレートであり、

    「時間」;「データ数」;「各データ」,〜;;

    という順番で記述されています。「時間」は正の整数で、
    「各データ」は浮動小数点数です。
    通常、この「時間」の数値はDirectXのサンプルやToyStudioでは
    1/3000 秒程度の単位で記述し、それをファイルの先頭付近で

    AnimTicksPerSecond
    {
    3000;
    }

    のようにフレームレートとして記述します。これは省略されることもありますが、
    DirectX SDKのMesh Viewerなどでは再生速度にきちんと反映されます。
    1/3000秒程度を時間単位とするのは、一般的なCGソフトではデフォルトで1/30秒を
    1フレームと換算する場合が多く、Xファイルの時間単位が正の整数
    なので、1フレームをさらに1/100単位で細分化できれば時間
    単位として充分な精度だと判断されるからです。

    DarkBasicやその他のビューアーでは「AnimTicksPerSecond」テンプレートを
    読み込まず、時間単位を1/30や1/60程度といった値でハードコーディング
    されているようです。
    この方法が適当でないのは、ファイルのAnimTicksPerSecondを変更
    することで再生速度を変えるといった操作ができないことと、一般的なCGソフト
    でのキーの単位は浮動小数点の場合が多く、
    1/30程度の精度ではキーの値が四捨五入されてしまうことがあるからです。

    ただし、 ToyStudioではこういった問題に対応する出力オプションをつければ済むので、
    次のバージョンアップで対応したいと思います。試しに
    http://www.mechastudio.net/software/extension/
    にある「jump-horizontal-takiguchi2.toy」をAnimTicksPerSecondを30として、
    つまり時間単位を 1/30として出力してみました。
    黒翼さんのDarkBasicビューアーでは、「アニメ速度=60」くらいにするとちょうど
    いい具合で動きます。

648×514 => 512×406

118.jpg
/63KB
[ 親 80 / □ Tree ] 返信 削除キー/

▲[ 87 ] / ▼[ 89 ]
■88 / 6階層)  そのファイル
□投稿者/ ピエール -(2007/11/04(Sun) 18:42:00)
http://www.mechastudio.net/
    これがファイルですので、試してみてください。
    今回、Xファイルの読み込み側の状況について、とても学ぶものがあったので
    黒翼さんにはとても感謝です。

119.lzh
/712KB
[ 親 80 / □ Tree ] 返信 削除キー/

▲[ 88 ] / ▼[ 90 ]
■89 / 7階層)  おぉ〜
□投稿者/ 黒翼 -(2007/11/04(Sun) 20:45:00)
http://www2.atpages.jp/fuckinjap/
    ピエールさん流石です!

    SDKのサンプルデータと挙動が同じだったので私もDarkBASIC側が怪しいな〜とは思ってました。
    これは開発元に報告しても「下位互換が保てなくなる」と突っぱねられる可能性が高いので次バージョンでの対応は嬉しいです。(^^)
[ 親 80 / □ Tree ] 返信 削除キー/

▲[ 89 ] / 返信無し
■90 / 8階層)  Re: Xファイルの出力
□投稿者/ ピエール -(2007/11/23(Fri) 11:23:00)
http://www.mechastudio.net/
    先ほどアップしたVer1.3で、単位時間数の設定ができるようになりました。
[ 親 80 / □ Tree ] 返信 削除キー/


Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -