★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。

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();
    }
  • 編集済: 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
コメントするにはサインインまたは登録して下さい。