概要
Unityでゲームの制作をしているのですがキャラクターモデルのおっぱいを揺らしたいという話になりました。
胸にボーンがなく諸事情により増やすことも難しかったのでどうしたもんかなと思っていたところ
UnityのCloth(布のシミュレーション)を使えば擬似的におっぱいを作れそうだなと思ったのでやって見ることにしました。
実装
まず今回使用する被害者モデルがこちら
おっぱいの部分だけ別のメッシュとして作ってもらっています
今回はこのメッシュを布と見立てておっぱいにしようってわけです。ワクワクしますね。
まずおっぱいのメッシュにClothコンポーネントをアタッチします。
なんかいっぱいいじるところありますがとりあえずそのまま実行しちゃいましょう
おっぱいが自由落下しました。
RigidBody初めて使った人みたいな感じになってしまいました。これはこれで面白いのですがおっぱいそのものがなくなるのは困るので固定をしましょう。
落下した原因は簡単で重力を使う設定になっていることとこの布がどこにも固定されていないからです。
なのでとりあえず固定をします
ClothのコンポーネントのEdit Constraintsをクリックします。
すると何やらパネルが出てくるのでPaintモードにしてMaxDistanceにチェックを入れ数値を0にします。
この数字は設定された布の頂点が移動できる距離を表すので今回は固定したいので0にしています
マウスで固定したい頂点を設定していきます(赤色)
とりあえずメッシュの外周を赤にしてしまえば固定されるはずです。
それでは実行してみましょう。
おっぱいが潰れてしまいました。
大変残酷な光景になってしまいました。
望んでいる光景ではないのでさらに改善していきましょう。
Clothのコンポーネントをみているとコライダーが設定できるようになっています。
球体(Sphere)コライダーを置いておっぱいを作ってみましょう。
適当なボーンあたりでEmpty GameObjectを作ってSphere Colliderをアタッチさせます。私はoppaiColとしました。
こんな感じで大きさを調整し胸の中に埋めます。
ちゃんと左と右のおっぱいにコライダーを入れます。(別のGameObjectを作ってやる)
Sphere Colliderを設定するときは2つで1つのものを作ることができます。
2つ置いた場合はCapsuleColliderみたいになりますがコライダーの大きさの調整がしやすいのでSphereでやるのをオススメします。
設定するとこのようにおっぱいっぽいコライダーができます。おっぱいおっぱい。
では実行してみましょう
確かにおっぱいっぽい膨らみは少し生まれましたがこれをおっぱいだ!と喜べるのは小学生くらいでしょうね。
大人な我々としてはもっといい感じに揺れて欲しいです。
最後にCloth自体のパラメータもいくつかいじっておきます。
上の方にある
Stretching StiffnessとBending Stiffnessは布の伸縮率と布の曲げ剛性になっています。
今回はおっぱいなので伸びやすかったり曲がりやすいとおっぱいぽくないので両方1にしときます。
重力も切ってしまいます。
Dampingは動きの減衰係数になりますがとりあえず0のままで
World Velocity ScaleとWorld Acceleration Scaleが動きによる影響の割合なのでこの辺りは結構吟味して値をチョイスするのがいいかなーと思います。
ぷるぷるしてるー!!!!
かなりマシになりました。
夢のあるぷるぷる感です。
さてここから先はエンジニアの性的嗜好によるのですがコライダーを増やしたりパラメータの値を調整することで結構おっぱい感がでます。
私は最終的にこのようなパラメータで落ち着き(満足)ました。
コライダーはこんな感じ。ネクタイ制御用も含んでます
非常に健康的な揺れ方だと思います。
縦揺れもちゃんとしてくれるのでいいですね(満足)
参考
あまりこのClothを使ってる人が少ないようであまり情報がなかったのですが(というかおっぱいにこれ使ってる人いないのでは)
Unityのマニュアル
https://docs.unity3d.com/jp/540/Manual/class-Cloth.html
と
Unity BlogにあるClothの記事が大変参考になりました
https://blogs.unity3d.com/jp/2015/11/24/unity5clothsimulation/
もしClothでおっぱいを作ろうと思う人がいましたらぜひ参考にしてみてください。