Overlapping Finite Elements

   1652   2   2
User Avatar
Member
79 posts
Joined: Feb. 2008
Offline
So I want to convert some geometry to simulate them as solid objects using the finite element solver. The problem is I have many objects and some of them are overlapping:



When I create the tetra mesh using the solidembeded node, it treats the two object as one object:



So instead I use a for each loop to create separate tetra meshes:



Then these meshes are animated and I want the solid object to follow the animation as closely as it can while colliding with it's environment. To do this, I pointdeform each tetra by it's animated geometry inside a for each loop again and I use that result as the Target Deformation in the Solid Object DOP.

That works ratter well as each tetra object are simulated like separate objects :




The problem is when the dopimport_embedded deforms the actual mesh, it stretches the parts that were overlapping:




It looks like all tetras will deform all meshes as if they were one object instead of treating them separately. Is there a way to split them up so each tetra deforms only it's associated mesh instead?



Now these are two simple meshes to illustrate the problem, but my actual scene is full of intertwined meshes. I thought of doing a pre-roll process where we make sure each object is never overlapping and they slowly settle back into the start position, but because of the nature of the geometry being intertwined (imagine a ton of electrical wires crisscrossing), it's very difficult to animate a pre-roll that would settle to the desired shape. That's why I'm hoping I can avoid this by figuring out a way to deform each mesh one by one using it's designated tetra mesh instead.

Also a side question: Assuming the above scenario can be done, is there a way to make the finite element simulation push out overlapping tetra so they find a stable state with no overlapping at the beginning of the simulation? Right now, the simulation doesn't seem to care that they are overlapping until they separate and collide again later on.

Attachments:
1 - overlapping objects.JPG (42.0 KB)
2 - merged tetra.JPG (65.9 KB)
3 - Separated_tetra.JPG (69.8 KB)
4 - simulated tetra.JPG (79.0 KB)
5 - deformed original meshes.JPG (75.8 KB)

User Avatar
Staff
429 posts
Joined: June 2007
Offline
There are a number of different options to keep the embedding separate for sub-objects.

The finite element solver recognizes an integer primitive attribute called “fracturepart”.
If you provide this atttribute on both the embedded and the simulated geometry,
then the embedding will it to match what gets embedded in what.
Just make sure that you give all primitives in one sub-object the same integer,
but keep the integers different for different sub-objects.

Another option is to provide a “baseP” position attribute on both the simulated and embedded geometry.
If the objects are properly separated in this base position, then the embedding will be kept separate as well.

I hope this helps.
User Avatar
Member
79 posts
Joined: Feb. 2008
Offline
Yes. This helps a lot. It works perfectly. Thank you.

Now I'm just wondering if there's a way to tell the simulation that if two objects are overlapping, to push each other apart?
  • Quick Links