Jump to content
catchyid

Geometry fracture using VDB question

Recommended Posts

Hi,

I have a wall, my goal is to pre-fracture it to use in DOP simulation. I will have two layers of fracture: one layer to create big pieces using VDB, and another (second) layer to break some pieces even further with Voronoi fracture node (see attached)

The problem when using VDB (create VDB from polygons, intersect, then back to polygons) is that it creates smoothed surfaces which is problematic in sharp corners, e.g. the crack corners are smoothed and it's easy to spot the entire crack before it breaks. Some possible solutions:

1) increase the VDB grid resolution significantly to capture sharp edges --> not practical!

2) use the unfractured mesh and switch to the fractured mesh once I kick on DOP --> still one will see the crack

3) stretch the borders edges so they overlap and hide the crack --> doable but I am not sure how to do it easily proceduraly , e.g. select border faces and move them horizontally in opposite directions? There might be too much human intervention needed to select the right faces (ps. I am new to Houdini, so I might be mistaken :) )

So, is there a solid better way to hide those smoothed faces when using VDB nodes other than option 3 ??

One last note, I've tried using Cookie node instead of VDB but it fails, e.g. intersecting two meshes using Cookie node is not guaranteed to work and in my case it always fails.

Any feedback would be appreciated :)

 

crack_design_my_own.hiplc

wall_with_vdb.png

wall.bgeo

Share this post


Link to post
Share on other sites

You can use "convert VBD" to go back to polys, use the second input of this node connecting the original geometry. Also in the same node "conert VDB" switch on "compute vertex normals". Maybe this way you can hide your initial fracturing

Edited by mine
  • Like 1

Share this post


Link to post
Share on other sites

Thanks, this improved the result a lot :)  it's still noticable though, but the camera is far so it's not noticable. I am wondering how big companies manage such situations, do they have ppl really working on these small details (to hide such seams), or they have programmers to fix such problems ... 

Once more, thanks for your help :)

Share this post


Link to post
Share on other sites

I don't think I would use VDB at all, too much overhead. If you are just trying to use some custom drawn crack then just create a curve and animate it using a carve followed up by a polywire. Use the full version as your points for the fracture and use the animated version as the glue bond breaker.

This setup demonstrates how to import the animated curve into the glue SOP and remove bounds over time.Untitled-1.jpg

The only thing I have not really figured out is how to add velocity to newly  unbound pieces. then you could really rip through the building. As it stands, they just free themselves and start to become affected by gravity.

building_crack.gif

 

 

ap_crack_design_my_own.hiplc

Edited by Atom

Share this post


Link to post
Share on other sites

Here is another variation on this. The fracture is broken into two types, large chunks and small chunks. The small chunks all lay inside an area defined by a user drawn curve. A null moves along the curve. The position of the curve is copied, via CHOPS, to a box that moves along with the null on the path. Any fracture pieces that the box passed through will begin to fall. If the box does not touch a fracture piece, it will remain frozen, even hanging in mid air.

crumble_alt.gif

ap_vornoi_interior_crumble_pattern_vertical_1d.hipnc

  • Like 2

Share this post


Link to post
Share on other sites

Atom...I really appreciate the time you put in this. I still have to understand your pipeline, I am at the middle of a tight deadline and I am working really hard to get things done. However from the images you shared, it seems that your approach is better than mine. 

Once more, thanks, and will update you once I test your approach...

 

Share this post


Link to post
Share on other sites

Hi Atom, finally I got  a chance to look at your file carefully! Your method is better than using VDB because VDB created many polygons that made my scene very heavy even for playback (I had to increase VDB resolution to capture the wall details, specially around sharp edges...). The only thing that I still need to investigate is finding an easy way to create unbreakable bonds between big chunks (in your scene you made them inactive so they won't move), so the entire left or right wall acts as one piece. What I did previously is I created three different packed rigidbodies (left wall, right wall, crack) and created three different constraint networks such that walls have bond strength set to -1, i.e. unbreakable. That worked but I don't like it because I am creating three rigidbodies for the same object. What I wish I could do is : if a constraint is inside left|right wall set it to -1, if a constraint inside crack set it to 1000, if a constraint between left|right and crack set to 100 for example. That would require programming somewhere, will investigate that when I have time :)

Anyways, thanks for providing me with your method, it will definitely help (actually I might redo my destruction scene because VDB generated mesh is reaallllly slowing down my playback)

Thanks again, 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×