ゲームエンジンとかで、ジョイントのスケールをゼロにすると条件によってはエラーになる場合があります。
子階層の無いジョイントは、まぁ、大丈夫そうなんですが、子階層があると行列計算が爆発するのでエラーになるんだったような気がします。
ゲームエンジンによって癖が違うようなので、そうならないようにリグのほうでアトリビュートにリミットを掛けたりするのですが・・・。
大抵の場合、100分の1では微妙にポリゴンが見えてしまうので、1000分の1くらいをコマンドを使ってリミットをかけます。
{ transformLimits -sx 0.001 1 -esx 1 0 "joint1"; transformLimits -sy 0.001 1 -esy 1 0 "joint1"; transformLimits -sz 0.001 1 -esz 1 0 "joint1"; }
これで、値をゼロを設定しても、0.001で止まってくれるはずです。
ここで、アトリビュートエディタのリミットを確認してみます。
なんか、桁数が足りていません。
試しに、ここで編集してみます。
Scale Limit Xを0.005にしたら、0.01へ
Scale Limit Yを0.002にしたら、0.00になりました。
ここの状態でChannelBoxを編集すると・・・
なにも編集していなかったScale Zはそのままで、Scale XとScale Yはリミットの値がアトリビュートエディタと同じになりました。
とくに厄介なのは、Scale Y で、リミット値が 0なんですよねぇ。
ゼロにしたくないからリミット掛けているのに無意味になってしまいました。これは、バグなんでしょうか・・・?
このリミット設定は、Scale だけでなく Translate も Rotate も同様なので、コマンドを使って設定を行った方が良さそうです。
0 件のコメント:
コメントを投稿