[Spine]トランスフォーム・コンストレイントまとめ

トランスフォーム・コンストレイントを深堀する

Spineで何かを別の何かに追従させたい場合に使うのがトランスフォーム・コンストレイントだが、今回これを深掘りしてまとめてみようと思った。

まず下画像のように左右に同じような階層のボーンとアタッチメントを配置させた。parentsボーンの子にchildボーンがあり、この子ボーンにスロットが入っている。左がparents1/child1で右がparents2/child2という名前になっている。

その上で右のchild2を選択して左のchild1をターゲットとしたトランスフォーム・コンストレイントを作成する。

トランスフォーム・コンストレイントでは設定項目にオプションがある。ローカルと相対的の二つなのだが、これにチェック入れる入れないで結構変わるのでここで説明する。

オプションなし

トランスフォーム・コンストレイントの設定で、トランスレートを100にするとchild2がchild1と同ポジになる。これは親階層がどうなっていようとワールド座標で同じ座標になるので変わらない。

ちなみに一致ボタンを押してからミックス値を調整すると、制御されるボーンは動かないままでミックス値を調整できる。

トランスレートを100にする

ローカルにチェック

続いてローカルにチェックを入れてみる。すると親ボーンを基準にした位置になるので先ほどとは違って同ポジにはならない。parents1に対してのchild1の位置がparents2に対するchild2に反映される。画像をみるとわかるが親ボーンに対しての位置関係が左右同じになっている。

ローカルにチェック

相対的にチェック

続いては相対的にチェックを入れてみる。するとなぜか上の方に行く。これはターゲットとその親(この場合ローカルにチェックが入っていないのでroot)との距離をchild2に追加されているのだ。

補足を入れてみるとこんな感じ。

ローカル&相対的にチェック

ローカルと相対的の2つ両方にチェックを入れると相対的での基準点がローカルになる。つまり親であるparentsボーンからの距離を反映させる。

基本ミックス値を100にすると制御されるボーンはトランスフォームコンストレイントでしか制御できなくなるのだが、相対的にチェックを入れると制御されるボーンをトランスフォームコンストレイントではなくとも制御可能になる。相対的にチェックを入れる利点はそこにもあるのかもしれない。

オフセット

ミックス値を100にした状態で少し位置を調整した場合などはオフセットを使って調整する。ただ下GIFのようにミックス値がそのままオフセットの影響度に反映されるので、ミックス値が0だとオフセットが効かないので注意。ちなみにオフセットはアニメーションのキーが打てないので注意。

コメント