[Custom Build] Blender Fracture Modifier


(scorpion81) #1

Latest Release Build 2.79b / Addon v2.2.4 [Apr-2018], Win 7, Linux(generic), Mac 10.6+ (all 64 bit)

Download here:
http://kaikostack.com/fracture/

Mirror (outdated):
Google Drive

Some Cool Fracture Modifier User Videos:

Change list (commits):

http://git.blender.org/gitweb/gitweb.cgi/blender.git/shortlog/refs/heads/fracture_modifier

Hello,

for quite some time i am working at a fracture modifier in blender.
It is intended to be a better version of cell fracture which avoids to create many, many separate objects as result.

This is bad because it clutters the outliner and makes blender slower this way.
And its harder to handle and manipulate so many objects at once.

Another advantage is, all fracture operations act as modifier, and are non-destructive.
This means the original object and geometry remains untouched.

You can find further info and the links to the graphicall builds and source code here:

https://en.blender.org/index.php/User:Scorpion81/Fracture_Documentation

or

Note: this is a documentation draft only, images will follow later.

I would be happy to get some user feedback from you :slight_smile:
This greatly helps me to improve the modifier and finding and fixing the bugs.

Edit: test video from bashi

scorpion81


(Michael Knubben) #2

Ooh, interesting! It just so happens I’m working on something that I’d like to fracture, so monday at work I’ll test this.


(ofuscado) #3

ÂżDont run in linux?, you can make a video for review? thanks.


(Saiman) #4

Hey. My English is very bad (google translate). Your modifier good. I test assembly http://www.graphicall.org/1122. I hope it will be clear in the video that bothers me.
https://youtu.be/K6HVhGIqm-c
Why after fracture of the back attracted? both springs. Clearly seen in one beam. And another question is whether the addon or integration into a blender soon? in blender 2.72 maybe?


(bashi) #5

Great to see you’re still on it, looking great so far. I’m currently rendering a video, and have a couple of notes for you. I have to bring them in some order first though. So just a heads up for now, it’s looking pretty good so far. Will post my stuff later today or tomorrow.


(scorpion81) #6

@ofuscado

currently i updated my branch to 2.71.2 and work on resolving certain new bugs due to API changes, will make a linux build too when this has been resolved.
A video or a couple of shorter videos are planned to, just need to find some time for it…

@Saiman

here you have several possibilities:

  1. lower the thresholds (and make sure you have cluster count set to 0 for the beginning, and refracture after setting cluster count to 0)
  2. increase the mass of the entire object (under rigidbody settings; each shard gets a fraction of the total mass according to its volume to total volume ratio)
  3. under experimental settings try to set Angle to 5 -> so when an angle between different shards is greater than the given degrees, the constraint will break)
  4. under experimental settings try to set Distance to a bigger value than 0, means if distance between 2 shards is greater than given distance, constraints will break
  5. and you can limit the constraint count or decrease the contact distance, so less constraints and constraints over a shorter search distance will be created, making the object break more easily and reducing “rubber” behavior
  6. you also can increase solver iterations under experimental

And about integration to blender, i think this will still take some time, because there are still many rough edges at the modifier which need to be resolved first.
Maybe in a late 2.7x or early 2.8x version it could be integrated, but i cannot promise it yet…

@bashi
thank you :slight_smile: looking forward to your feedback and will try to fix my modifier according to it, when i have some spare time.


(polygonesrus) #7

been wondering if this was still in development, good to here your still working on it. think i’ll replace the old build with grab the new one.hopefully it’ll keep moving forward in it’s quest to get into trunk. good luck , wish i could help.


(eversimo) #8

Wow! Great result!


(Meta-Androcto) #9

I’ve followed development of this firstly addon & now patch. Hat’s of to scorpion81 for such strength of character to continue this work so we can have such a great feature.
Thanks mate!


(scorpion81) #10

@bashi

Wow ! That video is really phenomenal :slight_smile: I really like it !
How long did it take for you to find the correct modifier settings ?
I know it involves lots of testing runs before you find them.

Furthermore i am curious about your notes :slight_smile:
And… which Fracture Addon do you mean ? My old Destructability Editor ?
Yea, it still is kinda buggy… but now it can be replaced by something better :slight_smile:

@eversimo

Glad you like it !

@Meta-Androcto

You are welcome ! Thank you for your kind words :slight_smile:


(bashi) #11

Camera 2

Danke. Difficult to say how long it took to set up, i spent a couple hours with your build that day :wink: Once i figured out the Pre-fracture Method (on the Wiki Site), it went reasonably fast.
I had to do some tricks/settings to get what i wanted, like connecting all pieces, except the Glass Bulb, by actual Vertex to Vertex Edges, so it would act as one piece… Very possible i just missed how it should be… :wink: That’s why i need to do more testing and workflow testing as well.

But here the easier Notes at hand, not very verified, since you asked so eagerly :wink: Just ask if unclear.

Notes I:

-Select CompoundShape on Fractured Object + Play Animation = Busy Blender with no end?

-Constraints from/to Fractured Objects not working, sometimes crashes blender?

-Contraintssometimes get removed and have to be re-built by unchecking andchecking „Use Constraints“. I will keep an Eye open on how andwhen it happens, so i can tell you more exact.

