Code: Select all
psb->generateClusters(0);http://www.youtube.com/watch?v=SOI45ieMsHk
Then I tried to use
Code: Select all
psb->generateClusters(1024);http://www.youtube.com/watch?v=JXVjMPhYaFk
Here is my code:
Code: Select all
// adding cloth
{
size_t num_verts = 0;
size_t num_faces = 0;
float *vertexes = NULL;
int *faces = NULL;
readObjDataDigest("D:\\top2.obj", num_verts, num_faces, faces, vertexes);
btSoftBody* psb=btSoftBodyHelpers::CreateFromTriMesh(
pdemo->m_softBodyWorldInfo,(btScalar*)vertexes,faces,num_faces);
btSoftBody::Material* pm=psb->appendMaterial();
pm->m_kLST = 0.4;
pm->m_flags -= btSoftBody::fMaterial::DebugDraw;
psb->m_cfg.kDF = 1;
psb->m_cfg.kSRHR_CL = 1;
psb->m_cfg.kSR_SPLT_CL = 0;
psb->m_cfg.collisions = btSoftBody::fCollision::CL_SS+
btSoftBody::fCollision::CL_RS;
psb->generateBendingConstraints(2,pm);
psb->getCollisionShape()->setMargin(0.05);
psb->setTotalMass(0.5);
///pass zero in generateClusters to create cluster for each tetrahedron or triangle
psb->generateClusters(1024);
//psb->generateClusters(64);
pdemo->getSoftDynamicsWorld()->addSoftBody(psb);
}
// adding cylinder here
{
btCompoundShape* cylinderCompound = new btCompoundShape;
btCollisionShape* cylinderShape = new btCylinderShape (btVector3(0.5,10,CUBE_HALF_EXTENTS));
btTransform localTransform;
localTransform.setIdentity();
//localTransform.setOrigin(btVector3(0,-10,0));
cylinderCompound->addChildShape(localTransform,cylinderShape);
btQuaternion orn(btVector3(0,1,0),SIMD_PI);
localTransform.setRotation(orn);
cylinderCompound->addChildShape(localTransform,cylinderShape);
//m_dynamicsWorld->addRigidBody(cylinderCompound);
btTransform startTransform;
startTransform.setIdentity();
startTransform.setOrigin(btVector3(0,7.5,0));
btQuaternion rotation;
rotation.setRotation(btVector3(0,0,1), 1.57);
startTransform.setRotation(rotation);
btRigidBody *m_manBody = pdemo->localCreateRigidBody(0, startTransform, cylinderCompound);
}