[VRChat]DynamicBoneスカートの私も優雅に裾をつまんでご挨拶（カーテシー）したいですわ

#今回のアバター
先日、また新しいアバターを購入しました。
クローシアさんの[シルヴィーヌ](https://booth.pm/ja/items/1259310)ちゃんです。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">昨日シルヴィーヌちゃんをお迎えして、私のパーソナルカラー（？）の紫ベースに変えたりした。<br>もともといい感じのSitモーション入ってるけど、DynamicBone吊りでさらに仰け反っても安定！<br><br>シルヴィーヌ | CaTrusty <a href="https://t.co/6ysMFxiqHe">https://t.co/6ysMFxiqHe</a> <a href="https://twitter.com/hashtag/booth_pm?src=hash&amp;ref_src=twsrc%5Etfw">#booth_pm</a> <a href="https://t.co/bApssoIF2h">pic.twitter.com/bApssoIF2h</a></p>&mdash; ほけ (@hoke946) <a href="https://twitter.com/hoke946/status/1122322989419126784?ref_src=twsrc%5Etfw">2019年4月28日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
もともとは以前の[DynamicBone吊りスカート](https://qiita.com/hoke946/items/c868329ee15fb91a890d)を長い丈のスカートで検証するためにと思って買ったのですが、純粋にかわいいです。すぐに使い込みたくなりました。

#長い丈のスカートはつまみたくなる
ほぼ時を同じくして、妻がメイドさんになりました。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">「こんなメイド欲しいわ～」と思いながら坊ちゃまとメイドを一人二役でやって来た。※BGMはありますが声は入って無いです。<br>二人ともホバー移動。<br><br>VRCワールド名：Twin Spire Village<br>BGM：MusMus<br><br>VRC向けアバター 「Amelia」 Ver.1.0 | SakuSakuのモデリング工房 <a href="https://t.co/qEkd8GkvqO">https://t.co/qEkd8GkvqO</a> <a href="https://twitter.com/hashtag/booth_pm?src=hash&amp;ref_src=twsrc%5Etfw">#booth_pm</a> <a href="https://t.co/P0r3cHEMOx">pic.twitter.com/P0r3cHEMOx</a></p>&mdash; 三十個(みそこ)BLラウンジ店長 (@0ne_chan) <a href="https://twitter.com/0ne_chan/status/1122557281395044352?ref_src=twsrc%5Etfw">2019年4月28日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
このメイドさんモデルの[Amelia](https://booth.pm/ja/items/1335489)さんですが、スカートの裾をつまんでご挨拶、いわゆるカーテシーができるようになっています。
その仕組みはどうやら、Clothの網の目のようなコライダーに、ハンドサインで手に出現させたコライダーを引っかけてスカートを持ち上げるというもののようです。
![clip_hold8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/092059df-d14d-6dd3-4240-a74eba8dd502.png)
いいですねぇ。
シルヴィーヌちゃんも長い丈のスカート、つまんでご挨拶したくなります。

#スカートは大抵DynamicBoneですね
ところが、アバターのスカートの揺れはClothではなくDynamicBoneで表現されることが多く、シルヴィーヌちゃんもその１人です。
Clothのような網の目のコライダーはなく、スカートのボーンの粒をどうにかしてつまみ上げるしかありません。それが目標になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/9d97fcfe-2032-e8e0-03f2-1a0aaba92d2e.png)

#スカートのボーンをコライダーで引っかける
こんな形のDynamicBoneColliderを左右の手の先に用意します。
この３つのコライダーの窪みでスカートのボーンを引っかけるという寸法です。
![clip_hold2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/d872c271-e430-508b-6a1c-47d8a2c85133.png)
![clip_hold1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/912bfda0-0f48-1c2c-069b-c10479b3a15d.png)
右手の例ですが、手のボーン(hand.R)の下に空GameObjectを加えて、その下にさらに３つの空GamgeObjectを加え、それぞれDynamicBoneColliderをアタッチして位置調整をします。
今、わかりやすくコライダーに沿ってCylinderモデルも一緒につけていますが、こちらは実際には不要です。
コライダーが出来上がったら、スカートを揺らしているDynamicBoneに設定してください。

#特定のハンドサインで出るようにアニメーション設定
しかし、常時コライダーが飛び出していては邪魔になるし、スカートの中に手を入れることもできなくなってしまうので、
普段はコライダーの幹である「holdhand.R」（左手は「holdhand.L」）のscaleを0.001などに縮小しておき、
それを特定のハンドサインで1に戻すようにします。私はRockNRollに設定しました。

ハンドサインの設定方法についてはこちらを参照してください。

[アニメーションオーバーライドの設定](https://vrcworld.wiki.fc2.com/wiki/%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%82%A4%E3%83%89)

AnimationClipにはTransform値も設定することができます。
あと折角なので、つまんだときの指の形を作っておくのもオススメです。

#スカートをつまむことができました
これで一応、VRChatでスカートをつまみ上げることができるようになりました。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">スカートの裾つまむの見てたら私もやりたくなったから仕込んでみたよ <a href="https://t.co/tf0VtJdOqr">pic.twitter.com/tf0VtJdOqr</a></p>&mdash; ほけ (@hoke946) <a href="https://twitter.com/hoke946/status/1123149867604299778?ref_src=twsrc%5Etfw">2019年4月30日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#掴み判定を拡大する
**（2019/5/6 最初に記載していたアニメーション設定は効果がないことがわかったので記事を大幅に修正しました）**

ただ、このボーンの１点をコライダーの隙間に挟み込むのは結構難しく、
瞬間でさっとつまんで優雅にご挨拶、とするのはかなりの修練が必要です。

そこで、通常の「holdhand.R」（左手は「holdhand.L」）のscaleを0.001にするのではなく、positionをzのマイナス方向に移動させておき、ハンドサインで戻すようにします。（回り道申し訳ないです）
![clip_hold11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/4ced7de0-7dbf-0ac5-b129-d3424c33248d.png)

こうすることにより、下からたぐり寄せるようにコライダーが動き、掴み判定が拡大します。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">うん、やっぱりカーテシーのコライダーはこうすべきなんだよ！ <a href="https://t.co/EdJzuXfxWk">pic.twitter.com/EdJzuXfxWk</a></p>&mdash; ほけ (@hoke946) <a href="https://twitter.com/hoke946/status/1125277561477459968?ref_src=twsrc%5Etfw">2019年5月6日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

スカートが手に吸い付いている感じがありますね。掴み成功率が上がっています。

ただ、あまり離れすぎて移動量が多すぎるとすり抜けて効果がないかもしれません。
通常では触れない範囲のギリギリのところに設定するようにしてください。

#他の子でも試してみる
スカートが短かめで、シルヴィーヌちゃんほどフワッとしていない場合。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/f3089897-557c-24e2-28a2-e56f64166b32.png)
改変ますきゃっとちゃん。節が多い。あまり大きなコライダーは辛そうですね。
![clip_hold10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/3cc8111a-8430-7871-f6e4-37560b44be13.png)
少し難易度は高いですが、なんとかカーテシーできました。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ますきゃっとちゃん、ちょっと難しいけど一応カーテシーできた。<br>ただ、DynamicBoneのstiffnessは下げておかないとブルブルしてダメっぽい。 <a href="https://t.co/aE3gWzHZmC">pic.twitter.com/aE3gWzHZmC</a></p>&mdash; ほけ (@hoke946) <a href="https://twitter.com/hoke946/status/1125376739633315840?ref_src=twsrc%5Etfw">2019年5月6日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
スカートがフワッとしていないので、動きとしては上から掴むような感じ。そのときの手首の角度を考慮して、コライダーは斜めにしました。
![clip_hold12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/1434d11e-a93b-02b1-e00c-2075e9bd4b06.png)
![clip_hold13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275693/4a35bedf-7f6c-5c3d-c83e-8fbf444e045d.png)
ただし、DynamicBoneのstiffnessは低くしておかないと、コライダーとの衝突でスカートがブルブルします。硬めのスカートがいいという場合はちょっと厳しいです。