Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
140 stars 2 forks source link

RenderTransformOverride doesn't function with a null entry in its list of SkinnedMeshRenderers #2474

Open Eisrache opened 4 months ago

Eisrache commented 4 months ago

Describe the bug?

RenderTransformOverride, RenderMaterialOverride and AvatarRenderSettings applied to a worn object, are not being modified when in my User View. Additionally this also effects the default head & hands avatar, so the spheres eyes are obstructing my view.

The log is filled with sections much like this sometimes multiple times a second.

at System.Environment.get_StackTrace () [0x00000] in <9577ac7a62ef43179789031239ba8798>:0 at Elements.Core.UniLog.Error (System.String message, System.Boolean stackTrace) [0x00000] in <656d4848ed094a0a898414dfe7e1a464>:0 at UnityFrooxEngineRunner.CameraRenderEx.OnPostRender () [0x00000] in <d7e4d83c1bd44049a50f392b7ead4fc6>:0 7:30:48 PM.979 ( 44 FPS) Exception in Camera OnPreCull System.NullReferenceException: Object reference not set to an instance of an object at UnityFrooxEngineRunner.RenderTransformOverrideConnector.Override () [0x00022] in <d7e4d83c1bd44049a50f392b7ead4fc6>:0 at UnityFrooxEngineRunner.RenderContextOverride1[D].RunOverride () [0x0001a] in :0 at UnityFrooxEngineRunner.RenderContextOverride`1[D].HandleRenderingContextSwitch (UnityFrooxEngineRunner.RenderingContextStage stage) [0x00003] in :0 at UnityFrooxEngineRunner.RenderHelper.BeginRenderContext (FrooxEngine.RenderingContext context) [0x000a3] in :0 at UnityFrooxEngineRunner.CameraRenderEx.OnPostRender () [0x00078] in :0

To Reproduce

Placing one of these components into the object, and setting to 'Scale', repeatedly gives the above issue.

Expected behavior

For the object to be scaled when in view, with RenderTransformOverride attached to it.

Screenshots

image

View from desktop mode in the default ball avatar. The same issue happens in personal avatars with the component in hair, glasses, etc.

Resonite Version Number

2024.7.4.1347

What Platforms does this occur on?

Windows

What headset if any do you use?

HTC Vive Cosmos Elite, Desktop

Log Files

JORMAG - 2024.7.4.1347 - 2024-07-05 19_29_53.log

Additional Context

I just logged on one morning and started having this issue. I don't recall doing anything out of the ordinary before logging off the night before that would have started this. I've tried a number of potential fixes, but nothing has worked so far

I've tried: Changing Avatar Replacing the Component With A New One Trying RenderMaterialOverride (Had the Same Issue) Restarting Verifying Files Through Steam Uninstalling, Purging All Files and Reinstalling Restarting PC Resetting the Dashboard Clearing the Resonite Cache

Reporters

Me: @Eisrache And @VivKitty For helping me format this report properly and trying potential fixes

shiftyscales commented 4 months ago

Can you please provide a .ResonitePackage, or link to the content (stored in a public folder or world) so I could look and see how the object is configured, @Eisrache?

In looking into this with the default headset- it appears that the component works correctly after the user's render context changes. E.g. if I change the value, go from first person to third, then back to first, it will set it as expected.

https://github.com/Yellow-Dog-Man/Resonite-Issues/assets/54213390/1d6a1a6e-532c-4e94-8397-b918ceb48000

Eisrache commented 4 months ago

Can you please provide a .ResonitePackage, or link to the content (stored in a public folder or world) so I could look and see how the object is configured, @Eisrache?

In looking into this with the default headset- it appears that the component works correctly after the user's render context changes. E.g. if I change the value, go from first person to third, then back to first, it will set it as expected. 2024-07-05.11-06-20.mp4

It's a private avatar, but I can give you the glasses I use that have the exact issue with. I see them obstructing my view the most (alongside my hair on the avatar) and use them on multiple avatars but I'm still able to see them despite the component being there. resrec:///U-Eisrache/R-DF8A715051390D7ABF09778666F4BFFCABB7CAD227A530F8770486B0ACC02520

I tried a completely new avatar and applied the rendertransformoverride to the right hand and it seems to have fixed the issue temporarily (right hand is hidden) when I equip it as well as stay fixed when I switch back to my personal avatar.

However the issue comes back when I open my Dashboard. I have tried this multiple times and it always comes back when I open my Dashboard.

I also put the dummy avatar in the folder with the RenderTransformOverride component on the right hand bone. The issue still persists with the dummy avatar as well.

Eisrache commented 4 months ago

Are there any updates on the issue? I have been trying more things to find out why this is happening

I resulted to making a new alt account to see if it's exclusive to my account. I used the objects in the shared folder I linked in my last post to see if I had the same issue and everything seems to be working as intended (glasses vanish when held, avatar's right hand also disappears as well (component is on right hand bone)), as if I never had the issue in the first place. However as soon as I log out and log back into my main account, I have the issue again, the component stops working on both the items I linked in the shared folder (as well as all of my avatars)

It seems like an issue with my account somehow?

shiftyscales commented 4 months ago

Are there any updates on the issue?

I do not work in the evenings, or on weekends. I had sent my initial reply Friday morning, and your initial response back was Friday evening after my work cutoff. Likewise, it is now Monday morning, so this is the earliest I could have possibly gotten to your issue while respecting my health and work/life boundaries. Please be patient. I realize this issue is important to you. Thank you for looking into it further and finding additional details.


It's interesting that the issue appears to be specific to your account, @Eisrache - for the next step, I would recommend you to try and isolate what customizations you may have made (e.g. cloud home, favourited avatar / interfaces, and dash customization) and see if you can isolate the issue to being related to any of those things in particular.

To test against your avatar, you can unfavourite it, and load the replication object you provided to see if it can be reproduced in isolation.

You can check the cloud home by using the setting to prevent your cloud home from opening on launch.

You can lastly check your dash (which seems a likely candidate given that you noted a correlation with opening the dash and the issue occurring) by using the -ResetDash command line argument.

If resetting the dash resolves the issue, it seems likely it was one of your custom facets (if applicable) that was causing the issue. I'd suggest if possible you further isolate what in specific causes the issue to occur by stripping out / eliminating as many variables as possible from your replication conditions.

Eisrache commented 4 months ago

Are there any updates on the issue?

I do not work in the evenings, or on weekends. I had sent my initial reply Friday morning, and your initial response back was Friday evening after my work cutoff. Likewise, it is now Monday morning, so this is the earliest I could have possibly gotten to your issue while respecting my health and work/life boundaries. Please be patient. I realize this issue is important to you. Thank you for looking into it further and finding additional details.

It's interesting that the issue appears to be specific to your account, @Eisrache - for the next step, I would recommend you to try and isolate what customizations you may have made (e.g. cloud home, favourited avatar / interfaces, and dash customization) and see if you can isolate the issue to being related to any of those things in particular.

To test against your avatar, you can unfavourite it, and load the replication object you provided to see if it can be reproduced in isolation.

You can check the cloud home by using the setting to prevent your cloud home from opening on launch.

You can lastly check your dash (which seems a likely candidate given that you noted a correlation with opening the dash and the issue occurring) by using the -ResetDash command line argument.

If resetting the dash resolves the issue, it seems likely it was one of your custom facets (if applicable) that was causing the issue. I'd suggest if possible you further isolate what in specific causes the issue to occur by stripping out / eliminating as many variables as possible from your replication conditions.

My sincerest apologies. I hadn't realized that you didn't work on evenings and weekends, as well as this issue has had me a little frustrated with the bug and the other side effects of it. Again, I'm sorry if I came across as too demanding

Alas, I have tried a number of the suggested fixes such as the dash reset, as well as opening a new grid world with no avatar favourited and spawning in with the ball avatar and trying the dummy avatar. Even with all of these, the issue still seems to persist.

However after hours of testing and relogging with different default homes and avatars. I think I may have figured out the issue. There were some leftover RenderTransformOverride components with a spare unassigned slot in the hair bones (likely from removing one of the meshes that were assigned to the bone with the component on it) of my avatar and removing them -seems- to have fixed the issue. The bug persisted as long as the avatar is being worn by me in at least one open world (focused or unfocused) which may have messed with my testing, adding to the confusion.

I've managed to replicate the issue and save the dummy avatar to the shared folder for you to look at. For you to pretty much see what I've been seeing, you need to wear the dummy avatar in one world and open another world and spawn in with the default ball avatar (or any avatar that would normally have hair in your face without the RTO component). In desktop you should be fine, but if you do it in VR, the glow and flickering from the avatar eyes may hurt your eyes.

I probably shouldn't have spent all day on this, but I managed to find it at least, I'm still a little confused about how it seemingly appeared out of nowhere one morning as I have had multiple saves of my avatar with the same issue with the RTO component having a spare blank slot. Thank you for your help and suggestions, feel free to let me know if the avatar I set up with the component does not replicate the issue.

shiftyscales commented 4 months ago

Thanks for digging even further into this @Eisrache - I'm glad you got it figured out.

So to summarize- the issue only presents itself when there is a null entry in the list of SkinnedMeshRenderers on the RenderTransformOverride component which prevents the component from applying the transform override as expected.

If the null entry in the RenderTransformOverride is removed, the component resumes working as expected.

Seeking input from @Frooxius, @ProbablePrime, or @Geenz - the component in this case is misconfigured, but is misconfigured because the user had deleted a mesh that was previously in the list of SkinnedMeshRenderers, causing a null entry in the list- which would be a fairly common scenario to happen over time as a user continually modifies their avatar with use.

Is there anything that can be done here? Other components like the AvatarUserReferenceAssigner continue to work as expected with null entries in their list which are created under the same conditions, e.g. deleting a mesh slot off of an avatar / deleting the referenced component in the list.

ProbablePrime commented 3 months ago

I'll handle this probably when im working on #554 because they operate in the same area(rendering).