esperecyan / VRMConverterForVRChat

https://pokemori.booth.pm/items/1025226
Mozilla Public License 2.0
189 stars 23 forks source link

I don't know what happened. #11

Closed otoneco closed 3 years ago

otoneco commented 3 years ago

Unity Editor: 2018.4.20f1 VRChat SDK: 2021.02.23.11.41 VRM Converter for VRChat: 25.3.0 UniVRM: 0.70.0

UnityEngine.MissingReferenceException: The object of type 'VRMMetaObject' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. at (wrapper managed-to-native) UnityEngine.Object.SetName(UnityEngine.Object,string) at UnityEngine.Object.set_name (System.String value) [0x00003] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:199 at Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.VRChatToVRMConverter.Convert (System.String outputPath, UnityEngine.GameObject instance, VRM.VRMMetaObject meta, System.Collections.Generic.IDictionary2[TKey,TValue] presetVRChatBindingPairs, Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.DynamicBoneReplacer+ParametersConverter swayingParametersConverter) [0x001e2] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\VRChatToVRM\VRChatToVRMConverter.cs:163 at Esperecyan.Unity.VRMConverterForVRChat.UI.VRChatToVRMWizard.OnWizardCreate () [0x001c4] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\UI\VRChatToVRMWizard.cs:247 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at (wrapper managed-to-native) UnityEngine.Object.SetName(UnityEngine.Object,string) at UnityEngine.Object.set_name (System.String value) [0x00003] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:199 at Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.VRChatToVRMConverter.Convert (System.String outputPath, UnityEngine.GameObject instance, VRM.VRMMetaObject meta, System.Collections.Generic.IDictionary2[TKey,TValue] presetVRChatBindingPairs, Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.DynamicBoneReplacer+ParametersConverter swayingParametersConverter) [0x001e2] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\VRChatToVRM\VRChatToVRMConverter.cs:163 at Esperecyan.Unity.VRMConverterForVRChat.UI.VRChatToVRMWizard.OnWizardCreate () [0x001c4] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\UI\VRChatToVRMWizard.cs:247 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in :0

otoneco commented 3 years ago

読み込めない、存在しない項目があるようですが、Boothで購入したもののため、私ではいじるのは困難です。

otoneco commented 3 years ago

Unity Editor: 2018.4.20f1 VRChat SDK: 2021.02.23.11.41 VRM Converter for VRChat: 25.3.0 UniVRM: 0.70.0

