デベロップ掲示板
このフォームからは投稿できません。
name
e-mail
url
subject
comment

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

■502 / 1階層)  elemファイル仕様について
□投稿者/ オノデラ Lv20(233回)-(2008/06/05(Thu) 01:29:10)
http://sorceryforce.com/
     DEARNA さん今晩は、オノデラです。

     今回の質問に返答するために .elem ファイルの再生サンプルコードを探していたのですが、消してしまったのか何かしたかで見つからなかったので、覚えている限りでお答えしたいと思います。(後でもう少し調べてみます)
     もし解釈の違いなどがあれば再度ご連絡ください。


    > フォーマット仕様内に記載が見当たらなかったので、頂点座標、行列の要素値などからelemファイルは.xと同様の左手座標系で記録してあると判断致しました。

     はい。現在 .elem ファイルは左手座標系として出力しています。


    > NodeMatrix = QuatSlerp( AnimationPart.RotateKeys , time ) * Node.InitPostureMatrix * ParentNodeMatrix
    > VertexBlendMatrix = MeshContainer.OffsetMatrices * NodeMatrix

     この計算式で問題ないと思います。


    > そこで確認したところ、MeshContainer.OffsetMatrices のZ軸に関する要素が.xファイルと違い符号が反転されている事を発見しましたので、これを修正したところ期待した左手座標系の動作になりました。

     すみません、確かにこのあたりで右手座標系のままで出力されているような値がありますね。まだ詳しくは確認していないのですが、後でもう一度確認してみたいと思います。もし現状で不都合がある場合は、一度 Ver1.1 のプロジェクトとして保存して、エルフレイナ Ver1.1 から .elem ファイルを出力していただければと思います。


    > 現在線形補間以外の補間が設定できますが、スプライン補間などで使用する接線パラメータ、また補間で影響している要素は何でしょうか?

     エルフレイナではスプラインとしてまとめてしまっていますが、実際には移動、回転、拡大で異なる計算式を用いています。

     まず、移動と拡大については「3次スプライン曲線」を用いて計算しています。

     回転については Managed DirectX にある「Quaternion.Squad」メソッドと「Quaternion.SquadSetup」メソッドを使用して算出しています。たとえば、インデックス2と3のクォータニオンのキーの間を補間したい場合は、その前後にあるインデックス1と4のキーも用いた計算になります。Managed DirectX のヘルプを引用してプログラムを示すと、

    Quaternion Q0 = キーインデックス1のクォータニオン;
    Quaternion Q1 = キーインデックス2のクォータニオン;
    Quaternion Q2 = キーインデックス3のクォータニオン;
    Quaternion Q3 = キーインデックス4のクォータニオン;
    Quaternion A = new Quaternion();
    Quaternion B = new Quaternion();
    Quaternion C = new Quaternion();
    Quaternion Qt = new Quaternion();

    Single time = 0.5f;

    Quaternion.SquadSetup(ref A, ref B, ref C, Q0, Q1, Q2, Q3);
    Qt = Quaternion.Squad(Q1, A, B, C, time);

    のような形になります。時間である time は単純な線形補間として求めています。ただし、この計算はあくまでもエルフレイナの内部で行っている処理で、今後補間の計算式が変わるかもしれません。ですので、スプライン補間などは今のところ実装側で対処していただいたほうがいいかもしれません。もし接線を求めたい場合は、前後のキーの差分ベクトルから求める形でもいいのではないかを思っています。(回転については一応案はあったのですがすみません、ど忘れしてしまいました)


    > 可能であれば左手座標系(DirectX)、右手座標系(OpenGL)と選択できるようにする予定はあるでしょうか?

     前に書いた座標系のバグらしき問題もあるので、まずは先に左手座標系を正しく出力できるように修正したいと思います。右手座標系については今後すぐに対応するか未定ですが、要望として受け止めておきたいと思います。(現在ライブラリの調整中でして、その際に対応できそうであれば実装したいと思います)
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←elemファイル仕様について /DEARNA →Re[2]: elemファイル仕様について /DEARNA
 
上記関連ツリー

Nomal elemファイル仕様について / DEARNA (08/06/04(Wed) 22:35) #501
Nomal elemファイル仕様について / オノデラ (08/06/05(Thu) 01:29) #502 ←Now
│└Nomal Re[2]: elemファイル仕様について / DEARNA (08/06/06(Fri) 15:58) #503
│  ├Nomal ブランドスーパーコピー / ブランドスーパーコピー (13/06/29(Sat) 11:09) #505
│  │├Nomal スーパーコピーブランド / スーパーコピーブランド (13/07/05(Fri) 11:02) #507
│  ││└Nomal スーパーコピーブランド / 竹内 裕喜 (14/07/29(Tue) 15:42) #514
│  │├Nomal Re[4]: ブランドスーパーコピー / 業界人気NO.1 (17/03/08(Wed) 21:27) #591
│  │└Nomal スーパーコピーブランド / ■連絡先 (17/03/10(Fri) 20:21) #593
│  └Nomal 最先端技術でスーパーコピーオーデマピゲ.. / オーデマピゲコピー (15/05/12(Tue) 14:49) #519
│    ├Nomal スーパーコピーロレックス時計 / 時計 (16/01/16(Sat) 16:01) #528
│    └Nomal x時計N品専売 / x時計N品専売 (16/04/20(Wed) 15:29) #564
Nomal Re[1]: elemファイル仕様について / パネライコピー (13/07/05(Fri) 15:05) #508

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/

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

- Child Tree -
- Antispam Version -