Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

Live2Dモデルのインポート時に、毎回AnimationClipの差分が発生します

お世話になっております。
担当中のPJで、Live2Dの導入を進めています。
以下のような手順で、Unity上にモデルのImportを行うと、AnimationClipに関する差分が毎回発生してしまいます。

再現手順:
・モデルを初回Import or Reimportする
・Unityを閉じる -> AnimationClipなどに差分が発生する
・再度Unityを開き、モデルをReimport -> AnimationClipなどに差分が発生する

開発環境:
Cubism 4 SDK for Native R1
Unityバージョン: 2019.3.10f1
OriginalWorkflow使用の有無: 使用なし
macOS Mojave 10.14.5

スクリーンショット:
Unityを閉じた際に生じる差分の例になります。


Unityを再度開き、Reimportした際に生じる差分の例になります。


補足:
・差分を見ると、AnimationClipのnameが都度変更されているようです
・Importerの拡張は、まだ行っておりません。
・Unityを閉じる動作がトリガになっているようで、Unityを開いたまま同じモデルをReimportしても、差分は発生しません
・関連があるかわかりませんが、UnityのAssetDatabaseのVersion2では、Unityを閉じるタイミングで、AnimationClipファイルが変更されます。

コメント

  • お世話になっております。
    こちらの変更差分が生じる件なのですが、.motion3ファイルのReimport時に、
    AnimationClipのInstanceIdが前回と変わっていることで、発生するようでした。

    Unityバージョン: 2019.3.10f1で空のProjectを生成し以下の操作を行った所、AnimaitonClipのInstanceIdが変わることがありました(変わらない場合もありました)。
    1.AnimationClipを編集する
    2.Unityを一度閉じ、開き直す

    1.については、Live2Dの場合、motion3ファイルからAnimationClipを生成すると思いますので、考慮しなくて良いと思います。
    2.のケースについては、どうすればよいでしょうか...?

    また、MotionFadeに関する以下の記事を拝見した所、
    「※ 実行する環境によって AnimationClip.GetInstanceID() で取得したインスタンスIDがUnity上とランタイムとで異なる場合があるため、AnimationClipの判別ができなくなることがあります。」とあり、InstanceIdによるクリップの判別が正しいのか、気になっています。
    https://docs.live2d.com/cubism-sdk-manual/motionfade/?locale=ja
  • 編集済:07/09
    @th1209 さん

    以下のような手順で、Unity上にモデルのImportを行うと、AnimationClipに関する差分が毎回発生してしまいます。

    こちらはUnityの仕様によって発生している現象です。
    Unity終了時にAnimationClip.nameが設定されていない場合、UnityはnameにそのAnimationClipのファイル名を設定します。
    Cubism SDK for Unityのインポート処理によって生成するAnimationClipは、AnimationClip.nameを設定していないため、生成直後とUnityを終了した後のAnimationClipに差分が発生します。
    この差分の発生は、AnimationClip生成時にAnimationclip.nameを設定することで回避できます。
    こちらは今後のCubism SDKの修正で対応を検討しております。


    こちらの変更差分が生じる件なのですが、.motion3ファイルのReimport時に、
    AnimationClipのInstanceIdが前回と変わっていることで、発生するようでした。

    こちらで確認した限り、Unityを開き直した際のInstanceIdの変化は再現しませんでした。
    他に現象が再現する条件などはございますでしょうか?


    また、MotionFadeに関する以下の記事を拝見した所、
    「※ 実行する環境によって AnimationClip.GetInstanceID() で取得したインスタンスIDがUnity上とランタイムとで異なる場合があるため、AnimationClipの判別ができなくなることがあります。」とあり、InstanceIdによるクリップの判別が正しいのか、気になっています。
    https://docs.live2d.com/cubism-sdk-manual/motionfade/?locale=ja

    こちらはSDK内でのAnimationClipの判別にGetInstanceId()を利用していない理由の記述で、判定する一意のIDはAnimationEventとしてAnimationClipに記録されたものと、.fadeMotionListに記載されたものを比較します。
    こちらのドキュメントは説明が不明瞭なため、近日中に修正させていただきます。
    ご指摘ありがとうございます。
  • y_a_s_様

    細かく教えてくださりありがとうございます。
    (返信が遅れてしまい、申し訳ありません。)

    こちらはUnityの仕様によって発生している現象です。
    Unity終了時にAnimationClip.nameが設定されていない場合、UnityはnameにそのAnimationClipのファイル名を設定します。
    Cubism SDK for Unityのインポート処理によって生成するAnimationClipは、AnimationClip.nameを設定していないため、生成直後とUnityを終了した後のAnimationClipに差分が発生します。

    こちら、現象とご対応方法、教えてくださりありがとうございます。
    教えて頂いた方法を元に、差分の発生を無くせるか検討してみます。

    こちらで確認した限り、Unityを開き直した際のInstanceIdの変化は再現しませんでした。
    他に現象が再現する条件などはございますでしょうか?

    こちら、ご確認頂きありがとうございます。
    手元の環境ですと、AnimationClipの内容を変更した際に、InstanceIdが変わることがありました。
    (※Unityを閉じた際にInstanceIdが変わったのは、Unityを閉じた際にAnimationClipに変更が入ったからかもしれません...。)

    また、この件について調べていた所、「実行時にInsanceIdの値が変わった」という記載を幾つか見かけたことがあったのですが、
    手元の環境では、実行時にInstanceIdが変わることはありませんでした。


    こちらはSDK内でのAnimationClipの判別にGetInstanceId()を利用していない理由の記述で、判定する一意のIDはAnimationEventとしてAnimationClipに記録されたものと、.fadeMotionListに記載されたものを比較します。
    こちらのドキュメントは説明が不明瞭なため、近日中に修正させていただきます。

    こちらの件も、ご確認くださりありがとうございます。
    「判定する一意のIDはAnimationEventとしてAnimationClipに記録されたものと、.fadeMotionListに記載されたものを比較します。」
    とのことでしたら、問題ないはずです。失礼しました...。
コメントするにはサインインまたは登録して下さい。