System.ArgumentNullException: Value cannot be null. at UniGLTF.TextureExporter+ExportKey..ctor (UnityEngine.Texture src, UniGLTF.glTFTextureTypes type) [0x0000d] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\TextureIO\TextureExporter.cs:26 at UniGLTF.TextureExporter.ExportMetallicSmoothnessOcclusion (UnityEngine.Texture metallicSmoothTexture, System.Single smoothness, UnityEngine.Texture occlusionTexture) [0x00042] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\TextureIO\TextureExporter.cs:167 at UniGLTF.MaterialExporter.Export_OcclusionMetallicRoughness (UnityEngine.Material m, UniGLTF.TextureExporter textureManager, UniGLTF.glTFMaterial material) [0x000a2] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\MaterialIO\MaterialExporter.cs:91 at UniGLTF.MaterialExporter.ExportMaterial (UnityEngine.Material m, UniGLTF.TextureExporter textureManager) [0x00030] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\MaterialIO\MaterialExporter.cs:32 at UniGLTF.gltfExporter+<>cDisplayClass32_0.b__2 (UnityEngine.Material x) [0x00000] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\gltfExporter.cs:191 at System.Linq.Enumerable+SelectListIterator2[TSource,TResult].ToList () [0x0002a] in <fbb5ed17eb6e46c680000f8910ebb50c>:0 at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable1[T] source) [0x0001f] in :0 at UniGLTF.gltfExporter.Export (UniGLTF.MeshExportSettings meshExportSettings) [0x000c3] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\gltfExporter.cs:191 at VRM.VRMEditorExporter.Export (System.String path, UnityEngine.GameObject exportRoot, VRM.VRMMetaObject meta, VRM.VRMExportSettings settings, System.Collections.Generic.IReadOnlyList1[T] info, System.Collections.Generic.List1[T] destroy) [0x0028c] in C:\Users\YFdj\Lapis_vrm01\Assets\VRM\Editor\Format\VRMEditorExporter.cs:227 at VRM.VRMEditorExporter.Export (System.String path, UnityEngine.GameObject exportRoot, VRM.VRMMetaObject meta, VRM.VRMExportSettings settings, System.Collections.Generic.IReadOnlyList1[T] info) [0x00008] in C:\Users\YFdj\Lapis_vrm01\Assets\VRM\Editor\Format\VRMEditorExporter.cs:24 at Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.VRChatToVRMConverter.Convert (System.String outputPath, UnityEngine.GameObject instance, VRM.VRMMetaObject meta, System.Collections.Generic.IDictionary2[TKey,TValue] presetVRChatBindingPairs, Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.DynamicBoneReplacer+ParametersConverter swayingParametersConverter) [0x001e2] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\VRChatToVRM\VRChatToVRMConverter.cs:163 at Esperecyan.Unity.VRMConverterForVRChat.UI.VRChatToVRMWizard.OnWizardCreate () [0x001c4] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\UI\VRChatToVRMWizard.cs:247 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in :0 at UniGLTF.TextureExporter+ExportKey..ctor (UnityEngine.Texture src, UniGLTF.glTFTextureTypes type) [0x0000d] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\TextureIO\TextureExporter.cs:26 at UniGLTF.TextureExporter.ExportMetallicSmoothnessOcclusion (UnityEngine.Texture metallicSmoothTexture, System.Single smoothness, UnityEngine.Texture occlusionTexture) [0x00042] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\TextureIO\TextureExporter.cs:167 at UniGLTF.MaterialExporter.Export_OcclusionMetallicRoughness (UnityEngine.Material m, UniGLTF.TextureExporter textureManager, UniGLTF.glTFMaterial material) [0x000a2] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\MaterialIO\MaterialExporter.cs:91 at UniGLTF.MaterialExporter.ExportMaterial (UnityEngine.Material m, UniGLTF.TextureExporter textureManager) [0x00030] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\MaterialIO\MaterialExporter.cs:32 at UniGLTF.gltfExporter+<>cDisplayClass32_0.b__2 (UnityEngine.Material x) [0x00000] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\gltfExporter.cs:191 at System.Linq.Enumerable+SelectListIterator2[TSource,TResult].ToList () [0x0002a] in <fbb5ed17eb6e46c680000f8910ebb50c>:0 at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable1[T] source) [0x0001f] in :0 at UniGLTF.gltfExporter.Export (UniGLTF.MeshExportSettings meshExportSettings) [0x000c3] in C:\Users\YFdj\Lapis_vrm01\Assets\UniGLTF\Runtime\UniGLTF\IO\gltfExporter.cs:191 at VRM.VRMEditorExporter.Export (System.String path, UnityEngine.GameObject exportRoot, VRM.VRMMetaObject meta, VRM.VRMExportSettings settings, System.Collections.Generic.IReadOnlyList1[T] info, System.Collections.Generic.List1[T] destroy) [0x0028c] in C:\Users\YFdj\Lapis_vrm01\Assets\VRM\Editor\Format\VRMEditorExporter.cs:227 at VRM.VRMEditorExporter.Export (System.String path, UnityEngine.GameObject exportRoot, VRM.VRMMetaObject meta, VRM.VRMExportSettings settings, System.Collections.Generic.IReadOnlyList1[T] info) [0x00008] in C:\Users\YFdj\Lapis_vrm01\Assets\VRM\Editor\Format\VRMEditorExporter.cs:24 at Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.VRChatToVRMConverter.Convert (System.String outputPath, UnityEngine.GameObject instance, VRM.VRMMetaObject meta, System.Collections.Generic.IDictionary2[TKey,TValue] presetVRChatBindingPairs, Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.DynamicBoneReplacer+ParametersConverter swayingParametersConverter) [0x001e2] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\VRChatToVRM\VRChatToVRMConverter.cs:163 at Esperecyan.Unity.VRMConverterForVRChat.UI.VRChatToVRMWizard.OnWizardCreate () [0x001c4] in C:\Users\YFdj\Lapis_vrm01\Assets\VRMConverterForVRChat\Editor\UI\VRChatToVRMWizard.cs:247 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in :0

otoneco commented 3 years ago

念のためキャラ名や著者等英語で統一しましたが、まだダメなようです。

otoneco commented 3 years ago

Sunaoshaderを使っているものがエラーを吐かれる傾向があるようです。

esperecyan commented 3 years ago

ご報告有り難うございます。 こちらはUniVRM-0.66.0へダウングレードした場合でも発生するでしょうか? https://github.com/vrm-c/UniVRM/releases/tag/v0.66.0

otoneco commented 3 years ago

そもそもダウングレードができません それをやるとVRM0が二度と表示されなくなります

otoneco commented 3 years ago

univrm同梱バージョンを変更or同梱なしをアップロードしていただけますでしょうか

esperecyan commented 3 years ago

最新安定版がUniVRM-0.79.0となったため、つい先日対応のための本拡張もv27.0.0へ更新しました。「Assets/UniGLTF」「Assets/VRM」「Assets/VRMShaders」を削除した上で、こちらをインポートしてお試しください。

otoneco commented 3 years ago

試してみましたが、やはりダメです (前回のはモデル元の制作者様に直接変換していただいたため、他のモデルで試しました)

Unity Editor: 2018.4.20f1 VRChat SDK: 2021.06.03.14.57 VRM Converter for VRChat: 27.0.0 UniVRM: 0.79.0

System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary2[TKey,TValue].get_Item (TKey key) [0x0001e] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at VRM.VRMBoneNormalizer+<>c__DisplayClass2_0.<CopyVRMComponents>b__1 (UnityEngine.Transform x) [0x00000] in C:\Users\YFdj\Lion_vrm01\Assets\VRM\Runtime\SkinnedMeshUtility\VRMBoneNormalizer.cs:179 at System.Linq.Enumerable+SelectListIterator2[TSource,TResult].ToList () [0x0002a] in :0 at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable1[T] source) [0x0001f] in <fbb5ed17eb6e46c680000f8910ebb50c>:0 at VRM.VRMBoneNormalizer.CopyVRMComponents (UnityEngine.GameObject go, UnityEngine.GameObject root, System.Collections.Generic.Dictionary2[TKey,TValue] map) [0x001f5] in C:\Users\YFdj\Lion_vrm01\Assets\VRM\Runtime\SkinnedMeshUtility\VRMBoneNormalizer.cs:179 at VRM.VRMBoneNormalizer.Execute (UnityEngine.GameObject go, System.Boolean forceTPose) [0x00085] in C:\Users\YFdj\Lion_vrm01\Assets\VRM\Runtime\SkinnedMeshUtility\VRMBoneNormalizer.cs:109 at Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.VRChatToVRMConverter.Convert (System.String outputPath, UnityEngine.GameObject instance, VRM.VRMMetaObject meta, System.Collections.Generic.IDictionary2[TKey,TValue] presetVRChatBindingPairs, Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.DynamicBoneReplacer+ParametersConverter swayingParametersConverter) [0x001e6] in C:\Users\YFdj\Lion_vrm01\Assets\VRMConverterForVRChat\Editor\VRChatToVRM\VRChatToVRMConverter.cs:161 at Esperecyan.Unity.VRMConverterForVRChat.UI.VRChatToVRMWizard.OnWizardCreate () [0x001c4] in C:\Users\YFdj\Lion_vrm01\Assets\VRMConverterForVRChat\Editor\UI\VRChatToVRMWizard.cs:247 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Collections.Generic.Dictionary2[TKey,TValue].get_Item (TKey key) [0x0001e] in :0 at VRM.VRMBoneNormalizer+<>c__DisplayClass2_0.b__1 (UnityEngine.Transform x) [0x00000] in C:\Users\YFdj\Lion_vrm01\Assets\VRM\Runtime\SkinnedMeshUtility\VRMBoneNormalizer.cs:179 at System.Linq.Enumerable+SelectListIterator2[TSource,TResult].ToList () [0x0002a] in <fbb5ed17eb6e46c680000f8910ebb50c>:0 at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable1[T] source) [0x0001f] in :0 at VRM.VRMBoneNormalizer.CopyVRMComponents (UnityEngine.GameObject go, UnityEngine.GameObject root, System.Collections.Generic.Dictionary2[TKey,TValue] map) [0x001f5] in C:\Users\YFdj\Lion_vrm01\Assets\VRM\Runtime\SkinnedMeshUtility\VRMBoneNormalizer.cs:179 at VRM.VRMBoneNormalizer.Execute (UnityEngine.GameObject go, System.Boolean forceTPose) [0x00085] in C:\Users\YFdj\Lion_vrm01\Assets\VRM\Runtime\SkinnedMeshUtility\VRMBoneNormalizer.cs:109 at Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.VRChatToVRMConverter.Convert (System.String outputPath, UnityEngine.GameObject instance, VRM.VRMMetaObject meta, System.Collections.Generic.IDictionary2[TKey,TValue] presetVRChatBindingPairs, Esperecyan.Unity.VRMConverterForVRChat.VRChatToVRM.DynamicBoneReplacer+ParametersConverter swayingParametersConverter) [0x001e6] in C:\Users\YFdj\Lion_vrm01\Assets\VRMConverterForVRChat\Editor\VRChatToVRM\VRChatToVRMConverter.cs:161 at Esperecyan.Unity.VRMConverterForVRChat.UI.VRChatToVRMWizard.OnWizardCreate () [0x001c4] in C:\Users\YFdj\Lion_vrm01\Assets\VRMConverterForVRChat\Editor\UI\VRChatToVRMWizard.cs:247 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in :0

esperecyan commented 3 years ago

こちらはUniVRMのメニューからVRM化しようとした場合にも発生しますか?

上部メニュー → VRM0 → Export UniVRM-0.79.0

otoneco commented 3 years ago

いいえ、発生しませんでした。

もちろん表情やスプリングボーンはありません。 でも私はこれらを再設定する術を知りません。 テクスチャとか、ダイナミックボーンの変換とか、表情の登録方法とか、何一つ分かりません。 あなたのツールが必要です。

esperecyan commented 3 years ago

確認ありがとうございます。

エラーをこちらで再現できるunitypackage等を用意してもらうことなどはできますでしょうか?

otoneco commented 3 years ago

ごめんなさい。 再配布がNGなので厳しいです。

otoneco commented 3 years ago

https://booth.pm/ja/items/2615925 こちらで試しました 価格が高いので参考までにお願いします

https://booth.pm/ja/items/2361882 こちらでも試しましたが同じくダメでした

esperecyan commented 3 years ago

原因が分かりました。 アバタールート外を参照する不正なDynamicBoneが存在すると、上記と同様の例外が発生し、エクスポートに失敗するようです。

対策を行ったv27.1.0を公開しました。 https://pokemori.booth.pm/items/1025226

ご報告有り難うございました。