見出し画像

【VRChat】Unity-Clothコンポーネントを使用しての肌の柔らかさの表現方法【#ClothBreasts】

※ちょっと内容がNSFWかもしれません、ご注意ください。


VRChatでは女性アバターでかつある程度胸があるモデルについては、ほぼダイナミックボーン(以下:DB)で胸が揺れるという演出が付随しているのは周知の事実ですよね。
このNoteではDBだけではなく、さらにVRChat内で使用可能である揺れ物コンポーネントの一つであるClothを併用して、もう一つ上のレベルの表現が出来るという事と、その方法を簡単に説明させて頂きます。

情報交換等の利便性を高める為、便宜上この構造を #ClothBreasts という名前で呼ぶ事にしますが、特別凄い仕組みを作っているわけでもなく、今までもあったコンポーネントを組み合わせて適宜セッティングしただけの物になります。

現にこれは一年ほど前にはすでに構想していたのですが、自分が公表せずとも誰かが気付くだろうと思いそっと眠らせていたものです。
ちょうど水着アバターを買う機会を得たのと、夏前で時期的にも丁度良いかと思い、記事に起こさせて頂きました。

DynamicBoneとClothは併用出来る

普段VRChatの界隈ではDBかClothか?といった二者択一的に語られがちですが、DBが適用されたボーンにウエイトが乗っているメッシュにClothを付ける事は可能です。また女性アバターの胸は綺麗な丸みがあるのでポリゴンが密集している事が多く、Clothコンポーネントを適用しても違和感が出にくいという事が言えます。
ただ、それなりに負荷はありますので、人が多い場所やイベント等での使用等については、問題が無いかどうかTPOに合わせてご判断下さいませ。

この試みは、女性の胸の構造をDBとClothで置き換える事でよりリアルな表現が出来るのではないか?という思い付きによるものです。
DBが全体を支える靭帯の役割をしていると見立て、そこに+αでClothで皮下脂肪の柔らかさを再現するイメージです。

正直な所、結構手間がかかる割に得られる結果はぱっと見そこまではわからない程度です。それでも指先にコライダーを仕込めばメッシュに直接触れるようになったり、特有の柔らかさや重さの加減の表現が可能になったりと、リアルさという点ではとても良いものになりますので、こだわりたい星人の皆様はぜひチャレンジしてみて下さい。

追記:ここではClothをある程度扱える人を前提に書きますが、Clothの扱いが不安な方は実作業動画をアップしておりますので、適宜併用して作業して貰えればと思います。
また作業に当たってはベースのアバターをCtrl+Dで複製し、複製した方を改変に使用してください。


実作業動画

Summer for U by QuQu

こちらのアバターはバストのメッシュ密度が濃いのでとても動きがなめらかになり、またメッシュ形状もとても相性が良いです。

Scented by 紅茶のお店

バストのメッシュ密度が高ければ高いほどClothの動きが滑らかになりますが、そこまで密ではないモデルでもStiffnesの数値を少し下げてメッシュを伸ばすことで、ある程度再現することは出来ます。
ただ、あまり柔らかくしすぎると、どうしても頂点が曲がり角になりますので真横から見た時に角が立って見えたりする事があります。

画像1

センティッドさんの最終的な設定値です。ポリ割が少なめなアバターの目安にして頂ければと思います。

作業内容

①胸部メッシュを分割する
BlenderもしくはUnity上のアドオン等を使用して胸部とそれ以外にメッシュを分けます。

