lilxyzw / lilycalInventory

Modify avatar at build time.
MIT License
21 stars 3 forks source link

マテリアルのプロパティ操作を設定するとビルドに失敗する場合がある #25

Closed synqark closed 4 months ago

synqark commented 4 months ago

Unity: 2022.3.6f1 LI: 0.3.4


以下のLL SmoothChangerを定義し、 image

ビルドしたところ失敗となり、以下のスタックトレースがログとして出力されました。

System.NullReferenceException: Object reference not set to an instance of an object
  at jp.lilxyzw.lilycalinventory.AnimationHelper.ToClipDefault (jp.lilxyzw.lilycalinventory.runtime.MaterialPropertyModifier modifier, jp.lilxyzw.lilycalinventory.InternalClip clip) [0x00159] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Helper\AnimationHelper.ParametersPerMenu.cs:155 
  at jp.lilxyzw.lilycalinventory.AnimationHelper.CreateClip (jp.lilxyzw.lilycalinventory.runtime.ParametersPerMenu parameter, UnityEngine.GameObject gameObject, System.String name) [0x00245] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Helper\AnimationHelper.ParametersPerMenu.cs:68 
  at jp.lilxyzw.lilycalinventory.AnimationHelper.CreateClip (jp.lilxyzw.lilycalinventory.runtime.ParametersPerMenu parameter, nadena.dev.ndmf.BuildContext ctx, System.String name) [0x00001] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Helper\AnimationHelper.ParametersPerMenu.cs:76 
  at jp.lilxyzw.lilycalinventory.Modifier.ApplySmoothChanger (nadena.dev.ndmf.BuildContext ctx, UnityEditor.Animations.AnimatorController controller, System.Boolean hasWriteDefaultsState, jp.lilxyzw.lilycalinventory.runtime.SmoothChanger[] changers, UnityEditor.Animations.BlendTree root, VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionParameters parameters) [0x00078] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Processor\Modifier.SmoothChanger.cs:37 
  at jp.lilxyzw.lilycalinventory.Processor.ModifyPreProcess (nadena.dev.ndmf.BuildContext ctx) [0x001bd] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Processor\Processor.cs:97 
  at jp.lilxyzw.lilycalinventory.LilycalInventoryPlugin+<>c.<Configure>b__4_2 (nadena.dev.ndmf.BuildContext ctx) [0x00000] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\NDMF\LilycalInventoryPlugin.cs:22 
  at nadena.dev.ndmf.AnonymousPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:42 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:337 
  at jp.lilxyzw.lilycalinventory.AnimationHelper.ToClipDefault (jp.lilxyzw.lilycalinventory.runtime.MaterialPropertyModifier modifier, jp.lilxyzw.lilycalinventory.InternalClip clip) [0x00159] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Helper\AnimationHelper.ParametersPerMenu.cs:155 
  at jp.lilxyzw.lilycalinventory.AnimationHelper.CreateClip (jp.lilxyzw.lilycalinventory.runtime.ParametersPerMenu parameter, UnityEngine.GameObject gameObject, System.String name) [0x00245] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Helper\AnimationHelper.ParametersPerMenu.cs:68 
  at jp.lilxyzw.lilycalinventory.AnimationHelper.CreateClip (jp.lilxyzw.lilycalinventory.runtime.ParametersPerMenu parameter, nadena.dev.ndmf.BuildContext ctx, System.String name) [0x00001] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Helper\AnimationHelper.ParametersPerMenu.cs:76 
  at jp.lilxyzw.lilycalinventory.Modifier.ApplySmoothChanger (nadena.dev.ndmf.BuildContext ctx, UnityEditor.Animations.AnimatorController controller, System.Boolean hasWriteDefaultsState, jp.lilxyzw.lilycalinventory.runtime.SmoothChanger[] changers, UnityEditor.Animations.BlendTree root, VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionParameters parameters) [0x00078] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Processor\Modifier.SmoothChanger.cs:37 
  at jp.lilxyzw.lilycalinventory.Processor.ModifyPreProcess (nadena.dev.ndmf.BuildContext ctx) [0x001bd] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\Processor\Processor.cs:97 
  at jp.lilxyzw.lilycalinventory.LilycalInventoryPlugin+<>c.<Configure>b__4_2 (nadena.dev.ndmf.BuildContext ctx) [0x00000] in .\Library\PackageCache\jp.lilxyzw.lilycalinventory@3d53c2b6ab\Editor\NDMF\LilycalInventoryPlugin.cs:22 
  at nadena.dev.ndmf.AnonymousPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:42 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:337 

確認できていること ・メッシュ・レンダラーに項目を追加してのビルドは成功できているのを確認できています。 ・再現しないアバターもありそうです。

lilxyzw commented 4 months ago

マテリアルスロットが空のSkinnedMeshRendererを考慮できていなかったためエラーとなっていました。nullチェックを加えてエラーが出ないように修正いたしました。