The CollisionShapes.ConvexShapes.BoxShape.GetLocalExtremePointWithoutMargin function raises the NaN error. Could please somebody advise what is a possible reason for that?
I can't see any NaNs inside BEPU entities at the moment of crush. So it is not obvious that error is because of wrong input data.
How can we avoid of NaN errors in general? For now it seems like we can get a NaN error randomly. Thus it can happen even after a thourogh testing (when product will be already delivered). Is there a way (rules) which help to avoid them with 100% probability?
Here are the error details:
- System.ArithmeticException was unhandled
Message=Function does not accept floating point Not-a-Number values.
Source=mscorlib
StackTrace:
at System.Math.Sign(Single value)
at
BEPUphysics.CollisionShapes.ConvexShapes.BoxShape.GetLocalExtremePointWithoutMargin
(Vector3& direction, Vector3& extremePoint)
at
BEPUphysics.CollisionTests.CollisionAlgorithms.MinkowskiToolbox.GetLocalMinkowskiExtremePoi
nt(ConvexShape shapeA, ConvexShape shapeB, Vector3& direction, RigidTransform&
localTransformB, Vector3& extremePoint)
at BEPUphysics.CollisionTests.CollisionAlgorithms.MPRToolbox.FindPenetrationDepth
(ConvexShape shapeA, ConvexShape shapeB, Vector3& v0, RigidTransform& localTransformB,
Vector3& normal)
at BEPUphysics.CollisionTests.CollisionAlgorithms.MPRToolbox.AreObjectsColliding
(ConvexShape shapeA, ConvexShape shapeB, RigidTransform& transformA, RigidTransform&
transformB, ContactData& contact)
at
BEPUphysics.CollisionTests.CollisionAlgorithms.TriangleConvexPairTester.DoDeepContact
(ContactData& contact)
at
BEPUphysics.CollisionTests.CollisionAlgorithms.TriangleConvexPairTester.DoExternalNear
(ContactData& contact)
at
BEPUphysics.CollisionTests.CollisionAlgorithms.TriangleConvexPairTester.DoPlaneTest
(ContactData& contact)
at
BEPUphysics.CollisionTests.CollisionAlgorithms.TriangleConvexPairTester.GenerateContactCand
idate(ContactData& contact)
at BEPUphysics.CollisionTests.Manifolds.TriangleMeshConvexContactManifold.Update
(Single dt)
at BEPUphysics.NarrowPhaseSystems.Pairs.StaticMeshConvexPairHandler.UpdateCollision
(Single dt)
at BEPUphysics.NarrowPhaseSystems.NarrowPhase.UpdateBroadPhaseOverlap(Int32 i)
at BEPUphysics.NarrowPhaseSystems.NarrowPhase.UpdateSingleThreaded()
at BEPUphysics.MultithreadedProcessingStage.Update()
at BEPUphysics.Space.DoTimeStep()
at BEPUphysics.Space.Update()
1. one mesh (just a plain square built from two triangles);
2. four dynamic cylinders (mass=100) with no any user impulses or momentums to them;
3. and four boxes (mass=1) with user impulses and momentum changes applied to them.
Any help is appreciated.