Unityのボーン物理演算アセットをSpineモデルに適応して比較してみたよ
表題の通りです。spineのモデルをUnity上で動作させるときに適応できる物理演算アセットを比較してみました。今後もおもちゃが増えたら加筆しようと思います。各アセットの操作方法とか詳細は別記事にでもまとめようと思います。本記事はさわりだけ。
準備
ともあれ準備です。基本的に共通だと思いますのでまとめておきます。Unity上にSpineモデルを配置し、インスペクター内の「SkeletonAnimation>Advanced」からSkeleton Utilityを追加します。その後、Spawn HierarchvにてSpineのボーン情報をUnityに持ってきます。
このときFollowでもoverrideでも良いと思うんですが、個人的にはAll Followで適時切り替えるのが好みです。
Hige Chain
Spine公式の方法。Spine公式でも物理演算を実装したぜひゃっほう!!ってスレッドも立ってます!すばらしい!! ですが問題点もちょいちょいあります。私の環境だけかもしれませんが、2Dだと動作不良を起こします。
入れ方詳細は別で書きました。
ぐにゃぐにゃ。3Dだと結構安定。
また、全てのボーンに対して設定できるがゆえに調整がちょっと大変、可動域の初期範囲の設定をしても暴れて暴走することがある、思った通りの動きになるまで結構試行錯誤が必要だと感じました。
また、ボーン設定が別のゲームオブジェクトに隔離され、Spineモデルのrootに追従しなくなります。
こうなります。どこいくねーん!! 個人的にめっちゃ気持ち悪い。後付けでrootの位置とか弄ると多分これ物理演算も狂ったりするのでは・・・?
結局オブジェクトの移動とかしないといけないのでちょっとめんどうかなって印象でした。
ただ、1つ1つのオブジェクトに設定を入れられるっていうのは逆に言うとモーニングスターとか部位毎に主さの違うオブジェクトにはぴったりなのかなとも思いました。公式のデモがまさにそんな感じ。
メリット
いろいろなパラメータ。ボーン個別に設定できる。
公式でサポートされる方法で無料。
デメリット
ボーン個別に設定しないといけない。変な挙動になることがある。
ゲームオブジェクトが隔離される(Ctrl+Zでも戻せない)。
DynamicBone
次は皆大好きダイナミックボーン。
シンプルな操作性で素敵! Spineに導入するにはちょっと癖があります。
Edit>Project Settings>Script Execution OrderでDynamicBoneを追加してDefaultTimeより下に追加してください。
で、揺らしたいボーンの親に設定。稼働する部分はoverride設定をわすれずに。
親に全てのパラメータの設定が集中しているので動きをみながら値の調整ができちゃうのがぐっと。デフォルトでもかなり安定して動きます。
また、SpineだとGravityが動かないかな? 多分2Dだからかと思う。 Forceが動くのでそれで代用すると良いと思います。これによってボーン全体にかかる力の向きを表現できます。簡単な風の代用になるかと。
ほぼデフォルト。
メリット
シンプル。
皆使ってるから情報が豊富。
ボーン構造を変更したりしないから安心して使える。
デメリット
有料。
(私だけかもしれないけれど)一部動かないパラメーターがある
個別に重さとかを設定できない(そもそもそれが目的じゃないとも思う)。
Tail Animator
基本的にDynamicBoneと同じ感じで適応できる。2D用のスクリプトが別途用意されているのも安心!
デフォルト。面白いのは、停止しててもwaveで動かせるという部分。これ、何が良いかって言うと風の表現とかに使えそうなんですよね。
止まってるのに動いてるうううー!!
また、重力値などの設定もきちんと動作します。
個人的な使用用途(アニメーションへの使用)には一番可能性を感じます。いじりがいがあるなあって感じ!
メリット
停止状態でのアニメーションに対応
親だけに設定すればあとは追従してくれる。
デメリット
概ねDynamicBoneと同じ感じ。
まとめ
わりと思ったのが、それぞれにそれぞれの強みがあるなあって思ったりしました。さらっと触った感じ、個人的な用途としてTailAnimoterがかなり興味深いです。ただ、例えばグミとかゼリーとか、そういうぷるるんとした感じの物はDynamicBoneのほうが良さそうだな?とか感じました。使い込んでこのノートは更新していこうと思います。
この記事が気に入ったらサポートをしてみませんか?