-How about makeVertex Group for Inner Faces?
(For example toemit smoke only from Inner Parts, or whatever)

-May be 0 (unlimited) as„Constraint limit, per MeshIsland“ default is overkill? For me 24gives about same Result, but in some cases much much faster to playAnimation. (0 is not very fast with 2000 Shards) Just an Idea.

-Is there a Way tolet all Constraints break if one does? For single Shard, not wholeObject.

-“Threshold VertexGroup“ + „Use Mass Dependent Thresholds“. Do they worktogether?


(scorpion81) #12

Ahh, compoundshape. Thats some old banana code left over from the old modifiers. With this i tried to reduce constraints by replacing them by compounds… Should be removed again indeed, does not work any more now.

Yeah, thats not possible with the modifier, because those other objects cannot be part of the modifier of the original object. In my old approach, i tried something like “Outer Constraints” to connect different objects with a modifier on them, but i failed miserably with that. You can do the following: 1) apply all fracture modifiers on all objects to join, the mesh will consist of separate islands. 2) Join all desired objects together into 1 object 3) Put the fracture modifier onto the new object, and select some “invalid” point source, like “Extra Particles” with no “Extra Group” specified. The modifier will detect this and re-use the existing mesh islands, making new rigidbodies out of them. This way you can simulate connected or “compound” objects.

Yeah, thats some kind of update / refresh constraints bug i will investigate soon. If you have multiple objects and making changes to one, changes in other objects get lost or so… like constraint settings falling back to default or being wrong at all

Thats a good idea. For now you could only specify an inner material which is applied to all inner faces, but i could store this result as vertex group too. Would make most sense with boolean, as bisect+fill is unreliable due to the bad (internal) triangle-fill algorithm, borrowed from blender.

Ok, will try to set a higher default than 0, maybe 25 or so…

For now you could maybe try to fiddle a bit with percentage… like if 10 % of the constraints are broken, the rest will break too, or even 5% or lower, but i also could maybe set an absolute count here, as additional property.

No those are different concepts. Mass Dependent Threshold just lowers the threshold according to the current shard mass in relation to the maximum shard mass, maximum shard mass gets highest (set) threshold, all others lower fractions of it.

With Threshold Vertex Group you (theoretically) could paint weights onto the unfractured mesh, then assign the vertexgroup to the modifier and THEN fracture. Weights will be interpolated to the shards. It might help to subdivide the mesh prior to fracture, to better control what is painted with which weight. Lower weights mean lower thresholds, weight 1 = set threshold, otherwise the weight is multiplied with the threshold. Honestly, i am a bit unsure what happens when weight is 0, need to check the code again for this.

Hope this helps you, bashi :slight_smile:

scorpion81


(bashi) #13

This does break all Constraints in the Object, doesn’t it. I would like it to break just all Constraints on this specific Shard. (This would avoid Shards “hanging” on the Object.)


(scorpion81) #14

Hmm, no. The percentage is calculated per Island indeed. If a certain island’s constraint count goes below the given percentage of the initial constraint count (per Island) all other constraints associated with this island will break. Sure, this will lower the percentage of other shards as well and can in some cases be used to make a breaking cascade, but its main purpose is to eliminate “hanging” shards. For that behavior you set the percentage e.g. to 90, then if 90 percent of an individual shard’s constraints are broken, the rest of the constraints of the same island will break. It does NOT mean that if x percent of ALL constraints of the entire object is broken, the entire object will break as well. This is always calculated on per shard basis.


(bashi) #15

That makes sense. I used it with values like 5. And now i see why it broke just the whole thing :wink:

I have this file here, where the Physics are really messed up… The Object jiggles around… Maybe you can have a look at it?

http://www.pasteall.org/blend/30620


(scorpion81) #16

@bashi

In your file you can: 1) under Experimental, set Solver Iterations Override to 100, 2) For the passive Object, set collision margin to 0.04. This way the shards wont penetrate the ground objects. Also you could set cluster to 0 prior to fracture, this is needed to “simulate” two level fracturing solely with different constraint strengths (but does not work very well). This way you dont get the high Cluster threshold of 1000, which sticks the penetrated shards together with the rest and lets the object jiggle around. Alternatively you could set Distance to 0.01 or so and the jiggeling shards will break off then.


(bashi) #17

Nice. Thank you.


(Jonathan L) #18

I’ve worked with cell fracture quite a bit in the past, so I’m really excited to see this huge improvement! I don’t have time now, but I’ll test this on my desktop over the weekend and try to give some constructive feedback. Thanks so much for sticking with this project!

EDIT: I tried running the windows build real quick, but it said that there are a bunch of .dll files missing.


(scorpion81) #19

@Jonathan L

yeah, the build has been compiled with VS 2013 Express. So if you dont have this installed, you need to install the (small) VS 2013 Redistributable from Microsoft. It should include all DLLs necessary. Hmm. Maybe in the next build i will provide the necessary dlls in the build itself too, but installing the redistributable should work for now as well.


(eversimo) #20

Just s standard cube test…
[video]https://dl.dropboxusercontent.com/u/98756044/TesteBreakingCube.mov[/video]