modular-avatar icon indicating copy to clipboard operation
modular-avatar copied to clipboard

特定のアバターにおいてMAを使用する際にKeyNotFoundExceptionのエラーが発生します

Open u4-natsuo opened this issue 11 months ago • 6 comments

特定のアバターに対してMAを使用する際に下記のエラーが発生します。 お手数ですが、ご確認をよろしくお願いいたします。

使用アバター:https://xelevia.booth.pm/items/3002686 導入システム:https://booth.pm/ja/items/5509228 使用環境:Unity 2022.3.6f1      VRChat SDK 3.5.1      Modular Avatar 1.9.8

エラー内容:(下記のとおり)

System.Collections.Generic.KeyNotFoundException: The given key 'Action' was not present in the dictionary. at System.Collections.Generic.Dictionary2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.MergeSingle (nadena.dev.modular_avatar.core.editor.BuildContext context, nadena.dev.modular_avatar.animation.AnimatorCombiner session, nadena.dev.modular_avatar.core.ModularAvatarMergeAnimator merge) [0x00071] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:153 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.ProcessLayerType (nadena.dev.modular_avatar.core.editor.BuildContext context, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType layerType, System.Collections.Generic.List1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89 at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177 at nadena.dev.ndmf.Pass1[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:337 at System.Collections.Generic.Dictionary2[TKey,TValue].get_Item (TKey key) [0x0001e] in :0 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.MergeSingle (nadena.dev.modular_avatar.core.editor.BuildContext context, nadena.dev.modular_avatar.animation.AnimatorCombiner session, nadena.dev.modular_avatar.core.ModularAvatarMergeAnimator merge) [0x00071] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:153 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.ProcessLayerType (nadena.dev.modular_avatar.core.editor.BuildContext context, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType layerType, System.Collections.Generic.List1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89 at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177 at nadena.dev.ndmf.Pass1[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:337

u4-natsuo avatar Mar 14 '24 11:03 u4-natsuo

これについては調査する予定です

bdunderscore avatar Mar 15 '24 16:03 bdunderscore

申し訳ありません。 上記内容につきましては、自己解決しました。 古いアバターだったため、Atatar descriptorが問題だったようです。 既存のAtatar descriptorゆ削除したうえで入れ直したら起動しました。

u4-natsuo avatar Mar 15 '24 17:03 u4-natsuo

わかりました。しかし、MA側にバグがあるのは変わりません。上記のスタックトレースで十分調査できると思いますので忘れないようにここまま開いたままにさせてください。

bdunderscore avatar Mar 15 '24 17:03 bdunderscore

承知しました お手数ですが、よろしくお願いいたします

u4-natsuo avatar Mar 15 '24 17:03 u4-natsuo

Howdy! I also ran into this error on my Kikyo avatar, and the issue ended up being with the Playable Layers dictionary.

image

As you can see, I don't have an Action layer slot, but instead two FX layer slots. So, when searching for the Action layer in the dictionary, the key did not exist.

To fix this, I hit the "Reset to Default" button and re-assigned the layers. This could also be fixed on the plugin side by checking if the key exists before performing the MA Merge Animator.

image

Hope this helps resolve the issue! And here's my Stack Trace before I reset the layers:

System.Collections.Generic.KeyNotFoundException: The given key 'Action' was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 
  at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.MergeSingle (nadena.dev.modular_avatar.core.editor.BuildContext context, nadena.dev.modular_avatar.animation.AnimatorCombiner session, nadena.dev.modular_avatar.core.ModularAvatarMergeAnimator merge) [0x00071] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:153 
  at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.ProcessLayerType (nadena.dev.modular_avatar.core.editor.BuildContext context, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType layerType, System.Collections.Generic.List`1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128 
  at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89 
  at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177 
  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:337 
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 
  at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.MergeSingle (nadena.dev.modular_avatar.core.editor.BuildContext context, nadena.dev.modular_avatar.animation.AnimatorCombiner session, nadena.dev.modular_avatar.core.ModularAvatarMergeAnimator merge) [0x00071] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:153 
  at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.ProcessLayerType (nadena.dev.modular_avatar.core.editor.BuildContext context, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType layerType, System.Collections.Generic.List`1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128 
  at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89 
  at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177 
  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:337 

appleblossomvr avatar Mar 21 '24 17:03 appleblossomvr

Thanks! This might still need to be an error, since the avatar descriptor is corrupt and it’s not clear what to do if eg there are two FX layers… but at least it can be one that is more clear about what is wrong.

bdunderscore avatar Mar 22 '24 00:03 bdunderscore