Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
u4-natsuo opened this issue Mar 14, 2024 · 6 comments

Comments

@u4-natsuo
Copy link

特定のアバターに対して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

@bdunderscore
Copy link
Owner

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

@u4-natsuo
Copy link
Author

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

@bdunderscore
Copy link
Owner

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

@u4-natsuo
Copy link
Author

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

@appleblossomvr
Copy link

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 

@bdunderscore
Copy link
Owner

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants