動画の概要
ローカルリギングとは何か?について解説しました。
結論としては、『余計な評価をなくすこと=ローカルリギングになっていく』
というところでしょうか。
例えば、描画でもドローコールを減らすことで負荷を減らすといった手段がありますが
考え方はそれに近いものかもしれませんね。
dgtimerのサンプルコード
dgtimerを使うことで、DG評価時の各ノードの負荷を知ることができます。
つまり、余計な評価がされているかどうかはdgtimerで知ることができます。
proc traceDG(int $min,int $max, string $path){
playbackOptions -min $min -max $max;
int $curt = `currentTime -q`;
currentTime -e $min;
select -cl;
float $startTime = `timerX`;
dgtimer -on -reset;
play -wait;
dgtimer -off;
float $totalTime = `timerX -startTime $startTime`;
dgtimer -show compute -sortMetric compute -sortType self -outputFile $path -query;
currentTime -e $curt;
print ("AllTime: " + $totalTime);
}
traceDG(0,100,"D:/Maya/DGTimer/world_compute_self.txt")
ちょっと待って、Parallel評価の存在
負荷という観点
MayaがDG評価しかない時代はローカルリグの強さがありました。
しかしParallel評価が出現したことで、
このローカル化の恩恵が低くなったのは事実だと思っています。
またアニメーションキャッシュもあるので、
Parallel✕アニメーションキャッシュのおかげでローカル化もしなくてもいいかなぁ…
と個人的にはなっています。
ローカル設計をするコストがアニメーターの作業コストを減らすことに直結するのであれば、
ローカル化を取り入れるのも良いかもしれません。
考え方を養うという意味でローカル化は良い
これも個人的にですが、ローカル化を考えることそのものは得るものが多いです。
例えばですが、
ここはローカルでまとめておこう…とか。
こっちはワールドにしておこう…とか。
ワールドとローカルを頭の中で考えて設計できるようになります。
ワールドをそのまま使えない時も結構あります。
特にワールドの回転情報ではなくローカルの回転情報が欲しい時とか結構あるんですよね。
UE4のコントロールリグでもそうですが、ローカルとワールドの概念が存在します。
また、最近公開されたミーアキャットデモでも上手くローカルとワールドを使っていました。
Weta Digitalなので当然ですけど…。
おすすめは、処理を自前で計算してみること
例えばですが、
ワールドマトリックスが使われている部分はmultMatriで自前でワールドにしてみたり、
コンストレイン系のノードに接続されているworldMatrixをmatrixに変更してみたり、
そもそもコンストレイン系ノードを自前で計算してみたり…。
この過程は個人的に得るものがあったのでオススメです。
個人的に役に立った書籍は、ゲーム3D数学ですね。
結局数学かよ…ってなっちゃうんですけど、
リギングって結局数学かも?と今では思ってます。
一昔前は、ウェイトとリグをコンストレインで結びつければ成立していた気もしますが今は難易度が高くなりましたね。
とよく思います。
コメント