Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

アニメーション操作をAnimator ControllerとLateUpdate相互で操作した時の物理演算の挙動

いつもお世話になっております。

モデルのアニメーションをAnimator ControllerにXXXclipを登録(再生はしないがstateとしては存在する状態)の場合に
LateUpdateからXXXclipに設定されている同一の単一パラメータ操作した場合にLateUpdate側で操作したパラメータ値でoverrideされることは確認できたのですが
Animator Controllerにclipが存在している状態だと
本来LateUpdateで変更したパラメータに影響を受ける物理演算パラメータが影響を受けず振り子運動を行いません。

このような場合の解決方法はございますでしょうか?


タグ付けされた:

コメント

  • @morita さん

    モデルのPrefabに CubismUpdateController, CubismParameterStore はアタッチされていますでしょうか?
    もしアタッチされていないのであれば、これらをアタッチしても現象が発生するかご確認いただけますでしょうか?
  • @y_a_s_(Dev Staff) さん
    ご連絡誠にありがとうございます。

    > CubismUpdateController, CubismParameterStore
    こちら両方アタッチされていなかったので対応いたしましたが、現状に変わりはありませんでした。
    むしろCubismUpdateControllerを含めるとlateupdate側でパラメータ操作を行っても全て物理演算は全て動かなくなってしまいました
    (clipに含まれていないパラメータは元々物理演算動いていましたがそちらも含め動かなくなります)

    他の方法等はございますでしょうか?
  • @morita さん

    確認ありがとうございます。
    おそらく原因は各コンポーネントの実行順が原因だと思われます。

    Cubism SDK for Unity の各コンポーネントは、更新をLateUpdate()のタイミングで行っています。
    GameObjectにアタッチされているコンポーネントの実行順は、Unity側によって決められます。
    そのため、ユーザが追加したパラメータの値を操作する処理が物理演算よりも後に呼び出される、またはパラメータの値を操作する処理と物理演算の間に他のコンポーネントによって値が上書きされてしまうことで、物理演算が意図通りの動作をしていない可能性があります。

    この現象を回避するには、Unity側でコンポーネントの実行順を明示的に設定する、またはCubismUpdateControllerを利用するという2つの方法があります。

    CubismUpdateControllerは、Cubism SDKの各コンポーネントの実行順を制御するものです。
    すべてのCubismのコンポーネントは、CubismUpdateControllerに自身の更新処理の関数を登録し、CubismUpdateControllerによって適正な順序で各コンポーネントの更新処理が呼び出されます。
    ユーザ独自のコンポーネントもCubismUpdateControllerに更新処理のタイミングを管理させることができます。
    こちらを利用して任意のタイミングで処理が呼び出されるようカスタマイズすることで現象を回避できると思われます。
    CubismUpdateControllerの使用方法については以下のドキュメントをご覧ください。
    https://docs.live2d.com/cubism-sdk-manual/updatecontroller/

    Unityによってコンポーネントの実行順を制御する方法は、公式のドキュメントを参照してください。
    https://docs.unity3d.com/ja/Manual/class-MonoManager.html
コメントするにはサインインまたは登録して下さい。