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

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2023年夏ごろを目処に方針を決定する予定です。
(2022/12/27追記 2022年内を目処に閉鎖 から変更しております)
内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。

Live2D ヘルプ

Cubism Editorダウンロード / 動作環境
Cubism SDKダウンロード / 対応表
Cubism 製品利用ライセンス(SDK含)

Cubism 製品のライセンスについてのお問い合わせはこちら
nizima 及び nizima 製品についてのお問い合わせはこちら
【各最新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
  • 返答が遅れてしまい申し訳ございません。

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