【Unity】おっぱいを揺らして触る技術【VR】

###**※この記事はセンシティブな内容を含みます。**###

どうも、趣味でVRゲームを作ってるおっぱい大好きエンジニアです。

その製作中におっぱいの動きで悩んだところがありました。
他のおっぱい大好きなゲームエンジニアのためにも、
どのようにおっぱいの実装をしたのか残そうというコンセプトです。
~~「おっぱい」ってタグあるのね~~

結果として次のような動きができるようになりました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">揺れるおっぱい上げときますね <a href="https://t.co/vqNd5RXist">pic.twitter.com/vqNd5RXist</a></p>&mdash; 夕凪ナギ (@_yunagi_nagi) <a href="https://twitter.com/_yunagi_nagi/status/1196812840486617088?ref_src=twsrc%5Etfw">November 19, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

3Dモデルは自作で用意し、DynamicBoneというアセットを使用しました。

#理想のおっぱいに至るまでの過程#

##0.前準備##
今回使用する3Dモデルです。3時間程度で作りました。
（Blender2.8わかんない...というかそもそもモデリングわかんない...）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168617/22eba3f6-3ec0-85e1-29f8-c5d449a45066.png)

##1.Clothを使う##
先駆者様がClothを使っていたようなので使ってみる。

###1-1.Clothとは###
[Unity公式](https://docs.unity3d.com/ja/current/Manual/class-Cloth.html)
>Cloth コンポーネントはスキンメッシュレンダラーと連動して機能し、物理演算を用いたクロス (布) のシミュレーションを行います。

プロパティーでStretching（伸縮率）やBending（曲げ剛性）等を設定できるので、いろんな動きをシュミレーションできます。その中で柔らかい表現ができます。

###1-2.パラメーターを設定する###
先駆者様を参考にしながらざっくりとこんな感じ!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168617/5cf9348b-af45-0409-00a0-5fa15d8336ce.png)

動かしてみるこんな感じになりました。
<blockquote class="twitter-tweet"><p lang="und" dir="ltr"><a href="https://t.co/j75YBYAFSt">pic.twitter.com/j75YBYAFSt</a></p>&mdash; 夕凪ナギ (@_yunagi_nagi) <a href="https://twitter.com/_yunagi_nagi/status/1196819724128014336?ref_src=twsrc%5Etfw">November 19, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

設定次第でもうちょっときれいになるかもしれないけど、これはなんか違う気がする。

##2.DynamicBoneを使う##
Clothはあきらめて、おっぱいの揺れはDynamicBoneを用いてボーンのアニメーションで作ろうと思って買いました。ですが、サンプルシーン見てたらその必要なかったです。

###2-1.DynamicBoneとは###
[UnityAssetStore](https://assetstore.unity.com/packages/tools/animation/dynamic-bone-16743)
>Dynamic Boneはキャラクターのボーンや関節に物理挙動を付けることができます。 簡単にセットアップするだけで、髪、衣服、胸など体の各部位を本物と同じように動かすことが出来るようになります。

サンプルの動画はこんな感じです。いい感じに揺れてますね。
[YouTube](https://youtu.be/hqXNfjsDjuY)

###2-2.ボーンの調整###
いろいろなボーン少し試してみた結果、次のような感じになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168617/e4181790-c169-d98d-7e9e-ff4cd3013ead.png)
ボーン1本だとおっぱい全体が回転しているような感じで変になりました。そこで、短いボーンを体側に1つ追加し長いボーンの方を動かすという感じにしました。

###2-3.パラメーターを設定する###
おっぱいにDynamicBoneというスクリプトを追加します。パラメーターは初期値でもきれいに動きました。特に修正せずにそのまま使っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168617/8952713e-d7f1-23d7-2adf-66768ee6df8d.png)

###2-4.当たり判定を追加する###
DynamicBoneスクリプトのColliderに当たり判定に使用するオブジェクトを指定します。DynamicBoneColliderというスクリプトを設定したオブジェクトを指定することで、当たり判定を追加することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168617/c57ce243-b72e-42ce-6ce7-9ec37441cff4.png)

Sphereとおっぱいで動かしてみるとこんな感じになります。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">おっぱい揺れるー <a href="https://t.co/Kt4IPrIZdp">pic.twitter.com/Kt4IPrIZdp</a></p>&mdash; 夕凪ナギ (@_yunagi_nagi) <a href="https://twitter.com/_yunagi_nagi/status/1197154426072358913?ref_src=twsrc%5Etfw">November 20, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

###2-5.OculusQuestで動かしてみる###
上の動画のあとでこの記事を書いているので設定は少し違いますが、
OculusQuestでの実装例を軽く解説しようと思います。

QuestでのビルドはOculusIntegrationを使用しました。
このアセットの詳しい説明はここではしません。
[UnityAssetStore](https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022)

1.コントローラーに"DynamicBoneCollider"を設定します。
パラメーターはこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168617/ce370a7a-71bb-1835-bc61-2610b8d326dd.png)

2.おっぱいも次のように設定してみました。
EndOffsetで当たり判定を1つ追加することができたので、おっぱいの上の方に追加しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168617/ae3a2acf-844e-6ef4-8ea7-9c497e551d1c.png)
これで冒頭にある動画のようにおっぱいを好きにいじることができます。

##まとめ##
すごいざっくりとした説明になりましたが、参考になると幸いです。
いろいろパラメーターを変更してよりよいおっぱいを追い求めてみてください。
いい設定があればぜひ教えていただきたいです。

##あとがき##
ツイッターよかったらフォローしてください。
ゲーム開発者と繋がりたい...
https://twitter.com/_yunagi_nagi

###参考にしたもの###
先駆者様→https://qiita.com/AzuQiita/items/664f103f0dbd4adbcaca