Jump to content

Fracture Packed Rigid Bodies Emitted from POP Source?


mstarktv

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
Link to comment
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
Link to comment
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! :)

Link to comment
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
Link to comment
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.

Link to comment
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:

Link to comment
Share on other sites

  • 2 weeks later...

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!

Link to comment
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. 

Link to comment
Share on other sites

  • 1 year later...

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)

 

 

 

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