[Custom Build] Blender Fracture Modifier

Anyone see the new veroni fracture bieng worked into bullet? Is that applicable?

Siggraph 2014.

This stuff is so amazing. http://www.youtube.com/channel/UCS1wsF-S2dzbBlxFeq2h_0A

OMGZJ-(o my gr8 zombie jesus)

I agree - I love the “Glints” video - it’s something that generally isn’t handled too well.

Meanwhile, back on the fracture modifier topic this thread is for! ; )

It is not really applicable at this point IMHO. The BP voronoi stuff you are probably talking about is old and not an official part of BP IIRC. Plus Erwin recently got hired by googol.

The big picture here is Scorpion81’s custom nondestructible fracture modifier has advanced controls and features beyond just being “voronoi” that are designed to make it a powerful tool for VFX. It has some excellent destructibility and constraint features now and being planned for the future.

As an example of how versatile this tool is, Scorpion81 has a constraint demo file of a setup with no fracture. It is usable as a dice rattling around in a cup then being dumped out animation. Very simple to implement with his modifier.

No matter how powerful and good any tool is, without being able to figure out how to use it, it is useless. We are creating detailed and workflow based documentation that will continue to evolve making Scorpion81’s tool one of the most usable fracture and destructibility tools available in any software period IMHO.

MAn I wish you wizards would redo blender game engine physics wrapper :smiley:

I need GetImpulseForce, which is in the api but not implemented :frowning:

Any info or link on this game engine physics wrapper?

You are kidding right?

@bashi

Is my tool then THAT bad in your opinion ? Surely, i dont have the time to polish it every day, but it should be quite usable ? Do you maybe have some more feedback on how to improve it ? And… i have made the last windows build on July 29, 2014… You mentioned you have trouble compiling it under mac ? Hmm. Maybe we can figure out a way so that this will succeed. Basically i use cmake and default build settings in cmake-gui, and then it should work… even under mac. Because under lion it works as well, dunno whether important compiling stuff has changed since then…

@scorpion81

your tool is actually quite good, honestly. My issue arise much more from the fact how Blenders Sims are split up into pieces that can’t interact with each other…

In this context this:

…the most usable fracture and destructibility tools available…
this applies to your Modifier, correctly. But this statement somehow makes the impression that Blender would be any good for this kind of work - where it clearly isn’t, at least for me. Having some great Tools does not help me if they can’t work together.

So i’m really sorry if i made the impression that somehow your Modifier is not good, while i actually mean the underlying structure in Blender…

