Jump to content
mstarktv

Fracture Packed Rigid Bodies Emitted from POP Source?

Recommended Posts

This roadblock stemmed from this thread that was started here. I thought, wow, this is awesome, you can do so much - such as fracturing. However, when I tried to just do a very quick "let's see if this works" setup in my DOP network by adding a Voronoi Fracture node; it ignored it. <~This was using a Packed Rigid Body Object (I've attached my scene file without the voronoi node). However, when I switched the Packed Rigid Body out with a Standard Rigid Body object, it fractured. 

I've been trying different methods to the best of my new abilities to get this to fracture, but I can't find an answer or figure it out. I took Matt Estela's setup from his site posting here and tore it down to it's barest of bones. 

In short, I'm trying to get the spheres to fracture on impact using the packed rigid bodies that are emitted from the POP Source. Blah, this forum is the best. Thanks for any help you can give. :D

fracture_test.hipnc

Edited by mstarktv
spelling

Share this post


Link to post
Share on other sites

for fracturing your packed rbds have to have unique name, which they don't by default if you are emiting

here is a quick way, by generating unique name from id for justborn group using POP Wrangle (green node)

and of course by adding Fracture Configure Object (yellow node)

fracture_test_fixx.hipnc

  • Like 4

Share this post


Link to post
Share on other sites

Thank you soooo much! This has been nagging me for a week. I'm going to dissect this to get a better understanding. 

Share this post


Link to post
Share on other sites
On May 1, 2016 at 1:10 AM, anim said:

for fracturing your packed rbds have to have unique name, which they don't by default if you are emiting

here is a quick way, by generating unique name from id for justborn group using POP Wrangle (green node)

and of course by adding Fracture Configure Object (yellow node)

fracture_test_fixx.hipnc

One thing that I can't wrap my head around is passing of groups around. For instance, I thought it would be easy enough to take the new group created from the broken pieces and then add a pop color node to give the broken pieces a new color. However, when I try telling the pop color to use the new group, nothing happens. 

I feel bad that I'm asking such basic questions. But I keep trying to find a good resource that go over something that is practical. Everything seems to be '"1 event" examples - sort of like the shelf tools. Simply put, I'm trying to figure out how to do production driven things. Nothing complex, but multi-event things. For example, changing colors on a fracture from a new group(like stated above) and then emit particles. 

 

I guess what what I mean is, I'm trying to learn a realistic foundation of passing data around. I really appreciate the help! :)

Share this post


Link to post
Share on other sites

not sure which group you are talking about as there is no group for fractured pieces by default, but even if it was, you would not be able to see point Cd on packed primitives created

to get the point Cd attribute on them however you can use i@fracturelevel attribute (which gets increased every time piece fractures) to create unique color per fracture level, so either POP Color Vexpression:

color = rand(i@fracturelevel);

or POP Wrangle:  

@Cd = rand(i@fracturelevel);

you can as well do it post sim using Point Wrangle as i@fracturelevel would already exist. And while you would not be able to see it in the viewport, you can still use it in render or however you want

 

But to see the color on packed primitives in the viewport it will need to be Primitive Cd. So again either as Primitive Wrangle post sim, or as Geometry Wrangle in the sim:

int level = point(0, "fracturelevel", @ptnum);
@Cd = rand(level);

here is an example with primitive Cd in sim, so that you can see it while simming

fracture_test_with_fracture_level_visualization.hipnc

  • Like 1

Share this post


Link to post
Share on other sites

Thank you Tomas, this is exactly what I'm looking for. Basically just a way to visualize things in the viewport to see how many levels of fractures I'm doing, not so much for rendering - in most cases. 

So by looking at your VEX code, am i correct in assuming that this is what is happening:

Each fracture point is basically assigned a stage in which it's fractured(as an integer). So unfractured - level 0, fracture 1 - level 1, fracture 2 - level 2, ...etc. From there, each @ptnum is assigned a random color when it is in one of the levels?

One thing I'm learning with Houdini is that everything seems to be "points." It's weird to wrap my head around. I'm used to things being in events/groups and then you sort of manipulate them. Where roughly, in Houdini it seems that things are in a group by the attributes it contains. I could be wrong, and probably am, but so far it seems thats way.

Share this post


Link to post
Share on other sites
On May 3, 2016 at 11:02 PM, anim said:

not sure which group you are talking about as there is no group for fractured pieces by default, but even if it was, you would not be able to see point Cd on packed primitives created

to get the point Cd attribute on them however you can use i@fracturelevel attribute (which gets increased every time piece fractures) to create unique color per fracture level, so either POP Color Vexpression:


color = rand(i@fracturelevel);

or POP Wrangle:  


@Cd = rand(i@fracturelevel);

you can as well do it post sim using Point Wrangle as i@fracturelevel would already exist. And while you would not be able to see it in the viewport, you can still use it in render or however you want

 

But to see the color on packed primitives in the viewport it will need to be Primitive Cd. So again either as Primitive Wrangle post sim, or as Geometry Wrangle in the sim:


int level = point(0, "fracturelevel", @ptnum);
@Cd = rand(level);

here is an example with primitive Cd in sim, so that you can see it while simming

fracture_test_with_fracture_level_visualization.hipnc

 On closer inspection of your setup. One thing I can't find any information on is "fracturelevel" - is fracturelevel an attribute created automatically? Also, this is one of the things I'm running into if it is. 

And as of writing the previous sentence I had the obvious thought to check the output of the voronoi node's info and see what it's actually putting out. Then I double clicked the node and just had an "ooooohhhhh" moment. So i have 2 general questions that will clear up a lot for me using Houdini:

  1. If I double click a node to see the subnetwork, are these networks are essentially the created attributes I am calling? For example, in the Voronoi node's subnetwork I see the Modify Node titled "initialize_fracture_level" and in the Value 0 name is "fracturelevel." 
  2. If the above is true, is it just trial and error to know which attribute/node to call out? Or are there general rules to follow? In this case, I now it's fairly obvious because it's called "fracturelevel" but I'm sure there are less obvious circumstances.

Oddly enough, I've been constantly watching Houdini training lately, and I haven't seen this mentioned anywhere. The most I hear is that networks are made of networks, but no indication of knowing what is available to you.

Again, thanks! Your 2 lines of VEX code just opened up a lot more to me. :lol:

Share this post


Link to post
Share on other sites

What if I need emit fractured packed object with constraint? All work for me if i dont use constraint but when I add constraint to object its not use it or constraint guide show me wrong place and orientation.

I use simple sphere with random by frame parameters and emit it by every 4th frame to rbd solver. I add fracture to it and I want to add glue constraint but how to do it i cant understand. For TP in MAX its 10 minutes setup, but in houdini its very complicate for me now.

 Thanks!

Share this post


Link to post
Share on other sites
4 hours ago, tamagochy said:

What if I need emit fractured packed object with constraint? ...

 

Share this post


Link to post
Share on other sites

Thanks, i check few topics here about this problem and found what my problem was. After copy sop i add naming to objects and change sop solver in dop sim.

I dont need rest pos because all objects generates at origin. 

Share this post


Link to post
Share on other sites

Tomas, you are a god!  Why have I never heard of the VornoiFractureConfigureObject Node?!!?  Is it new to 16?!  I wonder if some god has figured out how to replace the actualy Vornoi Fracturing inside the node with a new style Boolean fracturing live?  :D

Is it possible to do on the fly constraints too?  I see your link to emitting pre fractured above, but it would be amazing if possible to also do live constraints with your method in this thread.  (Your other scene is not live fracturing and a different setup)

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×