Jump to content
tottman1

fence destruction - joint system

Recommended Posts

Hey, i am trying to set up a building destruction in houdini, which will consist of a concrete building with exterior walkways and hand railings attached. 

At this stage i pretty much have the concrete part of the destruction completed using RBD and clusters however, now i want to have to sim the wooden railings buckling with the floor at one end and then pulling down the rest of the railings as you would expect from a connected set of pieces.  

When i used to use thinking particles i would probably have used a joint system to link the railing pieces together but im not sure what Houdini uses instead, i have tried several times with the glue constraints but they just seem to fail... 

What do you think would be the best way to do this?

 

 

railing_glue_test_rbd.hipnc

Edited by tottman1

Share this post


Link to post
Share on other sites

The reason why your constraints are not working is because you are using the RBD solver and the constraints for Bullet. I would recommend switching your solver engine to bullet or use the RBD constraints. Although i find them not so easy to set up as the ones for bullet.
 For your specific effect you might want to try the cone twist constraints. Since they can give you some "bending" before they snap. Glue constraint only gives you on or off.

 

Hope that helps.

Dennis

Edited by DennisSchmidt

Share this post


Link to post
Share on other sites

ahh ok cool, i didnt realise there were different constraints for both bullet and for RBD solver (im very much a newbie to houdini).  I have to use the RBD solver as i need the voronoi cluster feature but ill definitely check out the RBD constraints and see how they work.

Thanks for the help, Dennis

Edited by tottman1

Share this post


Link to post
Share on other sites

It is possible to use the clustering of the voronoi SOP. You just need some modifications:
What we need is the clustering stored in an attribute and the pieces separated and not clustered so bullet can generate proper collisions. To achieve this, look in the cut tab of the voronoi node and change the connectivity partition to none, in the cluster tab the cluster pieces and the create constraint network on. Now the pieces are separated again(check with a exploded view SOP). To get the cluster attribute we have to dive in to the voronoi SOP. Right klick on it and check allow editing of contents. It should turn red. Now look for the node "delete_internal_attrs". There we have to keep the "__piece" attribute so we get the clustering back. To see the clustering we can change the attribute in the exploded view to "__piece". That was it. To get the clustering back to the sim just create a constraint network for the clustered pieces only. Quick way would be with a foreach subnet which runs over the "__piece" attribute. If you get stuck check out the example file which demonstrates the process. Feel free to ask any further questions.

 

Dennis

clustered_constraint_bullet_v01.hipnc

Share this post


Link to post
Share on other sites

Awesome, thanks Dennis, thats a really cool tip to get the Bullet clusters! 

With regard to the RBD cone twist constraint, is there a way to apply that in procedural way? or does every constraint need to be manually placed? I have quite a few railings and although i could do it manually it seems a bit primitive for Houdini.

One other thing, I also noticed now that i have that Bullet Vornoi setup in my scene that switching from 'Fractured Object' to use Packed Primitives has broken my ActiveValue, used to direct which pieces are 'active', do you know how i can get the active value to read the packed primitives? my guess is that i would need to unpack them first...

Cheers

 

 

Share this post


Link to post
Share on other sites

Setting up the cone twist is not much different. Just create a connect adjacent pieces SOP and play with the radius and max point. Be sure not to create to many since they are computational heavier than glue constraints. The only thing you have to watch out for when creating points for the cone twist is the position of the constraint points. Each constraint(one primitive) consists of two points. These two have to sit in the exact position. Scaling down to 0 per primitive(constraint) takes care of that. To have them brake just create a SOP solver and connect it to the constraint network. In the solver you run over the relationship geo and delete constraints based on certain thresholds. For example if the angle is higher than a specific value.
For the active attribute just add it after packing. Easy as that ;)
Attached you can look at the modified scene from before. I only used the cone constraint. Adding back the glue and cluster constraint would need some value tweaking. Oh, and i also added a active attribute to show what i mean.