私はUnity上で完結させましたのでその方法を書きます
1.身体のメッシュをCtrl+Dで複製する。
2.胸部を削除したメッシュと、胸部だけを残したメッシュを作成する。
(メッシュが別でウェイトが乗っているボーンは同一になります。)
これは、がとーしょこらさんのMeshDeleterWithTexture(https://booth.pm/ja/items/1501527)を使用して行うのが、手っ取り早いかと思います。
ただ、UV展開が胸部の丸みを帯びた部分だけ離れている場合はとても簡単なのですが、身体と胸部がつながっている場合は少し難しく成ります。
もし余白が残って重なってしまった場合、ZーFighting(重複部分のメッシュのちらつき)が起こる可能性があります。
ある程度胸部メッシュを切り抜く範囲を大きくして、ポリゴンの間隔が広い所で分割すればやりやすくなります。
ただ、その分Clothが適応されたポリゴン数が増えてしまいますので、あまり多くなりすぎると負荷的に特に注意が必要になります。
(Clothが適応されたポリゴンが200を超えた場合はAvatarStatsがVeryPoorになります。というか前述の通りバストはポリゴンが密集しているので、この作業をすると多分ほぼ間違いなくVeryPoorになります。ご注意下さい。)

②胸部メッシュにClothコンポーネントを適用する。

胸部メッシュにAddComponentからClothを適用します。
次にウェイトを塗って行きますが、これについて幾つか注意点があります。

☆Clothのウェイトを塗る時は、アバター全体を20倍程度に拡大して下さい。その方が断然塗りやすいのでお勧めです。

☆Clothコンポーネントを適用すると、Boundsのボックスがどっか明後日の方向に行きますが、Unityの仕様ですので諦めるしかありません。
(これに伴ってアバターに近寄るとバストのメッシュが消えますが、そのまま作業を進めて下さい。再生ボタンを押すとBoundsが戻り元通り表示されます。)
また全体のスケールを変更した時に、Boundsの大きさだけそのままという事が多々起こりますが、バストのメッシュもしくはClothのコンポーネントをON/OFFすると直ります。

☆ウェイトを塗る時に頂点のマーカーがBounsBoxにくっついて別の場所に表示される事がありますが、その場合はメッシュを複製してそのメッシュを使用してください。おかしくなった複製元のメッシュは削除してOKです。
もしかしたらUnityのレイアウトをDEFAULTに戻しても直るかもしれません。

☆身体や衣服のメッシュとの接続部は必ずウェイトは0ゼロで塗る事。接続部が稼働するとメッシュのすき間が出来てしまいます。
かつ出来れば揺らしたい部分をウエイト0のマーカーで二重に囲うと周りとの繋ぎ目が分かりにくくなります。
☆塗るウェイト数値は多くても0.005まで。推奨数値は、あまり動かない部分は0.001で動く部分は0.002-3程度で十分です。全部0で塗りつぶした場合はメッシュが固定されてしまいます。
この数値は元のメッシュの形からどれぐらい頂点が移動するか?という事なのですが、Clothの場合DBと違って布の再現である為、移動しても元に戻る復元力がかなり弱いので、大きい数値を入れたら肌のハリが無くなり、肌の表面にシワが寄って戻らなくなります。

☆Stiffness・Dumpingは基本「1」ですが、メッシュの密度によっては0.1ずつ減らして柔らかめにするのもアリだと思います。UseGlavityはOFF、ExtarnalAccelerationは胸の大きさに合わせてY軸にマイナス値を入れると重さ(水着のフチに乗る・あふれる表現等が出来る)が表現出来ますが、数値が大きすぎるとClothの効果が目立たなくなりますし破綻しやすくなります。(目安:-0.2~-0.8程度)場合によってはUseGlavityを使っても良いかもしれませんが、基本ExtarnalAccelerationを使用する事を推奨します。
WorldVelocityScaleは0に調整してください。
SolverFreqencyはシュミレーションの精度を上げる数値ですが、上げるとそれだけ負荷が増えますので注意して下さい。


ウェイトを塗り終わったら、アバター全体を元のスケールに戻してください。そして再生ボタンを押して揺れ方を確認して下さい。
複製した元のアバターを比較して貰えると、どれぐらい変わったかがわかりやすいと思います。
ウェイトの数値を増やしてもそこまで劇的な変化はありません。逆に前述のデメリットが出てくるので、調整の際はDBの方も触って見て下さい。
全体的な揺れはDB、表面が波打つ様子がClothの役割です。

③指先にCapsuleColliderを仕込む

DBについては、手にDBコライダーを適用する事によってボーンに触れる事が出来る事は皆さんご存じだと思います。
それと同様にClothもCapsuleコライダーを指先に仕込む事によって、メッシュの頂点に直接触れる事が出来ます。
ただ実際の胸の様な反発はありませんので、勢いよく指を突っ込んだらメッシュを貫通してしまいます。あくまで指先でプニプニ出来るぐらいのおまけ的な要素と考えて貰えればと思います。

☆Capsuleコライダーはis Triggerにチェックを入れる事
☆Clothコンポーネントで接触するCapsuleコライダーを指定する事
☆手にDBコライダーが入っている時、場合によっては指先より手のDBコライダーが先に胸のボーンに接触する事がありますので、指先で触れられたい方は適宜調節して下さい。

④アップロードして完成!

お疲れ様でしたこれで完成です。

この仕組みに関しては #ClothBreasts というハッシュタグでツイートしますのでもし何か情報が欲しい場合や、また作例やさらに発展させたり等で自分から情報を発信したい場合は、ぜひこちらのタグをご利用下さいませ。

この記事のアバターは、PixivBoothの3DモデラーSonoさんのブース、QUQUよりSummer for Uのアバターを使用させて頂いております。

リーズナブルかつとてもクオリティの高いアバターとなっておりますので、ぜひぜひPixivBoothの方に見に行ってみて下さいね♪
また動画でも見て頂ける様に#ClothBreastsとの相性が抜群になっています。
この夏に向けてUちゃんの導入を検討してみてはいかがでしょうか??

Summer for U | QuQu https://booth.pm/ja/items/2971318
Summer for U on YouTube


この記事が気に入ったらサポートをしてみませんか?