Misaki Nate
Misakiさん、Nateさん。お返事ありがとうございます。
私は下位トラックにプロパティがないと、値が増加し続ける仕様は
加算ブレンドのメリットと存在意義を大きく損なっていると思います。
この認識に開発者の方とギャップがあると思うので、具体的なユースケースを提示します
■加算ブレンドを使うケースは多い
左のプレビューは、通常より目を細め考え事をしている「Thinking」アニメです
右は汎用的な瞬きアニメです。Track0のアニメと合成してキャラに瞬きを追加します。
これをMixBlend:Replaceで組み合わせてみます。
(0:08~)
すると目を大きく開き表情が変化してしまいました。
Replaceは下位トラックを上書きするため、柔軟に対応できないケースが多いです。
(0:21~)
加算でブレンドしたアニメは相対変化のため、Track0の表情を変えずに瞬きが実現できています。
Unityで確認します。
Thinking&瞬きは問題がありません。
しかし、瞬きのような汎用アニメは多くのアニメと組み合わせるためにあります。
防御態勢を取る別のモーション「Guard」との組み合わると、瞬きの度に加算が繰り返され奇妙な絵ができました。
Guardは瞬きのボーンを操作しないためプロパティがないからです。
これはSpineエディタでは確認できず、ランタイムでテストをして初めて気付く問題です。
■複数の要因が重なって対処が困難
それではGuardアニメに瞬きボーンのキーを予め打っておくべきでしょうか?
しかし前述の通り、セットアップと同じプロパティはアニメーションクリーンアップで消えます。
そのため僅かに動かしたクリーンアップで消えないキーを0フレーム目に打つ作業が要求されます
Guardだけでなく、待機、歩行、しゃがみなど多岐にわたり、今後も増え続ける新しいモーション一つ一つに、本来不必要なセットアップポーズとほんの僅かに異なる値を入れていく工程が発生します
別のケースでは呼吸モーションがあります。
上半身がわずかに膨らみ上下する単純なものですが、多くのアニメと組み合わせられそうです。
Replaceではポーズが崩れるため、加算ブレンドが必要です。
呼吸モーションには12個のキーが存在します。
これらをクリーンアップで消えない値で、下位トラックで再生する既存のアニメ全てをチェックし、キーを使用しているかいないかを把握して打ち直す。もしもキーが増えたり、汎用アニメが新しく必要になる毎に、全アニメ再点検です。でなければいつゲーム中で描画バグが発生するか分かりません。
それにかかる労力は若干、非現実的に感じます。
■加算ブレンドを使用する意義
私は動かしたいボーンを、下位トラックの位置、回転、スケールなどを考慮せず相対的に動かせることが最大の利点だと思っています。
Replaceはボーンの稼働範囲を限定する分には有用ですが使用できる状況も限定的です。
複数のアニメに使い回す汎用モーションを作る場合、加算ブレンドでなければなりません。
この下位トラックにプロパティがない場合、ランタイムで値が増加し続けるという仕様は、
エディタとランタイムで動作が異なる時点で混乱を招く上、
本来下位トラックの状況を選ばず相対的に動かせる加算ブレンドのメリットと利便性を大きく損なっていると感じます。
eg using Skeleton setToSetupPose. If you are annoyed by needing to reset all the properties, then setToSetupPose is probably what you want.
SetUptoSetUpPoseとはどのように使用すべきでしょうか?
現在はこのようにTrack0のアニメを変更する時に使用していますが、アニメのループ中は加算ブレンドのプロパティが増え続けてしまいます。
ここまで読んでくださってありがとうございます。