楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル

log

2010.02.09 Lscript:作りたいスクリプトメモ

とりあえず、Lscriptを使ってモーションリターゲットのスクリプトを
組めないかなと思ったので、オイラー角について色々調べてみました。

色々調べたり、試したりしているうちにアルゴリズムらしきものが
みえてきたので少しメモしておきます。

①リターゲット元とリターゲット先の任意のボーンに対し、
 そのボーンからルートのボーンまでのH,P,Bを取得し、
 それらを元に任意のボーンの、ワールド座標系からみた
 各回転軸の基底ベクトルを取得
②リターゲット先の各回転軸の基底ベクトルとリターゲット元の
 各回転軸の基底ベクトルの差を取得し、リターゲット先の
 H,P,B回転方向に差分を分解
③リターゲット先の回転キーには"リターゲット元の回転角度+差分"を代入

これでいい…のかな。
最近になってようやく3D数学を基礎から勉強してるのですが、
ようやく行列の入門に入ったばかりで、オイラー角もクォータニオンも
ほとんどまだ詳しくないので、実際には何ともいえない状況です。。
それと個人的にはLWでDivideやConnectをする際、アイランドが異なる
UVは自動的にヒールされてしまうというよく分からない現象が起こるので、
ヒールせずにポリゴン分割するスクリプトも出来れば作ってみたい。

といってもまだLscriptについてほとんど何も分からない現状なので、
まずはLscriptの基礎から覚えていこうかなと思います。

comment

たけなか 2010.02.09-08:38 Edit

③の代入式がなにやら違うきがする。。

たけなか 2010.02.09-08:48 Edit

リターゲット元の回転角度もH,P,Bに分解して代入する必要があるかな。

たけなか 2010.02.09-11:04 Edit

親ボーンとの親子付けを解除すれば自身のボーンだけしか
計算を考えなくていいのか。てことはスクリプトを開始時に
ボーンの親子付けを解除して、最後にまた親子付けすればいいのか。

なるほど…。と思ったので試してみたら、親子付けを解除すると
タイムライン上で現在指定しているフレームを基準にして、
回転だけではなく移動値まで変換されてしまう(現在のフレーム以外の
キーにタイムラインを移動させるとなぜか子ボーンが変なところ
に飛んでいってしまいました。おまけになぜか回転値も変わる)
という現象が発生したのでこのやり方は出来ないみたいだ。

な、なんだこりゃ。。
と思ったら、そういや移動値も親ボーンとの相対的な距離が
格納されているのか。

うーん。正直LWのSRT変換処理はLW独自の中心点回転記録にしても
そうだけど、かなり使い勝手が悪いものだと思う。
普通だったら親子付け解除前と後で同じ位置になるように
全てのキーフレームを変換し直すと思うんだけど、現在のフレームに
対してしか同じになるように処理してないんですよ。いい加減だなあ。

post your comment

投稿フォーム
name
mail
url
comment
icon
アイコン一覧
del key