タイトル | : Re^6: 追伸 |
投稿日 | : 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)では
現在の回転と移動を同時に取得出来るようになっておりますので
ご留意下さい。
以上、宜しくお願い致します。