2020年9月7日月曜日

ジョイントの表示形式

アニメーションさせるようなキャラクタでは、バインドさせるためにジョイント階層を作ると思います。素体のようなマッパなら良いのですが、衣装着たりすると、骨の数が多くなってゆき作業中のビューがジョイントだらけになってしまいます。

そんな場合の回避策です。


簡単な方法では、visibilitryでジョイントを非表示にしてしまおうというのが思い浮かびます。
ただ、いちばんジョイントが邪魔になるのは、腰にぶら下がったスカートみたいな根元だったりします。こんな感じ。
枝わかれのジョイントの存在感・・・。

フェイシャルがジョイント仕様だった場合、唇やマブタなんかも、こうなりがちです。Radius を 0 にしても良いのですが、密集していると大して変わらない感じですかね。

そこで、ジョイントのアトリビュートの Draw Style というのをイジリます。
ここを「None」にすることで、下位階層へ影響を与えることなくジョイントを非表示にすることが可能です。
スキンウェイトを編集するときなど、かなり捗ります。

完全に消えてしまうため、選択は Outliner とか使わないといけなくなるので、中間の「Multi-child as Box」にしてみます。
子ジョイントの範囲のボックスが表示されました。


ここからは応用編。
この機能をリグに活用してみます。

メッシュをバインドしているジョイントを拘束するようなリグコントローラを作ると想定します。

このジョイントとは別の階層へ、グループノードへ階層化した"ctrl"と命名したジョイントを1つ。"ctrl"の子へジョイントを2つ階層化させ、それぞれ"endA", "endB"と名付けます。

"ctrl"がバインドしている1つ目のジョイントを拘束するリグコントローラになります。
そして"endA"と"endB"は、"ctrl"が拘束するジョイントの子ジョイントの位置まで移動させ、ちょっと外側へオフセットさせます。

"ctrl"の Drow Style を「Multi-child as Box」に変更し、Radius をゼロにします。
そして、"endA"と"endB"の visibility をオフにします。
すると、"ctrl"の階層の範囲でボックスが表示されます。
あとは、overrideColorを変えたり、リグコントローラっぽく編集してゆけば完成です。
サイズが小さくてもメッシュを透過してくれるので、ピックアップも楽々。

ただ、カーブオブジェクトではないので、ビューのフィルタリングがめんどくさくなるんですよねぇ・・・。

0 件のコメント:

コメントを投稿