スカートのリギング Cloth編
今回はUnityのClothコンポーネントを用いたスカートの作り方を解説する。
VRChatへの実装が前提となる。
こちらも自分用のメモついでなので、解説内容がわかりにくかも知れないがご了承を。
Clothの条件
・Clothを適用するには単一オブジェクトでなければならない
VRChatのアバターパフォーマンス上の注意点
アバターパフォーマンスランクがpoorを超えてVerypoorになると、主にサンプルアバターとして使う場合はあれこれ困ることがある。
poorに収まる条件は主に以下の2つで
・Clothコンポーネントは1つまで
・Clothで影響を受ける頂点数は200まで
となっているのだが、前者は問題ないとしても後者は非現実的である。
よって、この解説はVerypoor前提となる。
Blenderでの工程
今回はDynamicBone用に制作したスカートを改造して使う。
Cloth用オブジェクトは頂点数の問題から、ワンピースのような衣装は揺れる部分だけ分離する必要がある。
この関係でワンピースのような衣装はClothが使えるが、パフォーマンス的には向いてないと言える。
ベルトなどを追加して切断面が目立たないようにする必要がある。
ベルト部分を利用して、ベルトより下を選択して…
Pで分離する。
指定は選択部分だ。
元のオブジェクトから分離するので、適当な名前を付けておこう。
この時点で頂点数は624となっている。
200以下はかなり厳しい。
ちなみに、これぐらい減らしても頂点数356だ。
Clothを用いたpoorアバターの制作は、デザイン上の成約が大きいかも知れない。
リギング済みオブジェクトの場合は、モディファイアーにアーマチュアが設定されているはずだが、Clothを利用する場合はこのコンポーネントがあると正常に動作しない。
Xを押してアーマチュアのモディファイアーを削除しよう。
ボーンやウェイトはそのままで良い。
またDynamicBoneなどを利用したい場合は、モディファイアーからアーマチュアを追加するだけ良い。
UnityでCloth適用の下準備
Clothは先程の工程でアーマチュアを適用していないので、unityに取り込んだ際にbodyなどのメッシュとは違い、Armature下になっているので注意。
まずはUnpack Prefabをする。
ArmatureのHipsにClothを使うオブジェクトを移動させる。
これはスカートなどの場合だ。
InspectorタブからAdd ComponentでClothを検索して適用する。
Clothコンポーネントが追加されるので、真ん中上にボタンが2つあるがその左側の"Edit cloth constraints"を押す。
Sceneタブ上ではこのようなエディット画面になっていると思う。
この黒い丸いやつ(Constraint)をBlenderのウェイトペイントみたいに塗って影響をコントロールする。
ConstraintがでかすぎるならConstraint Sizeを小さくしよう。
MaxDistanceを0にして、スカートが脱げないように一番上の頂点はぐるっと真っ赤(0)に塗っておく。
これをしないと重力の影響を受けてそのまま脱げてしまう。
MaxDistanceは最大移動量だ。
頂点が初期位置からどれだけ動けるかというのを制御する。
単位はおよそ1=1mなのだが、衣装用ということを考えると小数点以下の数値で調整することになると思う。
黒だと未設定となるのだが、スカートなら正直1も未設定も変わらない。
個人的には骨盤付近まで0で真っ赤に塗るのがお尻の貫通がなくなって良いと思う。
コライダー
UpperとLoweのLeg LRを同時選択してInspectorタブからAdd ComponentのSphere Colliderを追加する。
Capsule Colliderも使えるが、こちらは丸いコライダーを伸ばしたりできるだけで脚の方にはできないので、Sphereがオススメ。
Sphere Colliderは判定をつなぎ合わせることができる。
UpperLegとLowerLegにそれぞれコライダーを設定し、コライダーは脚の太さに合わせて調節すればいい。
clothの設定項目からSphere CollidersのSizeを2にする。
太もものみならば、4箇所設定したと思うが繋ぐことができるのでここでは2となる。
膝下まで達するロングスカートは下腿(膝下から足首まで)も設定する必要がある。
プレイモード(再生ボタン)で脚を動かし挙動を確認する。
歩く、座る、膝を曲げるなど、想定されるモーションを一通り試しておこう。
コライダーは脚より若干はみ出す程度がおすすめ。
どうしてもぴったりサイズだと貫通することがあるからだ。
Clothの設定
丸投げだが、こちらの解説がとてもわかりやすい。