SoftBody generates Uninitialised error on valgrind
Posted: Thu Mar 16, 2017 4:18 am
Hi all,
The physics works very well. I'm just getting this error on valgrind when the rigidbody comes closer to the softbody.
The same error occours using CreatePatch instead CreatePatchUV :'(
Here is my code:
Initializing physics:
Creating the SoftBody:
Stepping:
Valgrind Error:
I'm still working on it. Based on "Cloth" Sample.
Am I forgetting something? I'm using bullet-2.81-rev2613
Thanks!
The physics works very well. I'm just getting this error on valgrind when the rigidbody comes closer to the softbody.
The same error occours using CreatePatch instead CreatePatchUV :'(
Here is my code:
Initializing physics:
Code: Select all
collisionConfiguration = new btSoftBodyRigidBodyCollisionConfiguration();
dispatcher = 0;
dispatcher = new btCollisionDispatcher(collisionConfiguration);
btVector3 worldAabbMin(-100,-100,-100);
btVector3 worldAabbMax(100,100,100);
broadPhase = new btAxisSweep3(worldAabbMin,worldAabbMax,16384); //32766);
softBodyWorldInfo.m_dispatcher = dispatcher;
softBodyWorldInfo.m_broadphase = broadPhase;
softBodyWorldInfo.m_gravity.setValue(0,-10,0);
solver = new btSequentialImpulseConstraintSolver();
dynamicsWorld = new btSoftRigidDynamicsWorld(dispatcher,broadPhase,solver,collisionConfiguration);
dynamicsWorld->getDispatchInfo().m_enableSPU = true;
softBodyWorldInfo.m_sparsesdf.Initialize();
Code: Select all
const btScalar x=8.f;
const btScalar y1=3.8f;
const btScalar y2=2.f;
const btScalar z=0.f;
netBody = btSoftBodyHelpers::CreatePatchUV(Physics::getInstance()->getSoftBodyWorldInfo(),
btVector3(-x,y1,z),
btVector3(x,y1,z),
btVector3(-x,y2,z),
btVector3(x,y2,z),
resx,
resy,
1+2+4+8+16,
false,
texCoords);
netBody->getCollisionShape()->setMargin(0.3f);
btSoftBody::Material* pm=netBody->appendMaterial();
pm->m_kLST = 1.f;
pm->m_kAST = 1.f;
pm->m_kVST = 1.f;
pm->m_flags -= btSoftBody::fMaterial::DebugDraw;
netBody->generateBendingConstraints(2,pm);
netBody->m_cfg.piterations = 10;
netBody->m_cfg.kCHR = 1;
netBody->m_cfg.kSRHR_CL = 1;
netBody->setTotalMass(1.0f);
Physics::getInstance()->addSoftBody(netBody, collisionCfg, collisionSelfNet);
Code: Select all
dynamicsWorld->stepSimulation(timeDiff);
softBodyWorldInfo.m_sparsesdf.GarbageCollect();
Code: Select all
==5681== Use of uninitialised value of size 8
==5681== at 0x49984B: btSparseSdf<3>::Evaluate(btVector3 const&, btCollisionShape const*, btVector3&, float) [clone .constprop.473]
==5681== by 0x49FC43: btSoftColliders::CollideSDF_RS::DoNode(btSoftBody::Node&) const
==5681== by 0x49D033: btDbvt::collideTV(btDbvtNode const*, btDbvtAabbMm const&, btDbvt::ICollide&) const
==5681== by 0x48B832: btSoftBody::defaultCollisionHandler(btCollisionObjectWrapper const*)
==5681== by 0x4EBE98: btCollisionDispatcher::defaultNearCallback(btBroadphasePair&, btCollisionDispatcher&, btDispatcherInfo const&)
==5681== by 0x4EC277: btCollisionPairCallback::processOverlap(btBroadphasePair&)
==5681== by 0x4E9402: btHashedOverlappingPairCache::processAllOverlappingPairs(btOverlapCallback*, btDispatcher*)
==5681== by 0x4EB88B: btCollisionDispatcher::dispatchAllCollisionPairs(btOverlappingPairCache*, btDispatcherInfo const&, btDispatcher*)
==5681== by 0x4ED10F: btCollisionWorld::performDiscreteCollisionDetection()
==5681== by 0x4BD129: btDiscreteDynamicsWorld::internalSingleStepSimulation(float)
==5681== by 0x4A8B84: btSoftRigidDynamicsWorld::internalSingleStepSimulation(float)
==5681== by 0x4BA351: btDiscreteDynamicsWorld::stepSimulation(float, int, float)
==5681== Uninitialised value was created by a stack allocation
==5681== at 0x499520: btSparseSdf<3>::Evaluate(btVector3 const&, btCollisionShape const*, btVector3&, float) [clone .constprop.473]
==5681==
==5681== Conditional jump or move depends on uninitialised value(s)
==5681== at 0x4997B0: btSparseSdf<3>::Evaluate(btVector3 const&, btCollisionShape const*, btVector3&, float) [clone .constprop.473]
==5681== by 0x49FC43: btSoftColliders::CollideSDF_RS::DoNode(btSoftBody::Node&) const
==5681== by 0x49D033: btDbvt::collideTV(btDbvtNode const*, btDbvtAabbMm const&, btDbvt::ICollide&) const
==5681== by 0x48B832: btSoftBody::defaultCollisionHandler(btCollisionObjectWrapper const*)
==5681== by 0x4EBE98: btCollisionDispatcher::defaultNearCallback(btBroadphasePair&, btCollisionDispatcher&, btDispatcherInfo const&)
==5681== by 0x4EC277: btCollisionPairCallback::processOverlap(btBroadphasePair&)
==5681== by 0x4E9402: btHashedOverlappingPairCache::processAllOverlappingPairs(btOverlapCallback*, btDispatcher*)
==5681== by 0x4EB88B: btCollisionDispatcher::dispatchAllCollisionPairs(btOverlappingPairCache*, btDispatcherInfo const&, btDispatcher*)
==5681== by 0x4ED10F: btCollisionWorld::performDiscreteCollisionDetection()
==5681== by 0x4BD129: btDiscreteDynamicsWorld::internalSingleStepSimulation(float)
==5681== by 0x4A8B84: btSoftRigidDynamicsWorld::internalSingleStepSimulation(float)
==5681== by 0x4BA351: btDiscreteDynamicsWorld::stepSimulation(float, int, float)
==5681== Uninitialised value was created by a stack allocation
==5681== at 0x499520: btSparseSdf<3>::Evaluate(btVector3 const&, btCollisionShape const*, btVector3&, float) [clone .constprop.473]
Am I forgetting something? I'm using bullet-2.81-rev2613
Thanks!