Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
195 stars 9 forks source link

A world that always stops working after the BEPU2 update #2855

Closed orange3134 closed 3 years ago

orange3134 commented 3 years ago

Describe the bug?

Since today's update (2021.8.25.1127), I've found a world that will definitely stops working.

Relevant issues

No

To Reproduce

1.Open this world. http://cloudx.azurewebsites.net/open/world/G-Shared-Project-rheni/R-442588c1-ab6d-40d0-ac3c-d35fc060ebe0 2.NeosVR stops working.

Expected behavior

It should not stop working.

Log Files

SHIRUKO2 - 2021.8.25.1127 - 2021-08-26 07_17_40.log

Screenshots

No response

How often does it happen?

Always

Does the bug persist after restarting Neos?

Yes

Neos Version Number

2021.8.25.1127

What Platforms does this occur on?

Windows

Link to Reproduction Item/World

http://cloudx.azurewebsites.net/open/world/G-Shared-Project-rheni/R-442588c1-ab6d-40d0-ac3c-d35fc060ebe0

Did this work before?

Yes

If it worked before, on which build?

2021.8.18.1077

Additional context

No response

Reporters

orange

kazu0617 commented 3 years ago

I stopped to check it myself, and also found a string in the log that might be helpful, so I'm attaching it.

7:57:15.669 ( 22 FPS)   Exception in background job:
System.InvalidOperationException: The change in tree cost is an invalid value, strongly implying the tree bounds have been corrupted by infinites or NaNs. If this happened in the broad phase's use of the tree, it's likely that there are invalid poses or velocities in the simulation, possibly as a result of bugged input state or constraint configuration. Try running the library with debug asserts enabled to narrow down where the NaNsplosion started.
  at BepuPhysics.Trees.Tree.GetRefineTuning (System.Int32 frameIndex, System.Int32 refinementCandidatesCount, System.Single refineAggressivenessScale, System.Single costChange, System.Int32& targetRefinementCount, System.Int32& refinementPeriod, System.Int32& refinementOffset) [0x00012] in <8df8b1a92a074a5495f540ab6a746e3a>:0 
  at BepuPhysics.Trees.Tree.RefitAndRefine (BepuUtilities.Memory.BufferPool pool, System.Int32 frameIndex, System.Single refineAggressivenessScale, System.Single cacheOptimizeAggressivenessScale) [0x0002b] in <8df8b1a92a074a5495f540ab6a746e3a>:0 
  at FrooxEngine.PhysicsSimulation.Refine () [0x00016] in <c9f54f107e8c4340be00772eaba1113b>:0 
  at BaseX.WorkProcessor.ProcessQueue (BaseX.WorkProcessor+ThreadWorker worker, System.Collections.Concurrent.ConcurrentQueue`1[T] queue) [0x00009] in <4ab0f7be62a34369be2c4b33204d7616>:0 

HINATA-WIN - 2021.8.25.1127 - 2021-08-26 07_56_37.log

shiftyscales commented 3 years ago

This is currently being investigated by Frooxius- he identified it as being caused by a procedural mesh.

Edit:

I found the cause. There's a QuadMesh with size of 1e38, which is at floating point limit, so it results in NaN's and infinities. Going to put a limit on the sizes of meshes going into the physics system.

Frooxius commented 3 years ago

Added a fix in 2021.8.26.1129, the world should now work properly! This includes any others that might've been affected by any other issue. Thank you for the report!