Jump to content

Subfracturing in a SOP Solver


DeeLan

Recommended Posts

I need some suggestions on how to fracture an existing RBD object inside of a SOP Solver. The two solutions I've tried so far crash after a couple of fractures. All it is is a ball floating around and when ever CHOP network returns a value of 1, each piece of the ball splits into two smaller pieces.

For those interested in how I'm currently doing it, I've got my RBD object plugged into a multi-solver, with the Rigid Solver in slot 0 and the SOP Solver in slot 1. Inside the SOP Solver there's a switch that reads some data from a CHOP network. If the result is not 1, then it just puts through the existing geo, if its 1 then it (tries to) fracture the object. My current solution is to unpack the object, scatter points and voronoi fracture the object, assemble the object, transfer all attributes except for name and id from the piece being fractured, and then give each piece a unique name. This kinda sorta works except for the fact that after a few fractures it just crashes. CPU and RAM usage are basically nothing, it just seems that I've done something wrong and Houdini doesn't like it.

dancing_sphere_odforce_v1.hipnc

Edit: This latest version is working a bit better, but still crashes a bunch

dancing_sphere_odforce_v1_5.hipnc

Edited by DeeLan
Update
Link to comment
Share on other sites

yup weired. just tried it again and now it did crash in 16.5 aswell

anyway I had the idea of prefracturing it down to the max fractured level and using constraints to hold the pieces together...

it made me crazy but I finally got a solution working. but I feel like I missed something that does the same thing waaaaaay easier 

 

dm_dancing_sphere.hipnc

 

edit: might have a closer look at why your file aint working when I got time

Edited by 3dome
Link to comment
Share on other sites

On 22/11/2017 at 11:37 PM, 3dome said:

anyway I had the idea of prefracturing it down to the max fractured level and using constraints to hold the pieces together...

it made me crazy but I finally got a solution working. but I feel like I missed something that does the same thing waaaaaay easier

Yeah its not fun is it haha. But i guess for now its the method we're stuck with.  :(

Link to comment
Share on other sites

@3dome I Believe that the fact that multiple fractures left us with ridiculous ngons is at least partly to blame for the crashes. I've reworked the sop solver a bit and added a dive node to make sure we always have tris. Its still crashing but its alot better than it was before. Funnily enough I've found that lowering the resolution of the sphere actually causes it to crash more often.

dancing_sphere_odforce_v1_5.hipnc

Link to comment
Share on other sites

i got it working right thru....so here's what I've done...bear in mind..I'm very inexperienced at this...

01) I looked at your sopsolver, dive in, dop_geometry, now you're creating PACKED geo to start off with and also breaking them as you go and then create more PACKED geos...and yet your Import Style....doesn't make sense to me....I stress...I don't know shit....but I simply do what makes sense to me so I changed Import Style to Fetch Packed Geo

02) I see you're doing attribtransfer , except for id and name...I guess name comes from the orig assemble and also the assemble in the for loop....so fine there...but I can't find where new ids come from...how does a new 'broken' piece get new id ? Dunno, so I enabled Add DOP Object Id Attribute (in dop_geometry node)

It then works...

For low res on the starting sphere, I think this is just a common problem with boolean/fracturing logic. If you boolean a simple box...incredibly low res...there's simply not enough geo for it to play with so it creates s*** geometry as a result leading to crashes.

Edited by Noobini
Link to comment
Share on other sites

  • 2 weeks later...

Hey thanks for your help I've got it working now even with lower res spheres :) Your note on the ID attribute sparked some thought. I had the wrangle set the ID to -1, as was suggested to me over on the Houdini Artists Facebook Page ( the logic being that doing so forces Bullet to calculate a new collision hull). But After reading your comment about the IDs i changed it to make the IDs equal to the point number, and now it works perfectly :)

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