Jump to content

How would you make a cloth collide with a changing topology VDB


anbt

Recommended Posts

Hello guys,

So I have been trying to make a cloth collide with an animation sequence that is changing topology.
I started with vellum and I hit a wall. Apparently, Vellum doesn't handle collisions with changing topology stuff.
So I need to find a solution around this. My animation sequence is converted into a VDB and what else beside vellum can I use to handle the cloth?

Any other ideas?

Tx

Link to comment
Share on other sites

It is possible to use a VDB as a vellum collision object. You must setup your sim in a dop network, then add a static object collider with the collision type set to volume. Add the SDF VDB to the proxy volume slot, and set the mode to volume sample.

While this does work, its not as accurate as using a geo collision object, and will have issues with fast moving colliders as there is no velocity data from the VDB.

 

See attached for a simple example

 

vellum_x_vdb.hip

Link to comment
Share on other sites

@KarlRichter Thanks. This is what I was kind of doing before but after clearing the SOP Path parameter on the static object, and just using the proxy VDB like you are saying, it started to work better but I still have some issues.
My VDB is a humanoid shape. The arms (not that thin as there are no fingers, it's more like a tube) are passing through my cloth.

Someone on the SideFX forum said:
"Keep in mind that vellum collides only with points against volumes so you may need to make your cloth denser to avoid thin volumes like hands passing through"  
---> not sure how to do this, I subdivided my cloth, no success and I tried to thicken the cloth before feeding through the vellum cloth but that doesn't change anything

"You can further improve your solve by sticking constant topology inside of your volume to resolve fast motion collisions, the volume collisions will take it from there and push points out of the volume, otherwise you may miss fast movements as with volumes you will not get continuous tracking"
---> no idea how to do this for now
 

Edited by anbt
Link to comment
Share on other sites

Yeah, that's tough. Other things you might try are to increase the sub steps in the vellum solver and and then turn on "re-evaluate sops to interpolate geometry" in the static solver. If this is a VDB sequence, you might try using the time warp sop to interpolate the VDB on the subframes. Also make sure that the VDB is fully active on the "inside". You also might try making your VDB a little bigger with the VDB reshape.

In the end, vellum just doesn't collide with a volume that well! 

In that past, i have even tried making my own collision "solver" to resolve this issue. I got t to work mostly, but it was super slow.

 

  • Like 1
Link to comment
Share on other sites

Thanks for the tips @KarlRichter I managed to make it work by thickening the cloth before feeding it in the vellum cloth, and increasing substeps but it looks stiff and I am loosing a lot of wrinkles now. 
Turning on "reevaluate sops..." makes the arm go through and without, it works. Maybe I have some other parameter that is conflicting with this!

Yes, it is a VDB sequence. Not sure to understand what you mean with the timewarp sop. Should I just put this node before sending my VDB to the DOP network? (and turn on 'interpolate between input frames')?

Yes with the VDB bigger it works a lot better. My issue is really with those arms that go through the cloth, and those arms are quite rounded with no hands.

Link to comment
Share on other sites

Yeah, with the time warp node set it to interpolate between frames, and in the volume tab, set the blend mode to "by voxel position". then turn off "integer frame values" and scrub the time line to make sure the VDB is interpolating ok. Use that as the input so the "re-evaluate" thing in the static solver works properly. If the VDB changes too much between frames, this might not work, but you can give it a try! 

Also, really make sure the vdb is activated on the inside, that might help with the arms. Use the "vdb activate sdf" and set the halfwidth to 10 or whatever fills inside. Use the "vdbvisualizetree" to make sure.

Edited by KarlRichter
Link to comment
Share on other sites

Ok, thank you very much. So before trying this, I had increased the offset surface of my static object (the VDB) to 0.006, substeps to 7 and constraint iterations to 10 and it works now, even with the cloth not being thickened beforehand.
I tried with the VDB settings you said, reducing the offset surface back to 0, it didn't work :( 
So in the end, I made it, but things are reeeeaaallly slooowwwww!
Cheers :)

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.

Guest
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...