新しいLive2D公式コミュニティ(日本向け)が公開されました!
ぜひご利用ください!
Live2D公式コミュニティ

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2022年内を目処に閉鎖する予定です。
閉鎖時期や内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
【各最新OSの対応状況について】
Cubism Editorは 4.1.02 正式版以降でWindows 11 及び macOS Monterey に対応しております。ぜひ最新版をご利用ください。
※macOSをお使いの方でOSアップデートする際は必ずCubism Editorのライセンスを解除してください。
Cubism EditorをインストールしているmacOSをアップグレードしたい
Cubism SDKについては各SDKのREADMEまたはNOTICEをご確認ください。

【Mac各機種への対応状況について】
現在、Cubism EditorはApple M1チップ搭載機種には対応しておりません。
詳細は 動作環境 をご参照ください。
関連するお問い合わせへの対応はこの文章をもって代えさせていただきます。
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
  • 返答が遅れてしまい申し訳ございません。

    上記の内容通り事前に実行順番を設定することによに、想定通りの動きを実現することができました。
    ご返答誠にありがとうございました。
コメントするにはサインインまたは登録して下さい。