Unity用SDKにて、インポート時に作成されるmeta情報が不正になっている?

【Cubism SDKのバージョン】 Cubism 4 SDK for Unity R5
【OS名・バージョン】Windows10
【開発使用ツール】Visual Studio 2022、Unity 2021.3.11f1(LTS)
【不具合の状況】
・書き出したデータをUnityにインポートすると、
Main Object Name’AnimationName.anim’ does not match filename’AnimationName’
というワーニングログが出ます。
・生成されたAnimationClipのInspectorのトップに
The main object name should match the asset filename.
please fix to avoid errors.
というテキストボックスが表示されます。
・このとき、AnimationClipの.meta内m_name項目がAnimationName.animになっています。
・AnimationClipのInspectorのトップに表示されているテキストボックスの右側に[Fix object name]というボタンが表示されており、こちらをクリックすると.metaのm_name項目がAnimationNameに書き換わり、ワーニングログは表示されなくなります。
・上記と同様(ただし、m_nameは空欄になっている)が、CubismMocファイルでも起こります。

・サンプルモデルでも発生します。
【再現手順】
ダウンロードした(更新日:2020/09/17の)miku_pro_jp/runtimeをunityのprojectウィンドウにドラッグアンドドロップしてインポートします。
または、miku_pro_jp/miku_sample_t02.can3およびmiku_sample_t05.cmo3から手元で書き出したデータをインポートします。

・プロジェクトの最小構成でも発生します。

こちら、既知の不具合でしたら申し訳ありません。
また、なにかUnityバージョンなど構成に問題がありましたらご教示頂きたいです。
補足情報ですが、Unity 2020.3.9f1(LTS)では本問題は発生しませんでした。
(それとは別に、SDKインポート時に複数のエラーログが出ていました。)
よろしくお願いします。

補足情報:


このような状態になっています。
また、miku_pro_jpに限らず手元で作成したLive2Dモデルでも同様の現象が起こります。

@seshi

弊社製品をご利用いただきまして誠にありがとうございます。
Cubism SDK 開発チームです。

確認したところ、Cubism SDK内でAnimationClip、CubismMocに設定する名前が間違っていることが原因でした。
ご迷惑をおかけしてしまい誠に申し訳ありません。
こちらは近日中に修正を行わせていただきます。

お手数ですが、以下の対応を行って現象が解消されるかご確認頂けますでしょうか?

AnimationClip:
CubismMotion3JsonImporterの182行目、および208行目の処理を以下のように変更します。
animationClip.name = motionName.Replace(".anim","");

CubismMoc:
CubismModel3JsonImporterの176行目に、以下の処理を追加します。
moc.name = Path.GetFileName(Model3Json.AssetPath).Replace(".model3.json", "");

以上、ご確認のほどよろしくお願いいたします。

素早いご返事、ご対応、ありがとうございます。

AnimationClip及びCubismMocそれぞれについて確認のほう行いました。
まず、それぞれの対応方針自体にはおそらく問題はないと思われますので、こちらの修正の進行のほどよろしくお願いします。
対応ソースの前後を見つつ、それぞれ細かい点について所感を返答させていただきます。
もちろん、記載いただいた内容は暫定処置的なものであって、本対応方針はまた別にあるかもしれませんが、念のため記載させていただきます。

・まずAnimationClipについて
おそらくこちらに記載いただいた対応でも問題なく進むとは思います。
とはいえ、本不具合の本質的な問題はCubismMotion3JsonImporter.Import()内162,163行目の

var motionName = Path.GetFileName(AssetPath.Replace(".motion3.json", ".anim"));
var motionPath = $"{directoryName}/{motionName}";

ここで直後のmotionPathに受け渡すためにmotionNameの命名と内容が乖離している(「motionの名前」という意味の変数に、「motionの拡張子付きファイル名」が格納されている)ことかと思われます。
ですので

var motionName = Path.GetFileName(AssetPath.Replace(".motion3.json", ""));
var motionPath = $"{directoryName}/{motionName}.anim";

このような修正のほうが自然かなと個人的には感じました。
(HogeHoge.name = fugaName;という処理でバグがあると見つけるのはかなり困難だと思います)
あるいは、var motionFileNameなどに命名を変えてからご記載いただいた対応を行うかでしょうか。

・次に、CubismMocについて
こちらですが、申し訳ないですがPathはおそらくonoさんのローカル環境で定義されたものかと思われますので、未定義変数ですのでコンパイルエラーです。

とはいえ方針としては間違ってないと思いますので、そのままご対応頂いて問題ないように感じます。

こちら問題なく修正されました。
ちょっと頭働いてなくて変なことを書いてしまいましたすみません。

以上となります、よろしくお願いします。

@seshi

回答ありがとうございます。
ご指摘いただいたとおり、命名等の見直しも含め対応させていただきます。

よろしくお願いいたします。

「いいね!」 1