Unreal Engine 揺れもの物理プラグイン検証:Kawaii Physics & SPCR Joint Dynamics

Unreal Engine 揺れもの物理プラグイン検証:Kawaii Physics & SPCR Joint Dynamics

1.はじめに


こんにちは。技術統括部の曹です。

皆さん、普段ゲームする時にキャラクターの髪の毛やスカート、マントなどの動きが気になったことはありませんか?リアルな揺れ表現はキャラクターの魅力を引き立て、没入感のある体験に繋がります。

今回は、Unreal Engineで使用可能な2つの揺れものプラグイン「Kawaii Physics」と「SPCR Joint Dynamics」について、実際に使用しながらそれぞれの特徴や設定方法、揺れ表現の差異を比較・検証してみました。

2.検証対象プラグイン


■ Kawaii Physics

■ SPCR Joint Dynamics

3.使用手順


手順はどちらのプラグインも同じです。

  1. 事前に、キャラクタのモデルを用意します。骨入れ・スキニングを行っておく必要があります。今回は、Unreal Engineのマネキンに、マントとスカートをつけたテスト用データと、アニメーションを用意しました。
  2. Unreal Engineのプロジェクトを作成し、上記をダウンロードして、プラグインのフォルダに置きます。
  3. Animation Blueprint 上でノードを編集して、骨の動きを制御した結果をキャラクターのポーズに反映させます。
  4. ノード内で、計算対象のボーンを指定した後、コリジョンやパラメータを設定します。
          図3.1 Animation BlueprintでのKawaii Physics簡単な使用例
         図3.2 Animation BlueprintでのSPCR Joint Dynamics簡単な使用例

4.パラメータについて


両者とも同じような機能を備えており、大きく分類すると下記のようなパラメータがあります。

パラメータの分類Kawaii PhysicsSPCR Joint Dynamics
揺れ制御Damping, StiffnessResistance, Hardness
拘束Bone Constraint, Limit AngleStructural, Limit
コリジョンLimits(Sphere, Capsule, Plane)Collider(Sphere, Capsule)
その他Gravity, Wind, External ForcesGravity, Wind

SPCR Joint Dynamicsは、上記以外にも設定できるパラメータが多くきめ細かな設定ができます。

設定の自由度や挙動の自然さに違いがあるため、本記事では主にマントとスカートの設定で両者を比較します。

5.Kawaii Physicsの使用感


まずはマントを試してみます。揺れ計算対象の骨を指定し、他のパラメータはデフォルトのままでいい感じの揺れ感が出ました。

図5.1 Kawaii Physicsのマント表現

次にスカートを試してみました。揺れ計算対象の他に、両足にコリジョンをつけて動かしましたが、ふとももがはみだします。どうやら、縦方向の拘束だけが生成されているようです。

  図5.2 縦拘束設定
図5.3 縦拘束のスカート表現

v1.14.0から追加された骨間の距離拘束機能により、横方向の拘束を設定できます。一本一本の骨を選択する作業が必要ですが、これにより足のはみだしは改善されます。

  図5.4 縦拘束と横拘束設定
図5.5 縦拘束と横拘束のスカート表現

6.SPCR Joint Dynamicsの使用感


SPCR Joint Dynaimicsのスカート表現を試してみました。SPCR Joint Dynaimicsでは、パラメータでの選択によって縦方向、横方向に加え、斜め方向の拘束も半自動で生成できます。Kawaii Physicsよりはみだしが少なくなりました。ですが、拘束が多いほど動きは硬くなります。

図6.1 SPCR Joint Dynamicsの拘束設定
図6.2 SPCR Joint Dynamicsの拘束設定結果

横方向と縦方向の拘束を付けたマントも試してみました。Kawaii Physicsと比較するとやや動きが硬い印象です。

図6.3 SPCR Joint Dynamicsのマント表現

7.パラメータの細かい比較


両者のコリジョン設定、揺れ制御パラメータ、カーブと風について、少し深く触って比較してみました。

7.1.コリジョンについて

Kawaii Physicsは、球体・カプセル平面の三種のコリジョンが設定できます。

SPCR Joint Dynamicsでは球体とカプセルの二種類です。

