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

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

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

スキニングの挙動がEditor上とUnity上で違う

お世話になります。

現在スキニングで髪の揺れを制作し、それをUnity上で動かしています。
Editor上では綺麗に動作するのですが、Unity上ではまったく違う挙動になります。



この現象はSDK側の不具合でしょうか。
それともEditor上での設定にミスがあるのでしょうか。

なにか情報があればご教授いただけると助かります。
よろしくお願いします。

コメント

  • @hatyati様

    ご連絡ありがとうございます。
    Live2Dスタッフの小嶺と申します。よろしくお願い致します。

    まずはご使用になられているCubism EditorとUnitySDKのバージョンをご確認して頂けますでしょうか?
    UnitySDKの物理演算部分は修正した経歴があり、使用しているCubism EditorとUnitySDKの組み合わせで不具合を起こす可能性があります。

    もしCubism Editor3.1.03、Cubism 3.1 SDK for Unity R7の組み合わせでも問題が発生している場合は、
    原因特定のためDMにてファイルをご送付いただければ幸いです。

    よろしくお願いいたします。
  • 小嶺様
    返信ありがとうございます。

    使用しているバージョンは以下の通りです。
    Cubism Editor3.1.03
    Cubism 3.1 SDK for Unity R7
    Unity 2017.3.1f1 (64-bit)

    後ほどDMにてファイルを送りますので、
    お手数おかけしますがよろしくお願いします。
  • @hatyati様

    ファイルのご送付、ありがとうございました。
    こちらで試したところ、物理演算、モデル、ファイルなどには問題がなかったものの
    Unity上のComponentの処理の順番に問題があるかもしれません。

    暫定的な対応ではありますが以下の操作をお試しください。
    Unityメニューから
    Edit>ProjectSettings>Script Execution Orderを選択


    Live2D.Cubism.Fromework.Physics.CubismPhysicsControllerを追加し


    順序をマイナスの値にしてください。
    DefaultTimeよりCubismPhysicsControllerが上にあれば大丈夫です。


    内容としては物理演算の計算を他の操作より先んじて行うことにより
    前フレームの値で物理演算を行う形にすることにより物理演算の安定化を図るものです。

    この操作でも問題が出る場合は、
    他の併用されているComponentについてご回答いただければ引き続き調査する予定です。

    よろしくお願いいたします。
  • 小嶺様
    返信ありがとうございます。

    さっそく試してみたのですが、Editor上の挙動とは未だ違うようです。
    ただ、カクつく?ことがなくなりましたので、多少なりとも改善したように思えます。



    現在、前髪は概ねふんわりとした動きですが、横髪と後ろ髪、アホ毛の挙動が違うようです。
    前髪とそれ以外の違いは、スキニング設定時に回転デフォーマを用いているかワープデフォーマを用いているかの違いがあります。
    • 前髪:回転デフォーマとアートメッシュの間にワープデフォーマを作り、回転を削除し動きを子ワープに反映させた状態。
    • その他の髪:回転デフォーマを用いた標準的なスキニングの状態。
    前髪の挙動のみがおかしいのであればこれが原因なのでしょうが、
    標準的なスキニングを用いている方がおかしな挙動のため、他に心当たりはありません。

    横髪やアホ毛は全体が動いていますが、後ろ髪に関しては途中の動きがほとんど見られません。
    根本と毛先が少し動いている程度でしょうか。


    他に考えつく可能性としては、
    • 製作中にCubismのバージョンが3.0→3.1になる。
    • 3.1でスキニングを設定したが3.1.02のバグ回避のために、その後は3.0でモデルを制作した。
    • 最終的には3.1に戻り、物理演算を設定した。
    このように製作中に下位バージョンと行き来した点が原因かもしれません。
    (ただ、「物理演算、モデル、ファイルなどには問題がなかった」とのことなので関係ないかもしれません)


    お手数おかけしますが、よろしくお願いします。
  • @hatyati様

    ご確認ありがとうございます。
    追加の調査しましたところ、原因としては
    「モデルが重いため更新時間を超過してしまい、物理演算に対して正しい更新時間を伝えられていない」
    と思われます。

    重さが原因と判断した理由は、物理演算内部の振り子データの比較で@hatyati様のモデルのみ振り子データにまで影響があったためです。
    比較用に用意した、簡易的に生産した振り子の多いモデルでは、本現象の再現は確認できませんでした。

    利用方法によって異なりますが、以下は、用途ごとにこの現象を回避する対策案になります。

    ・モーションに物理演算の結果をベイクする
    特定のモーションの切り替えが予想できる場合に有効です。
    また、最終成果物が動画である場合も有効です。
    Editor側で綺麗に時間を区切って計算するのでEditor側と物理演算を利用できます。

    ・UnityのFPSを落とす
    Unityのフレームレートを落とすことによって、物理演算に正しい更新時間を伝えられます。
    FPSを落とすには設定から行う方法スクリプトで指定する方法があります。

    ・Physicsの設定を変更する
    物理演算に渡す時間をUnityの現在時間ではなく、補正された時間を渡す方法もあります。
    こちらはAssets/Live2D/Cubism/Framework/Physics/CubismPhysics.csの
    public static bool UseFixedDeltaTime = false;
    の項目をtrueに変更してください。
    渡される時間は補正されたものになりますが、Editorと同じ動作を保証するものではありません。

    ・モデルを軽量化する
    モデルを軽量化することで更新時間の遅延を防ぎます。

    最後にUnityのProfilerのDeep Profileを使用していると動作が重くなるので
    もし使っている場合は解除して見てください。

    よろしくお願いいたします。
コメントするにはサインインまたは登録して下さい。