タイトル | : Re^6: 追伸 |
記事No | : 76 |
投稿日 | : 2008/01/27(Sun) 15:22:50 |
投稿者 | : mqdl |
ご無沙汰しておりますmqdlです。
随分と時間が経ってしまいましたが、ボーンプラグインを更新しました。
当初の予定であったカメラアニメーションは、色々と試行錯誤してみたのですが、 そもそもオブジェクトライトやオブジェクトカメラの概念の無いMetasequoiaでは 実装に無理が出てきてしまい、対応が長期化しそうであった為、 一旦保留と言う形にさせて頂きました。
以下の点は今回の更新で対応出来たと考えております。
>・ボーンの親子付けについて CXSBone::GetChildCount(void) CXSBone::GetChild(int index) を追加致しました。
>・ボーンの初期状態に関して ボーンの初期ローカル回転量はすべて0になっています。 直感的に操作出来るようにと、ボーンのメッシュやハンドルが 回転した状態に見えるようにしているので、この点 誤解を招いてしまったかも知れません。
>・アニメーションについて 外部からベイクが出来るようにSetAnimationSetを追加しました。 ただ、indexの配列が内部と外部アクセスで異なるので ご注意ください。 例えば、ボーンプラグイン側で motA,motB,motCがあったとして、motBにはフレームを追加して いなかったとします。この際、外部出力されるのは motAとmotCのみです。 その為、CXSAnimationSet::GetIndex(void)で内部のindexを 調べる必要があります。 #つまり外部プラグイン側で二番目のAnimationSetは"motC"ですが #ボーンプラグイン側の二番目は"motB"になります。
つまり、全要素にアクセスするためには
for(int i = 0; i < xs->GetAnimationSetCount(); i++) { ExportXS::SetAnimationSet(doc,i); }
ではなく、
for(int i = 0; i < xs->GetAnimationSetCount(); i++) { XSAnimationSet xset = xs->GetAnimationSet(i); int index = xset->GetIndex(); ExportXS::SetAnimationSet(doc,index); }
とする必要があります。
ボーンプラグインの内部ではアニメーションを 回転Quaterninと移動Vectorで保持しています。 CXSBone::GetMatrix(void)では初期の回転情報のみが 取得出来ますが、CXSBone::GetCurrentMatrix(void)では 現在の回転と移動を同時に取得出来るようになっておりますので ご留意下さい。
以上、宜しくお願い致します。
|