Mesh Springのセットアップ
MeshSpringはMeshの頂点をそのままスプリングで揺らすことができます。
これはSkinningMeshにも適用可能です。
MeshSpringではMeshClothと同様にメッシュを変形させるデフォーマ(Deformer)の設定が必要となります。
このガイドは「MeshClothスタートガイド」の続きとなりますので、ある程度の説明は省略して進めます。
Render Deformer/Virtual Deformerのセットアップ
まず最初にMeshClothと同様に揺れを適用するRendererにレンダーデフォーマ(RenderDeformer)を設定し、またそれらを統合するバーチャルデフォーマー(VirtualDeformer)を構築する必要があります。
設定方法は「MeshClothスタートガイド」に解説がありますので、そちらを参考にしてください。
今回はUnityちゃんの胸部分を揺らしたいので、モデルから揺らしたい箇所のレンダラーを選びます。(赤範囲)
レンダーデフォーマを適用するメッシュは次の3つとなりました。
これらにRenderDeformerコンポーネントをアタッチします。
そしてこれらを1つの仮想メッシュとして制御するバーチャルデフォーマー(VirtualDeformer)を構築してください。
結果として次のような構成となりました。
Unityちゃんモデルのメッシュは細かいため、リダクションによりある程度の低ポリゴンになるよう調整します。
仮想メッシュが低ポリゴンとなっても、実際のメッシュ頂点へは逆スキニングにより滑らかに補間されるため、見た目の違和感はほとんどありません。
これでデフォーマのセットアップは完了です。
Mesh Springのセットアップ
通常胸の揺れは左右2つの範囲を揺らす必要がありますが、今回は例として左側のみの設定を行います。
キャラクタにMeshSpringを追加します。
Hierarchyウインドウで「右クリック」し、メニューから以下のように「Magica Mesh Springs」を選択してください。
MeshSpringオブジェクトが生成されます。
インスペクタは次のようになります。
まず動作させるVirtualDeformerを設定してください。
次にMeshSpringの揺れの中心となるCenter Transformを選択する必要があります。
もしモデルの構造にそういったTransformが無い場合は、手動でTransformを追加しそれを設定するようにしてください。
Unityちゃんモデルでは胸の中心にTransformが無かったため、手動で[BL]トランスフォームを追加して設定しました。
また、このときに揺れる範囲の正面方向にTransformの軸を合わせるように回転させてください。
Unityちゃんモデルでは[BL]トランスフォームのZ軸(Unityギズモの青い軸)を正面として方向をあわせて設定しました。
中心トランスフォームを[Center Transform]に設定し、正面の軸を[Direction Axis]に指定してください。
Unityちゃんモデルでは胸のトランスフォーム[BL]のZ軸を正面として設定したので、[Direction Axis]を[Z]に設定しています。
Sceneビューで設定された方向を確認することができます。
黄色い矢印方向が正面の軸となります。
スプリングパラメータを調整する
スプリングの振る舞いを制御するパラメータの設定を行います。
まずはプリセットを読み込み簡単にセットアップしてみましょう。
[Parameters]の右にある[Preset]ボタンを押します。
リストの中から[Breast]を選択して読み込んでください。
Presetボタンはv1.8.4から実装されたため、もしPresetボタンが無い場合は右にある[Load]ボタンを押し、MagicaCloth/Presetフォルダから[MeshSpring_Breast.json]を読み込んでください。
これで胸揺れの大体のパラメータが設定されました。
ただし、MeshSpringではプリセット読み込み後も揺れる範囲と方向については調整が必要となります。
揺れる範囲を設定します。
パラメータの[Spring]パネルを開いてください。
範囲指定で調整するパラメータは次の4つです。
これらを使い球形の範囲を設定可能です。
項目 | 説明 |
Spring Radius | 球形範囲の半径です |
Spring Radius Scale X | 球形範囲のX軸の影響割合です |
Spring Radius Scale Y | 球形範囲のY軸の影響割合です |
Spring Radius Scale Z | 球形範囲のZ軸の影響割合です |
Unityちゃんの胸ではX軸をやや絞り楕円形の範囲としました。
範囲はSceneビューのギズモで水色の球で表示されます。
この水色の範囲の頂点が揺れる対象となります。
実際には[Spring Direction Atten][Spring Distance Atten]の2つのパラメータのカーブにより正面方向に対して強く揺れ、裏面はほとんど揺れない設定が初期状態で入っています。
これでMeshSpringの一連の設定が完了しました。
[Create]ボタンを押してデータを作成してみましょう。
MeshSpringのスタートアイコンが「白」に変われば設定完了です。
Unityを実行しメッシュが揺れていればセットアップ完了です。
左右の胸を揺らす場合
胸揺れを左右両方行う場合はもう1つMeshSpringの設定が必要となります。
今回は左側の設定例ですが、これを右側についても行うだけです。
このときVirtualDeformerは両方で共通のものを設定して問題ありません。
VirtualDeformerは複数のクロスコンポーネントの動きをブレンドする機能を持っています。
今回の例で作成したMeshSpringコンポーネントを[Ctrl+D]で複製し、[Center Transform]を変更するだけで簡単に作成可能です。
複製したコンポーネントは設定後に[Create]ボタンを押してデータを作成することを忘れないようにしてください。
Mesh Springの調整ガイド
移動範囲の制限
[Clamp Position]パラメータを設定することで移動する限界範囲を指定することが可能です。
XYZ軸それぞれに対して移動制限を行えます。
移動に伴う回転制御
[Adjust Rotation]を設定することで、スプリングによる移動距離に応じてCenter Transformに回転を加えることが可能となります。
モード | 説明 |
Fixed | 回転制御は行いません。 |
XY Move | 移動に伴いX軸Y軸を回転させます |
XZ Move | 移動に伴いX軸Z軸を回転させます |
YZ Move | 移動に伴いY軸Z軸を回転させます |
この設定はBoneSpringと同じ働きをします。
例としてスプリングの正面がZ軸とし場合に、XY Moveモードに設定し、Rotation Powerを5程度にすると、次のよう動きになります。