Jump to content

How to compute sensible constraint strength?


Recommended Posts

Hello,

[Houdini 17.5]

I have Bullet simulation of a concrete building. I have two fracture levels (big chunks and smaller pieces inside them). At some point I apply forces and let big chunks fall. My goal is break these chunks even further when hitting the ground (not a complete disintegration, but instead some big chunks break into 3 or 4 smaller chunks). My biggest challenge is choosing "good" constraints strengths for the second fracture such that they break on the ground impact. Currently, I am doing this by trial and error, but it's not efficient.

My question: Is there any way to guess/compute constraint strengths to achieve such result? One idea is to sim first, measure impacts on constraints and then use them as an initial guess ( for constraints strength), but this is not always working (plus it's an iterative process)! Another idea is to force the second constraints fracture to break on impact (e.g. using geometry wrangler), but I am afraid this will give always the "same" results, while I am hoping for some organic shapes due to impact ...

Link to comment
Share on other sites

Did you try to compute randomized constraint strength at the sop level ?

Maybe in a wrangle you can type :

f@strength = fit01(rand(@cluster), ch("min_strength"), ch("max_strength"))

So it can multiply the strength in the glue conrel node based on the one you defined at sop level. I don't know if it works but you can give it a try ;)

 

Cheers

Link to comment
Share on other sites

Thanks Romain :) I already have randomization in place, but the question is what is the right min/max strength? Currently I guess them by trial and error, so the main point of my question: instead of simming and trying different values, is there another way to compute these min/max values?

Link to comment
Share on other sites

7 hours ago, catchyid said:

Thanks Romain :) I already have randomization in place, but the question is what is the right min/max strength? Currently I guess them by trial and error, so the main point of my question: instead of simming and trying different values, is there another way to compute these min/max values?

Well, make wedges and you'll see, with tops it's easy now ! Another way to create cool chunks is to create another constraint network and use the bullet soft constraint with a break threshold with the distance attribute. I'm using it for destruction and it adds a really cool effect, with bigger chunks breaking into smaller and bending pieces.

Otherwise, you can check the maximum force value applied to your constraints when simulating (in the geo spreadsheet) and you can use it as a reference, to create a breakforce attribute on your constraints at sop level, and then inside the dops, use a sop solver to remove those constraints using vex, by using the force attribute which exists on your pieces. 

Connect the glue into the 1st input and the rbd geo into the 2nd input, and wrangle this :

@forcept = nearpoint(1, @P);
@force = point(1, "force", @forcept);
@mag = length(@force);
if(@mag > @breakforce){
	removeprim(0, @primnum, 1);
	}

 

Cheers,

Link to comment
Share on other sites

Thanks Romain and Andrii :) from our discussions, it seems that there is no "magical" way to guess these values, the only way is to sim, measure impulses on constraints and use these values as a reference...

Once more, thank you guys :)

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