kurotu / VRCQuestTools

Unity editor extension to support uploading VRChat avatars for Oculus Quest
https://kurotu.github.io/VRCQuestTools/
MIT License
199 stars 14 forks source link

[2.3.0]非破壊の変換を利用しようとするとAnimatorControllerの変換中にエラーが発生する #24

Closed c-colloid closed 4 months ago

c-colloid commented 4 months ago

Describe the bug / バグの説明

2.3.0でNDMFを利用した非破壊アップロードをしようとすると変換中にエラーが発生するようになりました 2.2.2にダウングレード/2.3.0で手動変換を噛ませてからアップロードをするとエラーは発生しなくなりました

エラー内容

System.Collections.Generic.KeyNotFoundException: The given key 'Fist R [2] (UnityEngine.AnimatorState)' was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility+<>c__DisplayClass9_0.<DeepCopyStateMachine>b__8 (UnityEditor.Animations.AnimatorTransition t) [0x0000e] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:340 
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyStateMachine (UnityEditor.Animations.AnimatorStateMachine stateMachine) [0x00263] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:336 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility+<>c.<DeepCopyAnimatorController>b__8_0 (UnityEditor.Animations.AnimatorControllerLayer layer) [0x0004d] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:278 
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyAnimatorController (UnityEditor.Animations.AnimatorController controller) [0x00011] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:269 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.ReplaceAnimationClips (UnityEngine.RuntimeAnimatorController controller, System.Boolean saveAsAsset, System.String saveDir, System.Collections.Generic.Dictionary`2[TKey,TValue] newMotions) [0x00095] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:162 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x0007f] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:356 
--- End of stack trace from previous location where exception was thrown ---

  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x000ba] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:363 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertForQuestInPlace (KRT.VRCQuestTools.Components.AvatarConverterSettings setting, KRT.VRCQuestTools.Models.ComponentRemover remover, System.Boolean saveAssetsAsFile, System.String assetsDirectory, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+ProgressCallback progressCallback) [0x00231] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:134 
  at KRT.VRCQuestTools.Ndmf.AvatarConverterTransformingPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00025] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\NDMF\Passes\AvatarConverterTransformingPass.cs:35 
  at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:350 
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility+<>c__DisplayClass9_0.<DeepCopyStateMachine>b__8 (UnityEditor.Animations.AnimatorTransition t) [0x0000e] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:340 
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyStateMachine (UnityEditor.Animations.AnimatorStateMachine stateMachine) [0x00263] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:336 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility+<>c.<DeepCopyAnimatorController>b__8_0 (UnityEditor.Animations.AnimatorControllerLayer layer) [0x0004d] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:278 
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyAnimatorController (UnityEditor.Animations.AnimatorController controller) [0x00011] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:269 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.ReplaceAnimationClips (UnityEngine.RuntimeAnimatorController controller, System.Boolean saveAsAsset, System.String saveDir, System.Collections.Generic.Dictionary`2[TKey,TValue] newMotions) [0x00095] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:162 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x0007f] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:356 
--- End of stack trace from previous location where exception was thrown ---

  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x000ba] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:363 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertForQuestInPlace (KRT.VRCQuestTools.Components.AvatarConverterSettings setting, KRT.VRCQuestTools.Models.ComponentRemover remover, System.Boolean saveAssetsAsFile, System.String assetsDirectory, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+ProgressCallback progressCallback) [0x00231] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:134 
  at KRT.VRCQuestTools.Ndmf.AvatarConverterTransformingPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00025] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\NDMF\Passes\AvatarConverterTransformingPass.cs:35 
  at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:350 

To Reproduce / 再現手順

  1. Convert Avatar for AndroidウィンドウのメニューからVQT Avatar Coverter Settingsを付ける 2-1. そのままGestureManagerでテストする 2-2. そのままVQT Avatar Builderでアップロードしようとする

2-1/2-2共に同じエラーが発生する

  1. 2.2.2にダウングレードしGestureManagerでテストする

エラーが発生しなくなる

  1. 2.2.2で「変換」ボタンを試す

エラーは発生せず変換が完了しアップロードも問題なくできる

  1. 2.3.0に戻し再度「変換」ボタンを試す

エラーは発生せず変換が完了しアップロードも問題なくできる

Expected behavior / 期待する動作

NDMFを利用してエラーが発生することなく変換がされアップロードが成功する

Screenshots / スクリーンショット

image image image image

Used assets / 使用したアセット

アバター:Pon Booth

VRCQuestTools version / VRCQuestToolsのバージョン

2.3.0

Unity version / Unityのバージョン

2022.3.6f1

Additional context / その他の情報

シーン内にいくつかNDMF用のオブジェクトがありますが、これらは元々アバターの中に入っていたものでした 競合の可能性を考えて取り出してからテストしていますがエラーが発生しました アバターの中には入れていないので変換処理に影響は出ないと思われますが一応プロジェクト内に入れているNDMF対応拡張を記載しておきます

変換を噛ませた後ならば すべてのオブジェクトを再度アバター内に入れてからテストした場合でも問題なくアップロードが完了しました

c-colloid commented 4 months ago

エラー文的にFXレイヤーのステートに原因がありそうだったので少し検証してみました

結論:詳細な発生条件は分かりませんが、特定のサブステートに対してエラーが発生するようです そのサブステートを消した状態でテストしたところエラーは出なくなりました

詳細:エラーに出てくるFist R [2]のステートを探し出し消してみました その結果、それだけだと同じサブステート内にある他のステートでエラーが発生するようになりました 次にサブステート毎消してみたところもう一つのサブステートにエラーが移ったのでそちらも消した所でエラーが発生しなくなりました (消したのは画像内の2つのサブステート) image