(I did spend some time lately into this “my” issue. Consequence one for me is learning Houdini. And secondly i played a lot with the SOFA Framework, which is a pretty good and complete unified Physics Sim. Now i’m dreaming too much of having a unified Physics Sim in Blender and get too much annoyed by the fact that we haven’t… :wink:

I would actually like to hear you opinion on this - unified Physics System. And if you know anything about the Gooseberry Plans on this regard?

And i do still have some notes on your Modifier i’d have to tell you. I wanted to do this way earlier, but got carried away, and vacancy and so. I will come back to you soon with my notes. Sincerely, bashi

PS: I use scons usually, so i might try cmake next time.

@bashi

yea, thank you for clarifying… the current blender structure is even an obstacle for my modifier itself to be included - according to the opinion of some blender core devs.

I can build my modifier only on top of what is already there, and i had to be “creative” in a hackish way sometimes to reach that current state of my modifier.

The SOFA framework seems to be a good simulation framework at first glance (must look into it further). And if i knew how it worked internally i would even try to integrate it in another branch maybe, given i find enough time to do so. But chances would be very low to get that all in master…

Regarding Gooseberry and the unified physics system i do not know more than was stated in the official blender roadmap some time ago. Since i am just a hobbyist external dev, i dont have more insight into the current plans. Anyways… fracture seems to have a low priority at blender foundation (if any) atm, other stuff is more important as it seems. And a unified system would be cool, yes… atm fracture atleast can interact with forcefields and smoke, if the fracture modifier is before the smoke modifier. I havent tested cloth, fluid and softbody yet together with fracture.

Looking forward to your feedback and yea, i dont even have a SConstruct / SConscript file hacked together for the branch… to be honest, i dont like scons very much, i find cmake-gui easier (personal opinion) But i guess i wont get around messing with scons anyway…

Oh no… this means we could/will have hard times trying to get this into trunk?

And yeah, i can not see SOFA Framework integrated into Blender, just because of the Size of the Framework… What i do play with in my mind is a SOFA Framework exporter. (just xml). This could be done with Nodes, since the Framework itself work with Nodes too. The main Problem i do see is getting the Animated result back into Blender… (Obj Seq does not work for me, no motion vector). If both, Blender and SOFA had Alembic…

So enough on this. I might do a separate Thread on this subject, since it really really bothers me.

About your Modifier:

-Enable deformationMotion Blur for Cycles Crashes Blender a lot. Really can’t see any reasonable Pattern - it just crashes often on render.

-Object Center does not move – does not let „unfractured“ Mesh be parented to fractured.

-Idea: Data Access: Collision and/or “Did just break” Data/Velocity/Acceleration , maybe as Vector Groups. So we can emit Smoke only for x amount after Shard break off?
(Again more Blenders fault than yours… We need NODES EVERYWHERE :wink:

-Idea: Splitting Fracture from Constraints functionality. (I would need to think about this more again). But it occurred to me that those are separate functions which each could be useful on it’s own. So make them 2 separate Modifiers?

@bashi

regarding mblur crashes… could you please test this blend : http://www.pasteall.org/blend/30935 It has deform mblur enabled and the modifier on. Hmm. Might crash in your (older) build, possibly you have to compile a new build for this

regarding Object center: yea thats kinda intended… just the mesh moves. Parenting to unfractured mesh parts is a bit tricky, you will have to join all desired meshes together, fractured and unfractured, and let the modifier create shards out of all existing islands by e.g. specifiying “Extra Particles” (just an “invalid” source will let the modifier decompose the given mesh into its predefined islands, being all active islands). If you want to have passive (non moving) parts of that mesh, youll need to weight paint them (best with modifier disabled first) and assign the resulting vertex group as passive vertex group to the modifier. If you have more questions regarding this, please dont hesitate to ask or send me a (sample) blend with your desired setup, I will try to fix if it might be wrong.

Before i tried to use “outer constraints” in my older, 2-modifier approach, but that was kinda messy, it permanently crashed.

regarding nodes… i am afraid there is atm not much i can do about…

And regarding a 2 modifier solution: I had that before (the extended explode modifier which did the fracture and a rigidbody modifier which had the constraint functionality built in) but i found this was even harder to operate correctly for users and lot more error prone… as i said, you can just use predefined islands, like adding an array modifier before fracture, and choosing “Extra Particles” as source (instead of “Uniform”), every invalid source lets the modifier use “incoming” predefined islands. So you can get a constraint functionality without fracture, if you want.

@bashi
Yes, Scorpion81’s fracture modifier and Blender even with it’s shortcomings “will continue to evolve making one of the most usable fracture and destructibility tools available in any software period IMHO.”

We have a big group of pros here in SoCal and Hollywood that use Blender and fracture even with all their shortcomings. They do some crazy good work with this tool that I see first hand at the user Meetups that I organize here. So I’m excited to help Scorpion81 evolve his tool and provide documentation and feedback from users that makes it usable in the hands of some of these gifted artists. Excited also are the people here trying to keep their jobs, lol… Every usable tool helps. And we use a bunch.

That’s my perspective from where I stand, right in the middle of things here. Not everybody has the same perspective so a difference in opinions is totally understandable and respected.

Hi JTA, i can see where you coming from and think that our opinions are not actually different that much, i just really projected my late frustration with Blender into this. So in my opinion, yes, the Modifier here is actually one quite easy to work with and powerful. On some more reflection i think, this is inherit in how Blender handles Data, which is very close to the User (or at least me) in the sense you know what you have, what it is and where it lives. This also might be - or lead to - the issue i have with Blender: Procedural Workflow, or more so the lack of it, plus the scattering and incompatibility between the various Physics Sims we have.
Those thoughts are merely emerging as i write them and i have to do some more thinking on them to formulate them better or find possible Solutions or whatever :wink:

So in conclusion, yes you’re right, and yes i’m right (at least in my mind ;-). And i would like to kind of apologise if my comment offended you JTA (or scorpion81). (I’m very sarcastic and do realise that my “style” in written form can sound (or are) pretty rude sometimes.) Well, it’s communication, and communication inherits miss understanding. (Otherwise we would either don’t communicate at all, cause it would not be necessary or we’d do telepathy. Both would probably be deadly boring (or infinite Joy) :wink:

@scorpion

do you build with clang? I get error with Gcc 4.8.2:

[ 17%] Building C object source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/intern/fracture.c.o/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c: In function ‘BKE_fracture_shard_by_points’:
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:511:2: error: implicit declaration of function ‘open_memstream’ [-Werror=implicit-function-declaration]
  stream = open_memstream(&bp, &size);
  ^
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:511:9: warning: assignment makes pointer from integer without a cast [enabled by default]
  stream = open_memstream(&bp, &size);
         ^
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:531:2: error: implicit declaration of function ‘fmemopen’ [-Werror=implicit-function-declaration]
  stream = fmemopen(bp, size, "r");
  ^
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:531:9: warning: assignment makes pointer from integer without a cast [enabled by default]
  stream = fmemopen(bp, size, "r");
         ^
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c: In function ‘BKE_fracture_create_dm’:
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:644:61: warning: unused parameter ‘do_merge’ [-Wunused-parameter]
 void BKE_fracture_create_dm(FractureModifierData *fmd, bool do_merge)
                                                             ^
cc1: some warnings being treated as errors
make[2]: *** [source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/intern/fracture.c.o] Error 1
make[1]: *** [source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/all] Error 2

will try clang now.

@scorpion81

This file does not crash… I will test my crashing file against new build. And will try to give you a simplified (and smaller) .blend where it crashes.

Here Blender Backtrace:

Blender 2.71 (sub 2), Commit date: 2014-07-26 11:33, Hash 9a4ab59

backtrace

0 blender 0x00000001000ff231 blender_crash_handler + 385
1 libsystem_platform.dylib 0x00007fff948295aa _sigtramp + 26
2 ??? 0x0000000108e58be8 0x0 + 4444228584
3 blender 0x00000001006b89d6 customData_add_layer__internal + 454
4 blender 0x00000001006b9329 CustomData_add_layer + 41
5 blender 0x000000010066b656 dm_getVertArray + 54
6 blender 0x00000001007fe2aa GPU_buffer_copy_vertex + 42
7 blender 0x00000001007ff517 gpu_buffer_setup_common + 1159
8 blender 0x00000001007ff020 GPU_vertex_setup + 16
9 blender 0x0000000100696e9c cdDM_drawFacesSolid + 956
10 blender 0x00000001001c892d draw_mesh_object + 13869
11 blender 0x00000001001bcf2d draw_object + 3037
12 blender 0x00000001001d8843 view3d_draw_objects + 4003
13 blender 0x00000001001d9c46 view3d_main_area_draw + 1990
14 blender 0x000000010038b0fe ED_region_do_draw + 318
15 blender 0x0000000100104e3c wm_draw_update + 1708
16 blender 0x0000000100101510 WM_main + 48
17 blender 0x00000001000ff0af main + 3439
18 blender 0x00000001000fe330 start + 52
19 ??? 0x0000000000000001 0x0 + 1

And here the Apple Crash Report: on pasteall

It might be related to Cache, since it crashes if Cache is not baked (but calculated). Maybe it isn’t even your Modifier that is crashing. I let you know when i know more about this subject.

@scorpion81

clang crashes too:

[ 21%] Building C object source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/intern/fracture.c.o/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:511:11: error: implicit declaration of function ‘open_memstream’ is invalid in C99 [-Werror,-Wimplicit-function-declaration]
stream = open_memstream(&bp, &size);
^
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:511:9: warning: incompatible integer to pointer conversion assigning to ‘FILE *’ (aka ‘struct __sFILE *’) from ‘int’
[-Wint-conversion]
stream = open_memstream(&bp, &size);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:531:11: error: implicit declaration of function ‘fmemopen’ is invalid in C99 [-Werror,-Wimplicit-function-declaration]
stream = fmemopen(bp, size, “r”);
^
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:531:11: note: did you mean ‘freopen’?
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdio.h:246:7: note: ‘freopen’ declared here
FILE *freopen(const char * __restrict, const char * __restrict,
^
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:531:9: warning: incompatible integer to pointer conversion assigning to ‘FILE *’ (aka ‘struct __sFILE *’) from ‘int’
[-Wint-conversion]
stream = fmemopen(bp, size, “r”);
^ ~~~~~~~~~~~~~~~~~~~~~~~
/Volumes/space/blender-build/blender-fracture/source/blender/blenkernel/intern/fracture.c:644:61: warning: unused parameter ‘do_merge’ [-Wunused-parameter]
void BKE_fracture_create_dm(FractureModifierData *fmd, bool do_merge)
^
3 warnings and 2 errors generated.
make[2]: *** [source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/intern/fracture.c.o] Error 1
make[1]: *** [source/blender/blenkernel/CMakeFiles/bf_blenkernel.dir/all] Error 2

@bashi

seems you picked the wrong branch out of my repository… important… checkout the branch “fracture_modifier_oldsim” instead of “fracture” since the “fracture” branch is abandoned by me and will not be maintained any more… the branch “fracture_modifier_oldsim” contains the current code. You hit compilation problems because that particular function (open_memstream) exists under linux only, for win and mac i use fopen() instead with proper conditional compiling… please try again with the branch “fracture_modifier_oldsim” and gcc 4.8.2 is the right choice then, i use this compiler here too under linux…

@ scorpion81

Is 81 your birthyear? (just wondering, out of context)

I got it to build with cmake and clang. Gcc 4.8 does not compile. Osx 10.9.4 is quite messed up for compiling…

The Inner Vertex Group does only work on 1 Shard.

(Suzanne, Mask modifier Inner Vertex)


.blend

PS: The crash on Motion Blur is still happening… I will see that i can put a small file together, current one is 32mb.