新しい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チュートリアル

UnityでLoadSceneAsyncした不具合について

----------------------------------------
動作環境
Unity2020.3.16f1
Windows10
Cubism 4 SDK for Unity R3
----------------------------------------

いつもお世話になっております、Unity、Live2dの初心者です。

UnityでLive2Dシーンに切り替えたあとに、冒頭、アニメーションなしのポーズがちらりと現れました。

こちらは不具合のサンプルです↓



途中ちらりと


こちらは切り替えのスクリプトです↓


関数の実行順序と関係があると思いますが、Documentationを見たら、関連記事がいないようで、どうすればいいか全くわかりません…

修正方法があれば教えていただけますと幸いです。
よろしくお願いいたします。
タグ付けされた:

コメント

  • @odakousei

    ご質問誠にありがとうございます。
    Live2Dスタッフでございます。
    いつも弊社製品をご愛顧くださり誠にありがとうございます。

    こちらの動作はCubism SDK for Unityの仕様によるものです。
    Cubism SDK for Unityではモデルの更新を非同期にできるよう、モデルに付きメッシュを二組用意し、頂点の更新と描画を各フレームごとに交互に切り替えて使用しています。
    そのためシーン切り替え直後は頂点を更新したメッシュが描画に使用されていないため、1フレームだけデフォルトの状態が表示されます。

    これを回避するには、シーンを切り替えたり、モデルをシーンに配置した直後に強制的に頂点を更新する処理を呼び出します。
    頂点の更新を明示的に行うには、 CubismModel.ForceUpdateNow() を呼び出します。
    // 実装例
    var cubismModel = GetComponent<CubismModel>();
    if (cubismModel != null)
    {
        cubismModel.ForceUpdateNow();
    }
    odakousei
  • 編集済: 9月 2021
    @y_a_s_(Dev Staff)
    ご返信ありがとうございます。

    ご提示いただいた内容で手が二つに正しく動作しましたが、アニメーションの更新はまだ遅れているのようです。

    下図のように一瞬だけデフォルトアニメーションのまま表示されています↓



    それを回避することができますか?

    ちなみに、こちらはスクリプトです↓


    この度はご対応いただき、誠にありがとうございました。
  • @odakousei さん

    Unityのアニメーションの処理は、Update()とLateUpdate()の間で行われます。
    そのためStart()のタイミングではまだアニメーションによる値操作が行われないので、ForceUpdateNow()を呼び出してもパラメータの状態はアニメーション適用前の状態となります。
    アニメーションを反映させる場合、表示したフレームのLateUpdate()以降のタイミングでForceUpdateNow()を呼び出すようにしてください。

    その際、コンポーネントの実行順によっても結果が意図しないものになる可能性がございます。
    もしCubismUpdateControllerを使用していれば、そちらで管理するようソースを書き換え、任意のタイミングで呼び出されるよう設定してください。
    ユーザ独自のクラスをCubismUpdateControllerによって呼び出しタイミングを管理させる方法は、以下のページを参考にしてください。

    また、この方法で二組のメッシュを強制的に入れ替えるのであれば、同時に2度行って両方のメッシュに適用してください。
  • 編集済: 11月 2021
    @y_a_s_(Dev Staff)

    ご多忙の中ご返信いただきありがとうございます。
    この度もお世話になりました。
    またなにかお聞きすることがあるかもしれませんが、その際はよろしくお願い致します。m(_ _)m
コメントするにはサインインまたは登録して下さい。