seshi
2022 年 10 月 4 日午後 7:25
1
【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インポート時に複数のエラーログが出ていました。)
よろしくお願いします。
seshi
2022 年 10 月 4 日午後 7:37
2
補足情報:
このような状態になっています。
また、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", "");
以上、ご確認のほどよろしくお願いいたします。
seshi
2022 年 10 月 7 日午後 2:30
4
素早いご返事、ご対応、ありがとうございます。
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