SoftBody: modeling a rope from trimesh

Dox
Posts: 24
Joined: Thu Oct 18, 2018 5:16 pm

SoftBody: modeling a rope from trimesh

Post by Dox »

Hello,

I'm in trouble with SoftBody :D

I'm trying to modeling a rope starting from a mesh (please, see the attachment RopeMesh.h). This is a cylinder of 10m, with 32 resolution faces and 8 subdivisions on the length. Then, I'm using this code in order to build the SoftBody:

Code: Select all

static void Init_RopeMatch(SoftDemo* pdemo)
{
  btSoftBody* psb = btSoftBodyHelpers::CreateFromTriMesh(pdemo->m_softBodyWorldInfo, gVerticesRope,
														   &gIndicesRope[0][0],
														   ROPE_NUM_TRIANGLES);
  psb->m_materials[0]->m_kLST = 0.0; //Linear stiffness coefficient [0,1]
  psb->m_materials[0]->m_kAST = 0;     //Area/Angular stiffness coefficient [0,1]
  psb->m_materials[0]->m_kVST = 0;     //Volume stiffness coefficient [0,1]
  
  psb->m_cfg.kMT = 0.5;
  psb->m_cfg.piterations = 5;
  psb->randomizeConstraints();
  psb->scale(btVector3(6, 6, 6));
	
  psb->setTotalMass(1, true);
  psb->setMass(0, 0);
  psb->setMass(psb->m_nodes.size()-1, 0);
  
  psb->setPose(false, true);
  pdemo->getSoftDynamicsWorld()->addSoftBody(psb);
}


Basically, I can see the cylinder that is anchored on the first and last node, but the cylinder is pretty rigid, do not bend freely on the 8 subdivisions. It's like a "high jump pole".

Using the btSoftBodyHelpers::CreateRope the rope behavior is very good but I need to start from my mesh (the btSoftBodyHelpers::CreateRope is just a line without volume and in any case I need an integration with meshes).

Setting material stiffness coefficients to 0 doesen't help. How I can setup the SoftBody in order to make the cylinder mesh like a falling rope under gravity? Maybe I need to build a different mesh?

Basically, in a rope I don't need to make soft the "circular section" (the cylinder volume do not change) but I need to bend the subdivisions....I don't know if it's possible...

RopeMesh.h
Many thanks,

bye
You do not have the required permissions to view the files attached to this post.
steven
Posts: 83
Joined: Mon Nov 05, 2018 8:16 am
Location: China

Re: SoftBody: modeling a rope from trimesh

Post by steven »

after removing the "psb->m_cfg.kMT = 0.5;" it will become the one like below which seems that your mesh is constructed of some separate parts.
Collide1.png
You do not have the required permissions to view the files attached to this post.
Dox
Posts: 24
Joined: Thu Oct 18, 2018 5:16 pm

Re: SoftBody: modeling a rope from trimesh

Post by Dox »

Hello steven,

hummm...maybe the triangles indices array has some wrong triangle? Maybe the caps...I can try to remove them but I think that the main problem can be on other point...maybe this behavior is correct considering the first and last node are fixed in space...
Dox
Posts: 24
Joined: Thu Oct 18, 2018 5:16 pm

Re: SoftBody: modeling a rope from trimesh

Post by Dox »

... No other idea?

Many thanks, bye
steven
Posts: 83
Joined: Mon Nov 05, 2018 8:16 am
Location: China

Re: SoftBody: modeling a rope from trimesh

Post by steven »

Could you first change your mesh? i would like to work with you to find the root cause.
i also noted that the first and last note are not located at the end of this rope.
Dox
Posts: 24
Joined: Thu Oct 18, 2018 5:16 pm

Re: SoftBody: modeling a rope from trimesh

Post by Dox »

Hello steven,

thanks for your interest.

Ok, I've removed the caps from the mesh which I attach here.

I attach also the original fbx (as .txt, you can rename to .fbx, cable_block_cyl_fix_10m8sez_NoCaps_Tri.fbx) , maybe is useful. I attach the .obj converted also (by OpenSceneGraph processing).

I process the fbx mesh via OpenSceneGraph, maybe someone wrong happens here even if the behavior seems the same to me. The mesh generated seems correct...I've noted me too the last node problem...I'm a little bit confused right now...

Thanks again,

bye
You do not have the required permissions to view the files attached to this post.
steven
Posts: 83
Joined: Mon Nov 05, 2018 8:16 am
Location: China

Re: SoftBody: modeling a rope from trimesh

Post by steven »

i find that there are duplicated vertex in the array of gVerticesRope, the engine will create a node for each vertex when this array is passed to the btSoftBody(), so there will be more than one node for a same point that is not what we expect.
i think you need to re-design your gVerticesRope/gIndicesRope. good luck!