ただし、サブステートは他のレイヤーでも使われており(例えばFacialExlusiveレイヤーなんかはほぼ同じ構成で作られています)、なぜここだけエラーが発生するのかは謎です

他に試したこと

また、拡張を入れてないアバターにエラーが無くなった時点で他のNDMF拡張の再導入も試してみました結果 FaceEmoだけエラーが発生する事が確認されました これも同じように特定のサブステートだけエラーになるという状況が確認できました 本来はIssueを分けるべきかもしれませんが、ほぼ同じ原因で起きていそうなのでこちらにまとめさせてもらいます

エラー文を以下に添付します

System.Collections.Generic.KeyNotFoundException: The given key 'L0 R0 (UnityEngine.AnimatorState)' was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyStateMachine (UnityEditor.Animations.AnimatorStateMachine stateMachine) [0x0021b] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:322 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyChildAnimatorStateMachine (UnityEditor.Animations.ChildAnimatorStateMachine stateMachine) [0x00016] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:453 
  at (wrapper delegate-invoke) System.Func`2[UnityEditor.Animations.ChildAnimatorStateMachine,UnityEditor.Animations.ChildAnimatorStateMachine].invoke_TResult_T(UnityEditor.Animations.ChildAnimatorStateMachine)
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyStateMachine (UnityEditor.Animations.AnimatorStateMachine stateMachine) [0x000ff] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:313 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility+<>c.<DeepCopyAnimatorController>b__8_0 (UnityEditor.Animations.AnimatorControllerLayer layer) [0x0004d] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:278 
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyAnimatorController (UnityEditor.Animations.AnimatorController controller) [0x00011] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:269 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.ReplaceAnimationClips (UnityEngine.RuntimeAnimatorController controller, System.Boolean saveAsAsset, System.String saveDir, System.Collections.Generic.Dictionary`2[TKey,TValue] newMotions) [0x00095] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:162 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x0007f] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:356 
--- End of stack trace from previous location where exception was thrown ---

  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x000ba] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:363 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertForQuestInPlace (KRT.VRCQuestTools.Components.AvatarConverterSettings setting, KRT.VRCQuestTools.Models.ComponentRemover remover, System.Boolean saveAssetsAsFile, System.String assetsDirectory, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+ProgressCallback progressCallback) [0x00231] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:134 
  at KRT.VRCQuestTools.Ndmf.AvatarConverterTransformingPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00025] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\NDMF\Passes\AvatarConverterTransformingPass.cs:35 
  at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:350 
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyStateMachine (UnityEditor.Animations.AnimatorStateMachine stateMachine) [0x0021b] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:322 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyChildAnimatorStateMachine (UnityEditor.Animations.ChildAnimatorStateMachine stateMachine) [0x00016] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:453 
  at (wrapper delegate-invoke) System.Func`2[UnityEditor.Animations.ChildAnimatorStateMachine,UnityEditor.Animations.ChildAnimatorStateMachine].invoke_TResult_T(UnityEditor.Animations.ChildAnimatorStateMachine)
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyStateMachine (UnityEditor.Animations.AnimatorStateMachine stateMachine) [0x000ff] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:313 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility+<>c.<DeepCopyAnimatorController>b__8_0 (UnityEditor.Animations.AnimatorControllerLayer layer) [0x0004d] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:278 
  at System.Linq.Enumerable+SelectArrayIterator`2[TSource,TResult].ToArray () [0x00012] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <de4a1a1490a74771a34fee0d1d586658>:0 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.DeepCopyAnimatorController (UnityEditor.Animations.AnimatorController controller) [0x00011] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:269 
  at KRT.VRCQuestTools.Utils.UnityAnimationUtility.ReplaceAnimationClips (UnityEngine.RuntimeAnimatorController controller, System.Boolean saveAsAsset, System.String saveDir, System.Collections.Generic.Dictionary`2[TKey,TValue] newMotions) [0x00095] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Utils\UnityAnimationUtility.cs:162 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x0007f] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:356 
--- End of stack trace from previous location where exception was thrown ---

  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertAnimatorControllersForQuest (UnityEngine.RuntimeAnimatorController[] controllers, System.Boolean saveAsAsset, System.String assetsDirectory, System.Collections.Generic.Dictionary`2[TKey,TValue] convertedMotions, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+RuntimeAnimatorProgressCallback progressCallback) [0x000ba] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:363 
  at KRT.VRCQuestTools.Models.VRChat.AvatarConverter.ConvertForQuestInPlace (KRT.VRCQuestTools.Components.AvatarConverterSettings setting, KRT.VRCQuestTools.Models.ComponentRemover remover, System.Boolean saveAssetsAsFile, System.String assetsDirectory, KRT.VRCQuestTools.Models.VRChat.AvatarConverter+ProgressCallback progressCallback) [0x00231] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\Models\VRChat\AvatarConverter.cs:134 
  at KRT.VRCQuestTools.Ndmf.AvatarConverterTransformingPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00025] in .\Packages\com.github.kurotu.vrc-quest-tools\Editor\NDMF\Passes\AvatarConverterTransformingPass.cs:35 
  at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:350 

(エラーの発生場所) image image

kurotu commented 4 months ago

Animator Controllerの複製時に、サブステートマシンへのEntry Transition (サブステートマシン内のステートへの直接遷移)の複製に失敗していました。 この現象自体は修正できたのですが、複製に関して別の不具合も見えてきたので修正リリースは少し先になります。

kurotu commented 4 months ago

v2.3.1 で修正しました