Jump to content

Stop geometry from deforming further after Active?


jakexyzabc

Recommended Posts

I need to keep my geometry from deforming further after it has become active in a rbd simulation

The setup is as follows:

I have a piece of geometry being shattered by booleans.  The geometry has thickness.

That geo goes into a wave deformer that is animated.  

Separate geo is used to make certain pieces of the fractured geo active in the rbd solver.

When any shattered pieces are active and released they appear to still be affected by deformer. ... They stretch because of the deformer.

I would like them to retain shape, size and volume as they are on the frame they are made active.

Thanks, Jake

Link to comment
Share on other sites

Hi, try something like this, in a wrangle after packing the pieces and defining the @active attribute by your roules, set (i@deforming = 1-i@active) and in the rbdpackedobject node turn on the toggle (override attributes from sop) make sure you have in the string field at least (active and deforming), that should work. Cheers - Dam

 

Edited by Dam
  • Like 1
Link to comment
Share on other sites

Thanks!

Yes, this works.

Another question I have is this, my simulation is being done on proxy resolution pieces. I am transferring position and rotation data to the hi-res pieces after the sim.  Is there a way to make the Hi-res pieces that were made active in the sim stop deforming?  Basically transfer that attribute from proxy to hi-res?

 

Link to comment
Share on other sites

For transfer the @active or the @deforming attribute a good way is by name: pipe in the first input of a wrangle the highRes and in the second the lowRes, the code below shoud make a correct transfer of those attributes from the low to high as long the @name it's same for both pieces sets, but for deform the highRes like your lowRes, you probably would need a skinning process, this can be done using a foreach sop a point deform and @name attribute for isolate the pieces by the for loop iterations, unless you're planning a different approach :) - cheers Dam

int pt = findattribval(1, "point", "name", s@name); // matching by name 

i@active = point(1, "active", pt);
i@deforming =  point(1, "deforming", pt);

 

Edited by Dam
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...