Jump to content

Finite Element Method - Tets Catching on Geometry


Recommended Posts

I'm trying to simulate some relatively complex interactions between a squidgy, soft-body tentacle kind of asset and some arbitrary, sort-of-complex geometry. FEM seems like the best way to go about this - I've tried cloth simulation, but but there's little else that easily gives me the really nice volume-preserving properties I get out of the soft-body solver. Overall though I'm still kind of a noob at this, so I'd appreciate completely different suggestions on how to do this :)

My main problem is that no matter what I do, I seem to very easily get tets being stuck on concave geometry. I'm attaching a scene that I've been using as a technical test to try and resolve the issue - it's pretty representative of the issues I get on more complicated scenes, but with faster iteration times.


The objective is to get this sea cucumber to pass through a narrow, concave space in an organic, slippery, squishy way.

Mostly it behaves correctly, but the problem is that eventually:


Some of the tets will get weirdly stuck on the geometry :(

The unfortunate thing is that increasing substeps and collision passes only seems to make this worse - with more collision passes, more tets seem to get stuck, and it becomes harder for them to get unstuck!

I don't have any friction on either object, and ideally I'd want them to pass through each other really smoothly. Is there a good way of achieving that? Or anything substantially different I could be doing, to get the same effect?

Would love any advice people might have! :D

The scene itself: PenetrationTest_FEM.hip

Link to comment
Share on other sites

Thanks! I mean, that's my starting point :)

It's good advice - I'm using fairly similar settings, but the main thing I'm doing differently is I'm using a target deformation to drive the animation, and that seems like it's the main reason for the sticky tets.

The target deformation, in order to push the mesh up through the opening, has to be strong enough to overcome the stiffness of the solid, but that means when the tets press up against a barrier, the force is stronger than the elasticity pulling them to the side and ends up pinning them to the surface, which I guess is part of what makes them stick and, eventually, clip through the collision volume.

That does make things a little awkward though. I can get it to, for example, pass down through the opening under its own gravity, but what's the best way to drive the animation in this case? If I increase the target deformation strength, it ends up sticking to the collision, but if I lower the target deformation strength, its left without a strong enough force to get through the opening at all.

Link to comment
Share on other sites

I can, for example, constraint a 'backbone' of points throughout the centre of the object, and that mostly eliminates the catching of tets around the edges, but still doesn't seem to be quite ideal.


The rest of the mesh droops off quite noticeably from this central line - I could increase stiffness of course, but that would change the overall material response, too. I've tried adding a lower-strength constraint to the rest of the point, but even a very subtle one does lead to artefacting. And of course, even the 'backbone' of constrained points causes visual issues if it ever passes through collision that it doesn't have a path around will get stuck a little bit.

Is there a better way to drive deformation from animation? The FEM constraint seems like a coarse solution.

Link to comment
Share on other sites


you can use a grain solver instead of the FEM solver.

i'm attaching an .Hip file to show you and a video test.

if you don't know how grain solver works in the hip, you can watch this video from sidefx (minute 43): to summerize, you define a "backbone" group of points in your sop + you create a popwrangle in your dop to animate your "backbone".


have a good weekend


PenetrationTest_Grain (1).hiplc


Link to comment
Share on other sites

Thank you very much yglemarec, that's pretty comprehensive - sorry it's taken a while to reply, I've been playing around with the grain solver all week and trying to get a handle on it :)

The sea cucumber test scene works really well for me with both approaches at this point, but I wonder if I'm doing something fundamentally wrong with the way I'm setting up collision. Ultimately both with tets and with the grain solver, I seem to end up with the same fundamental problem - some grains or tets keep getting stuck on the wrong side of the collision geometry:


In this case, you can see a few grains on the left of the image, but also a whole bunch on the right that are also apparently stuck on the interior of the collision mesh.

Some likely get pinned by the forces acting on them, but the majority genuinely do just seem to clip through with very little provocation. Is there any good way of avoiding this behaviour?

Many thanks again for the help!

Link to comment
Share on other sites


i have experienced something by testing the cucumber in an "extreme" environment. it's seems to reduce most of my issues . maybe be the new .hip could help you for your project :

i put a sopsolver in the dop , to modify the velocity of the particules who are too far from the  others. it's like an impulse force to help them to find their way


note : particules from skeleton group go outside but it's not really problem after the pointdeform sop




Edited by yglemarec
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...