なお、Kawaii Physicsでは、コリジョンを変更するとプレビュー画面に反映されますが、SPCR Joint Dynamicsではコンパイルをしないと反映されません。コリジョンの大きさ変更など、プレビューしながら調整できるKawaii Physicsの方が使いやすいです。

  図7.1.1 プレビュー画面 

7.2.揺れ制御パラメータの挙動比較

値の違いを分かりやすく表現するために、この部分はマントで比較を行います。

Kawaii Physics

Stiffness(硬さ)

Stiffnessを高くするほど、元の形に戻る力が強くなり、布の張り感が出ます。

0.01
0.02
0.03
0.05
0.10

Damping(減衰、揺れの収束を制御)

値を高くすると揺れが早く収まり、低いとフワフワと長く揺れます。

0.1
0.2
0.3
0.5
1.0

SPCR Joint Dynamics

Hardness(硬さ)

値を上げることで、剛性が強くなり、柔らかい布から硬いプレートのような動きになります。

0.1
0.2
0.3
0.5
1.0

Resistance(空気抵抗)

値を上げると空気の影響を受けやすくなり、動きが重くなります。

0.1
0.2
0.3
0.5
1.0

7.3.カーブについて

根本はあまり動かさず末端をひらひらさせるなど、場所によって異なるパラメータ値を指定したい場合はカーブを利用します。両方のプラグインとも、上記のパラメータをカーブで制御することができます。

「マントの後ろが重いものに引っ張られる」表現を例にします。

Kawaii PhysicsのStiffnessカーブを図7.3.1のように設定しました。骨の値は先端に近くと低くなり、末端に近くと大きくなります。

図7.3.1 Stiffnessカーブ設定
図7.3.2 カーブなし
図7.3.3 カーブあり

SPCR Joint DynamicsのHardnessカーブを図7.3.4のように設定しました。

図7.3.4 Hardnessカーブ設定
図7.3.5 カーブなし
図7.3.6 カーブあり

7.4.風の比較

Kawaii Physics(左の図)

UEの風アクターと連動可能。風による動きも簡単に実装できます。

SPCR Joint Dynamics(右の図)

Blueprint上で風の方向やスピードを細かく調整可能。物理計算に基づいた風の影響を表現できます。

図7.4.1 Kawaii Physicsの風表現
図7.4.2 SPCR Joint Dynamicsの風表現

8.まとめ


● Kawaii Physics

  • 設定がシンプルでわかりやすいため、使いやすいです。また、デフォルトの設定でも、簡単にアニメ調の揺れと「可愛らしい」表現を実現できます。
  • 拘束について、縦方向の拘束は簡単に設定できますが、横方向や斜め方向の拘束設定では手作業が多くなります。
  • 突き抜けを回避するには、拘束設定とコリジョン設定以外には方法がないようです。

● SPCR Joint Dynamics

  • 今回ご紹介したもの以外に、パラメータが豊富に用意されており、細かな設定をするのに向いています。設定すれば、写実的な布の物理挙動を再現できるかもしれません。ただし、その代わりに動きがやや硬くなります。
  • 横拘束の作成は半自動で行えるため、設定が容易です。
  • 負荷が高くなりますが、サーフェスコリジョン判定など、突き抜けを回避する方法が他にも用意されています。

今回のブログはUnreal Engineの揺れものプラグイン「Kawaii Physics」と「SPCR Joint Dynamics」を簡単に検証してみました。表現の拡張としては、どちらのプラグインも特徴があり、素晴らしい表現ができると感じました。角度制限や重力機能などは今回検証していませんが、別の機会に試してみたいと思います。

なお、シリコンスタジオでは、2つのプラグインの検証結果をもとに、設定の容易さ、自然な揺れ表現を追求し、「Silicon Studio Bone Dynamics(シリコンスタジオ ボーンダイナミクス)」というプラグインを開発しました。詳しくはこちらのWebページをご覧ください。
https://tech.siliconstudio.co.jp/products-service/bone-dynamics/

9.参考資料


Kawaii Physics 各パラメータについて About each parameters

揺れモノ超ド素人がKawaiiPhysicsを使って、感覚を頼りに女性キャラクターモデルのKawaiiを増す方法まとめ

SPCRJointDynamics for UE4

この記事をシェアする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です