# Realistic Dynamic Fracturing with Bullet

## Recommended Posts

Sergei I have one question for your setup. I can see from the first example already that the fracturing does not happens where the impact is, why is that and how?

Are you using the broken constrains to decide if a piece will fractured or not?

Edited by cparliaros

##### Share on other sites

Thanks for clarifying. Thanks man. It's the same technique I used in Thinking Particles, I haven't tried it in Houdini yet.

You're welcome!

Actually, I was inspired by this video

but hadn't an idea how to make it for a long time...

Sergei I have one question for your setup. I can see from the first example already that the fracturing does not happens where the impact is, why is that and how?

Are you using the broken constrains to decide if a piece will fractured or not?

That's why I called this video "realistic" in real life is not necessary that the destruction taking place in impact places. It is defined by stress level of the system. I used pin constraints to compute it.

Yeah, broken constraint is one of the factors to break a piece.

• 1

##### Share on other sites

Simply awesome!  I have always loved TP's approach, and its voxelized collision handling is sweet too.   Thanks Sergei!

##### Share on other sites

Hi Again, I am back with more questions. Why do you start with Pin constrains and you don't stay with Glue? Where do you use Pin and Glue?

Do you start with Pin which gives some elasticity on the object without breaking and somehow you use the force attribute to decide which pieces to sub-fracture and then the new pieces create new Glue constrains?

Also, can you talk little about relationship of actual pieces of the column/wall and their metal skeleton. Are there collisions between them, because I can see intersection. But at the same time I can see that one effects the other.

The skeleton will bend based on how many pieces has on it and where.

I am trying to understand how works....

##### Share on other sites

Hi Again, I am back with more questions. Why do you start with Pin constrains and you don't stay with Glue? Where do you use Pin and Glue?

Do you start with Pin which gives some elasticity on the object without breaking and somehow you use the force attribute to decide which pieces to sub-fracture and then the new pieces create new Glue constrains?

Also, can you talk little about relationship of actual pieces of the column/wall and their metal skeleton. Are there collisions between them, because I can see intersection. But at the same time I can see that one effects the other.

The skeleton will bend based on how many pieces has on it and where.

I am trying to understand how works....

I used Pin constraint because it gives me possibility to use stress level. Glue constraints are much simpler, I guess it combines all linked objects into one "cluster", so in this way it much easier to solve for Bullet. That's why glue is so fast. But with glue constraints, I can operate only with impact points. But that doesn't work for real life fracturing.

I have 2 constraints systems. One of them combines all objects(including rebar), another one includes only rebar. That allows me to make skeleton unbreakable.

Yes, skeleton depends on the count of pieces inside it. Increasing of segments will give more smooth bending.

• 2

##### Share on other sites

I used Pin constraint because it gives me possibility to use stress level. Glue constraints are much simpler, I guess it combines all linked objects into one "cluster", so in this way it much easier to solve for Bullet. That's why glue is so fast. But with glue constraints, I can operate only with impact points. But that doesn't work for real life fracturing.

How you get stress level? The only attributes I get from Pin Constrain is force, restlength, distance and angle? Is the (distance - restlength)? Also, those attributes are attached to constrain geometry how do you transfer them to packed prims?

I have attached an example with my setup

dynamicFracture_v04.hip

Edited by cparliaros

##### Share on other sites

'angle' and 'force' gives good result when breaking pin and cone twist constraints

##### Share on other sites

How you get stress level? The only attributes I get from Pin Constrain is force, restlength, distance and angle? Is the (distance - restlength)? Also, those attributes are attached to constrain geometry how do you transfer them to packed prims?

I have attached an example with my setup

Your setup is fine, you just need to break constraints by some conditions. As Saber said, you can use any of these attributes. When I say "stress level" I don't mean some specific attribute, that's more like general concept.

If you need to find objects which attached to some constraint you can use findattribval() function in vex. Each constraint has a name attribute(on points) for both objects with corresponding value.

##### Share on other sites

hey man, I just want to know if the setup scales well. what if its a building?, or better yet do it use fracture limit..another concern is the textures.

how was it compared to the a prefractured workflow.

thanks in advance i love the examples

##### Share on other sites

hey man, I just want to know if the setup scales well. what if its a building?, or better yet do it use fracture limit..another concern is the textures.

how was it compared to the a prefractured workflow.

thanks in advance i love the examples

Thanks man. Actually, I didn't test it with another scale. I'm trying to change this setup for Milan Suk's version of Bullet now.. It works with one fracture level, I guess that's enough for main sim. There shouldn't be any problems with textures. This setup is already prefractured, the main difference that if you need more details you don't need to prefracture everything more, but just change simulation fracturing parameters...

Edited by vi_rus

##### Share on other sites

Exellent job so far. I still can't figure out some stuff. The idea with pin constraint, checking it with some criteria and determine stress area, is just awesome. But pin constraint wihout glue (as in your video) causes some instability to the pieces and pieces kind of dance, even when they don't collide. And for what you create glue constraints dynamically?

##### Share on other sites

There is always a reason why objects jitter with Pin constraints. Glue constraints really much more stable in this case. I used Glue constraints to combine some fractured pieces to avoid a Voronoi look.

##### Share on other sites

I am rebuilding the rebar bending behavior and managed to come up with something working.

the only problem I have is that the reloading happens on the whole constraint network, because I am checking for a detail 'switch' attribute (yeah pretty dump ;p). I would like to reload only the primitive\ point pair which is exceeding a certain force value.

any suggestions?

thanks

sebastian

live_constraints05.hip

##### Share on other sites

Great topic!

I just did basic stable implementation(currently without bendable constraints).

Results looks promising:

• 1

##### Share on other sites

that is looking really nice !  Any chance for a hip ?

-G

Great topic!

I just did basic stable implementation(currently without bendable constraints).

Results looks promising:

##### Share on other sites

Yes, I have to clean up the mess and will upload some examples.

##### Share on other sites

Here's a quick setup. Very simple and clean falling plank. You can switch between cone twist and the hard constraint. Hard constraint stiffens up with more subsamples.  It also doesn't maintain deformation, it's just slighting bendy. I'm breaking based on the torque attribute, as it seems the most consistent and useful of the available attributes.

h13_const_breakbytorque.hip

• 2
• 1

##### Share on other sites

Well, I wasn`t able to prepare a proper scene, so I`m just giving you the messy one!

Keep in mind that I simulated it on older H release, so results may not be the same, as there are many changes in bullet solver by now.

DOP_DynamicFracture_v17.hipnc

• 1

##### Share on other sites

Update!

Bendable constrains included. Simple ones, no separated intetnal structure. There are per bond parametets that controls where the bending will occur, how much force is applied and setting that allow each bond to restore its initial position over time.

Stress level is now accumulated and stored, it can also dissipate over time so constrains now gets weaker when enough force or bend is applied.

Next thing I want to add is to share some attributes, so edge displacement could be used.

Edited by rayman
• 9

##### Share on other sites

Update!

Bendable constrains included. Simple ones, no separated intetnal structure. There are per bond parametets that controls where the bending will occur, how much force is applied and setting that allow each bond to restore its initial position over time.

Stress level is now accumulated and stored, it can also dissipate over time so constrains now gets weaker when enough force or bend is applied.

Next thing I want to add is to share some attributes, so edge displacement could be used.

It looks great.

## Create an account

Register a new account