Hope it helps.
Dennis

clustered_constraint_bullet_v02.hipnc

Edited by DennisSchmidt
  • Like 1

Share this post


Link to post
Share on other sites

Cool, very interesting! I didnt realise that you could get such a nice almost bendy feeling to the Vornoi pieces using that cone constraint, i really liked the idea of scaling down the constraints points, that problem was really troublesome for me. I took your scene and spent today adapting it to my own to see if i could get everything that i needed in there now, all the constraint stuff makes sense and works perfectly! :) 

My last issue is still that I cant seem to be able to get the packed primitives working with the Active Value (im so close!). I tried adding in the ActiveAttr after Packing but i must be missing something still as the AcitveValue just errors/ or nothing ever becomes active... Any ideas?

Cheers

bullet_voronoi_clusters_setup2.hipnc

Share this post


Link to post
Share on other sites

Good to hear. It takes a while to get your head around that stuff.
Since you are setting the active value in SOP level there is no need to set it again in DOP's. I find it a more convenient way of setting attributes. What you have to do is just disable the active value node in your dopnet. Further, your dopnet is looking for the value "active" and not "ACTIVE", so you have to change that. In general only local variables are spelled in capitals. Now it should work. The only thing left is to get the right value to the wanted pieces. I saw you got two groups, active and passive. If you run the create attribute sop over the active group you have to set the default to 0, so everything that is not in the group is inactive and the value you are applying to 1. Doing this for the passive group: just switch it around(default=1, value=0). Hope that makes sense.

Dennis

Share this post


Link to post
Share on other sites

Took a look at your scene and noticed how you were setting the active value.  I always thought the Active Value node mainly worked for the RBD solver, but either way I controlled it via popwrangle and it seems to be working that way.   You can see the updated nodes have been netboxed in blue with sticky notes too.

   Hope that helps!

 

Nico

bullet_voronoi_clusters_setup_wrangle.hipnc

Share this post


Link to post
Share on other sites

Nice addition if you want to bring in a animated active value to DOP's. Is there a reason why you are converting to points(add sop)? Since it is packed prim and therefore already a point.

Share this post


Link to post
Share on other sites

cool, both methods work well :) 

So, what would you say are the benefits of setting up, for example, an animated active value in SOPs compared to DOPs? is the popwrangle doing basically the same job as a sopsolver? 

Share this post


Link to post
Share on other sites
23 hours ago, DennisSchmidt said:

Nice addition if you want to bring in a animated active value to DOP's. Is there a reason why you are converting to points(add sop)? Since it is packed prim and therefore already a point.

Doing it just to visualize it but its definitely not required.   It really is more useful when I need to art direct the fracturing on things with many more pieces etc and I just want to visualize activation in the lightest way possible.

 

tottman1:   I just happen to like this method as it's really quick to change fracture areas and you can have your impact object ( if you have one ) do an attrib transfer of active on to your packed prims from it to speed up sim times so it only will sim what gets touched by the animated collider etc.

 

nico

Edited by NSugleris
  • Like 1

Share this post


Link to post
Share on other sites

I see, makes sense. Thanks.

The popwrangle(or geo wrangle, geo vop) is more or less the same as a sopsolver with a sop wrangle in it. Depends on what your prefer. Maybe there is a performance increase with the dop wrangle. Would have to test this.
@NSugleris Do you know if there is any advantage of working with the dop wrangles? Except the fact that you don't have to dive in one more node ;)

Share this post


Link to post
Share on other sites

ok, so my setup is now that im using an secondary animated object with AttributeTransfer to activate my sim object. I also realised that for my purposes (fbx export to video games engine) i need to be using non-packed objects for simulation.

The problem now though is that once i switch off the packPrimitves neither of the activation methods work anymore: active value or popwrangle. So, why dont these methods work with the current setup when i switch from packed to non-packed primitives? Is there a work around for this? 

Thanks

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

×