Unity
おっぱい

UnityのClothを使っておっぱいを作る

 概要

Unityでゲームの制作をしているのですがキャラクターモデルのおっぱいを揺らしたいという話になりました。
胸にボーンがなく諸事情により増やすことも難しかったのでどうしたもんかなと思っていたところ
UnityのCloth(布のシミュレーション)を使えば擬似的におっぱいを作れそうだなと思ったのでやって見ることにしました。

最終的にはこんな感じになりました
oppai0.mov.gif

実装

まず今回使用する被害者モデルがこちら
スクリーンショット 2017-11-12 19.22.36.png
おっぱいの部分だけ別のメッシュとして作ってもらっています

スクリーンショット 2017-11-12 19.23.01.png
今回はこのメッシュを布と見立てておっぱいにしようってわけです。ワクワクしますね。

スクリーンショット 2017-11-12 19.23.25.png
まずおっぱいのメッシュにClothコンポーネントをアタッチします。
スクリーンショット 2017-11-12 19.48.24.png
なんかいっぱいいじるところありますがとりあえずそのまま実行しちゃいましょう

oppai1.mov.gif
おっぱいが自由落下しました。
RigidBody初めて使った人みたいな感じになってしまいました。これはこれで面白いのですがおっぱいそのものがなくなるのは困るので固定をしましょう。

落下した原因は簡単で重力を使う設定になっていることとこの布がどこにも固定されていないからです。
なのでとりあえず固定をします
スクリーンショット 2017-11-12 19.24.53.png

ClothのコンポーネントのEdit Constraintsをクリックします。

スクリーンショット 2017-11-12 19.25.07.png
すると何やらパネルが出てくるのでPaintモードにしてMaxDistanceにチェックを入れ数値を0にします。
この数字は設定された布の頂点が移動できる距離を表すので今回は固定したいので0にしています

スクリーンショット 2017-11-12 19.26.04.png
マウスで固定したい頂点を設定していきます(赤色)
とりあえずメッシュの外周を赤にしてしまえば固定されるはずです。
それでは実行してみましょう。

oppai2.mov.gif

おっぱいが潰れてしまいました。
大変残酷な光景になってしまいました。
望んでいる光景ではないのでさらに改善していきましょう。

スクリーンショット 2017-11-12 19.28.49.png
Clothのコンポーネントをみているとコライダーが設定できるようになっています。
球体(Sphere)コライダーを置いておっぱいを作ってみましょう。

スクリーンショット 2017-11-12 19.29.34.png

スクリーンショット 2017-11-12 19.29.47.png
適当なボーンあたりでEmpty GameObjectを作ってSphere Colliderをアタッチさせます。私はoppaiColとしました。
スクリーンショット 2017-11-12 19.31.35.png

こんな感じで大きさを調整し胸の中に埋めます。
スクリーンショット 2017-11-12 19.32.50.png
ちゃんと左と右のおっぱいにコライダーを入れます。(別のGameObjectを作ってやる)

スクリーンショット 2017-11-12 19.33.33.png
Sphere Colliderを設定するときは2つで1つのものを作ることができます。
2つ置いた場合はCapsuleColliderみたいになりますがコライダーの大きさの調整がしやすいのでSphereでやるのをオススメします。
スクリーンショット 2017-11-12 19.33.45.png
設定するとこのようにおっぱいっぽいコライダーができます。おっぱいおっぱい。
では実行してみましょう
oppai3.mov.gif
確かにおっぱいっぽい膨らみは少し生まれましたがこれをおっぱいだ!と喜べるのは小学生くらいでしょうね。
大人な我々としてはもっといい感じに揺れて欲しいです。

スクリーンショット 2017-11-12 19.35.58.png
最後にCloth自体のパラメータもいくつかいじっておきます。

上の方にある
Stretching StiffnessとBending Stiffnessは布の伸縮率と布の曲げ剛性になっています。
今回はおっぱいなので伸びやすかったり曲がりやすいとおっぱいぽくないので両方1にしときます。
重力も切ってしまいます。
Dampingは動きの減衰係数になりますがとりあえず0のままで

World Velocity ScaleとWorld Acceleration Scaleが動きによる影響の割合なのでこの辺りは結構吟味して値をチョイスするのがいいかなーと思います。

さぁこれで実行してみましょう
oppai4.mov.gif

ぷるぷるしてるー!!!!

かなりマシになりました。
夢のあるぷるぷる感です。

さてここから先はエンジニアの性的嗜好によるのですがコライダーを増やしたりパラメータの値を調整することで結構おっぱい感がでます。

私は最終的にこのようなパラメータで落ち着き(満足)ました。
スクリーンショット 2017-11-12 20.15.16.png
コライダーはこんな感じ。ネクタイ制御用も含んでます
スクリーンショット 2017-11-12 20.15.40.png

 おっぱい.mov.gif
非常に健康的な揺れ方だと思います。
縦揺れもちゃんとしてくれるのでいいですね(満足)

参考

あまりこの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でおっぱいを作ろうと思う人がいましたらぜひ参考にしてみてください。