読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

ユニティちゃんのおっぱいとか髪とかを揺らす仕組みの設定方法について

目次

はじめに

今日はユニティちゃんの髪とか胸とか、そういった揺れものパーツを揺らすギミックについて解説します。

 

f:id:tsubaki_t1:20141108224650g:plain


ユニティちゃんライブ公開!とりあえず役立ちそうな情報とか、入手方法とかまとめてる - テラシュールブログ

 

さて使い方についてですが、ぶっちゃけユニティちゃんパッケージ付属のドキュメントに詳しく書いてあります

 

ユニティちゃんライブには付いてないかもしれません。のでUnityChanパッケージから入手して下さい。

UnityChan.unitypackageを展開後、Assets/UnityChan/Documents/unitychan_dynamic.pdfで確認出来ます。

 

f:id:tsubaki_t1:20141108230040p:plain

 

f:id:tsubaki_t1:20141108225506p:plain

 

実際細かい設定についてはドキュメント読めば多分OKなので、とりあえず設定したい人向けに設定方法を紹介します。

ただしプロ生ちゃんで。

f:id:tsubaki_t1:20141108230411p:plain

 

せっかく先日設定したんで。


プロ生ちゃんの髪やスカートをユニティちゃんの揺れものでセットアップしてみた - テラシュールブログ

 

揺れもののギミックについて

このギミックは、ricopin氏の揺れものギミックを流用して作成されています。なので、揺れものを作りたいけどユニティちゃんライセンスが嫌な場合は、ricopin氏のを使うと良いです。


Unityで揺れものを揺らす | Rocket Jump

 

このコンポーネントはPhysicXといった物理演算は実は使用しておらず、単純にバネ強度や抵抗値を元にSpringBoneでボーンを回転させるスクリプトを記述する事で揺れものを実現しています。

ボーンの回転順番はSpringManagerで制御しており、高速で動いた際にパーツが伸びるといった事を防いるみたいです。さらにUnityの物理演算を使用していないため、コライダーのレイヤー調整といった面倒でかつゲーム自体に干渉しやすい実装を回避出来るメリットもあります。

 

なお、この表現方法はアニメの乳揺れやスカートの挙動に近いらしいです。基本的に定位置にあり、ちょっとの振動でめっさ揺れて、しかし捲れないバランスという感じ。あと暴れにくいです。

 

揺れる対象の設定

まず揺れものを設定するに辺り、動いて欲しいボーンを探します。例えばスカート・ネクタイ・髪等々です。

これは実際にモデル内のオブジェクトを動かしてみて、該当するボーンを探します。例えばプロ生ちゃんのスカートは、以下のボーンが該当します。

pronamachan/root0_Arm/root/center/lower_body/skirt_0_0 等々。

 

f:id:tsubaki_t1:20141108231439g:plain

 

揺れもののパーツを見つけたら、揺らしたいパーツにSpringBoneをアタッチします。オブジェクトを選択中にInspectorタブのAdd ComponentボタンにSpringBoneと入力して追加でOKです。

 

f:id:tsubaki_t1:20141108231757p:plain

 

追加したらSpringBoneのChildの項目に「揺れものの1つ先」のオブジェクトをドラッグ&ドロップで登録します。スカートの根本からスカートの中間・スカートの先…といった感じです。

今回の場合、skirt_0_0、skirt_1_0、skirt_2_0に追加します。というか、スカート全部に追加します。

 

f:id:tsubaki_t1:20141108233353p:plain

ちなみに、Siffness Forceが柔らかさ、Drag Forceが揺れの減衰を管理しています。

通常のユニティちゃんはSiffness Forceが高く設定されており、ライブ用ユニティちゃんはSiffness Forceが低く設定されています。なのでよく揺れます(服装の違いにより揺れが分かりやすいのもあります)

 

 

大抵の場合「Hip(尻)/Spine1(背骨1)/Spine2(背骨2)/Neck(首)/Head(頭)」のような構造を持っていて、そのボーンの周りに足や手・胸や髪があります。例えばスカートはたいてい尻の下の階層にあります。

ちなみにユニティちゃんの胸ボーンはBreastとかBoobiesではなくMuneです。

しかし胸ボーンがあっても根本しか動かないのとわかりにくい服装のため、揺れてるように見えません。たぶん仕様です(スク水がききつくて揺れない、またはパットの可能性が微粒子レベルで存在。回答はディレクター次第)

 

f:id:tsubaki_t1:20141109004136p:plain

 

あと、揺れものといっても揺れる可能性のある物を全部揺らすより、先っぽだけをダイナミックに揺らしたほうが綺麗に見える事があります。ユニティちゃんARのユニティちゃんを動かした時の挙動等では、先っぽだけ動かしてます。

ユニティちゃんAR (Android)

ユニティちゃんAR(iOS)

 

揺れものの順番を制御

SpringBoneの登録が終わったら、SpringManagerを「スカートの根本」であるlower_bodyに追加します。このコンポーネントは揺れもののパラメータを指定出来るため、出来れば揺れものの素材単位で分割するのが良さそうです。(スカートならスカート、髪なら髪のSpringManager)

その後、SpringManagerのSpringBones親から順番に登録します。根本が違う場合は優先順位はありませんが、親子関係が有る場合は必ず親から順番に登録します。

これは純粋に揺れもの処理を行った際に「親から順番に処理する事で揺れものの破綻をなくす」為だと思われます。

f:id:tsubaki_t1:20141108235359p:plain

この順番を設定する機能の自動化は今やってます。正直面倒なので…

 

スカートや髪のめり込み対策

このままではスカートや髪が頭のなかや太ももにめり込んでしまうので、めり込まないようにします。

SpringBoneはCollidersで指定した範囲内には入らないようにするみたいです。なので、頭や太もものようなめり込んでほしくない所にSpringColliderをアタッチし、SpringBoneのColliderへ登録する事で、スカートをめり込まなくします。

 

SpringColliderはOffsetの値を持っていない為、太もものような棒状の場合は適当なオブジェクトを作成し、それをオフセットのような形で使用します。今回の場合、太もも(foot_L)の下にL_Leg_Collider 1のようなオブジェクトを作成して対策しています。

f:id:tsubaki_t1:20141109000847p:plain

f:id:tsubaki_t1:20141109000904p:plain

衝突判定は各ボーン毎にColliderに登録された数だけ行うので、接触しようがないBoneColliderは登録しないのが吉と思われます。また、範囲内に入って弾かれるのではなく、範囲内に入ると入らないように調整する…が挙動なので、少し大きめのコライダーを設定しておくのが良いです。

 

こっちの方法でも揺らせるみたいです。コッチのほうが綺麗?


Unityで、今すぐ簡単にできる!おっぱい揺らし!! - 銀の弾丸、はじめました

 

次回はユニティちゃんライブのステージの構造についての予定

ユニティちゃんライセンス

このコンテンツは、『ユニティちゃんライセンス』で提供されています