tyFlow Forum
Attach particles to surface of physX simmed geo? - Printable Version

+- tyFlow Forum (https://forum.tyflow.com)
+-- Forum: tyFlow Discussion (https://forum.tyflow.com/forum-1.html)
+--- Forum: General Discussion (https://forum.tyflow.com/forum-2.html)
+--- Thread: Attach particles to surface of physX simmed geo? (/thread-491.html)



Attach particles to surface of physX simmed geo? - mitchfx - 04-27-2019

I have a fairly complicated flow using multiple birth shapes, voronoi fractures, physx bindings and dynamics, etc. This is all working pretty much how I want, but now I need to "attach" smaller detail objects to the existing simmed geo without it affecting the current sim. I've tried creating a new flow with a birth shape to turn the detail geo into particles and choosing the original TyFlow object in an Object Bind operator, but it doesn't seem to work. I've also tried using a Particle Bind in the original flow instead, but I need these smaller bits to follow the closest SURFACE of the simmed geo, not simply their particle center points.

I was wondering if there might be a way to add these smaller objects to the PhysXBind but have them ignored for mass and collisions, etc. Think of a bridge collapsing where all of the major structure is simmed but you want to attach extra "gak" like braces and bolts to that.  Thanks.


RE: Attach particles to surface of physX simmed geo? - tyFlow - 04-27-2019

If you want to import particles from one flow into another, use 'Birth Flow' and 'Update Flow' to keep them in lock step, not Birth Shape. Then set the imported particles as kinematic using a PhysX Switch and attach your detail particles to them with PhysX Binds.


RE: Attach particles to surface of physX simmed geo? - mitchfx - 04-27-2019

Thanks Tyson!  It took some more trail and error but I think I have the correct setup now (see screenshot).  Trying to have the Bind op in either Birth event wasn't working so I ended up doing a send out of both to a new event that contains the Flow Update and the Bind.  On a related note, I've been a bit stumped from day one about how the "bind non-sibling" option is supposed to work.  My assumption is that it will allow particles or physx shapes to bind with everything BUT those born in the same event.  However, I cannot ever get it to work at all and when I use this option my bindings simply never happen.  I usually end up using group limits instead, but it would be nice to understand a little more about the non-sibling option since it seems like a more elegant method to do what I want.  Is there any chance it's just not working correctly, or am I simply misunderstanding something?  
   


RE: Attach particles to surface of physX simmed geo? - tyFlow - 04-27-2019

Siblings are not merely particles born in the same event, but particles with the same *parent* particle (like real life sibling relationships in a family). So for example, if you had a spawn operator creating new particles by travel distance, all those spawned particles would be siblings with each other, and their parent would be the particle that spawned them.

Note: the Birth Surface operator creates implicit parents for all particles born on a particular surface, so that they are enforced as siblings. This way, all particles born on a spline, for example, would be siblings with each other even though there's no actual parent particle in the sim.

So the sibling relationship would come in handy in the PhysX Bind settings if you wanted to bind particles spawned on a spline together, into a rope for example.


RE: Attach particles to surface of physX simmed geo? - mitchfx - 04-27-2019

(04-27-2019, 09:14 PM)tyFlow Wrote: Siblings are not merely particles born in the same event, but particles with the same *parent* particle (like real life sibling relationships in a family). So for example, if you had a spawn operator creating new particles by travel distance, all those spawned particles would be siblings with each other, and their parent would be the particle that spawned them.

Note: the Birth Surface operator creates implicit parents for all particles born on a particular surface, so that they are enforced as siblings. This way, all particles born on a spline, for example, would be siblings with each other even though there's no actual parent particle in the sim.

So the sibling relationship would come in handy in the PhysX Bind settings if you wanted to bind particles spawned on a spline together, into a rope for example.

Ok, this makes sense.  Let me ask you this...are particles born from different Birth Shape operators in unique events (but in the same flow) considered non-siblings?  Quite often I have a set of particles created in one Birth Shape that I want to bind to particles created in another Birth Shape from a different object, but not have them bind to each other.  However whenever I check the bind non-siblings option in PhysX Bind nothing binds at all.  Is this normal? 

Thanks again.


RE: Attach particles to surface of physX simmed geo? - tyFlow - 04-27-2019

Actually, looking at the code for the family filtering, there's a slight bug where if particles have no parent and no siblings they're treated as siblings by mistake in some situations. I'll fix this for the next build.

For what you want, you don't need family filtering anyways. Use clustering. Set a custom properties operator to assign some float value to particles in event A, some different float value in the same channel to particle in event B, then choose "cluster if different" for that channel. Now particles will bind to other particles that don't share the same cluster value.


RE: Attach particles to surface of physX simmed geo? - clasyc - 04-29-2019

(04-27-2019, 10:08 PM)tyFlow Wrote: Actually, looking at the code for the family filtering, there's a slight bug where if particles have no parent and no siblings they're treated as siblings by mistake in some situations. I'll fix this for the next build.

For what you want, you don't need family filtering anyways. Use clustering. Set a custom properties operator to assign some float value to particles in event A, some different float value in the same channel to particle in event B, then choose "cluster if different" for that channel. Now particles will bind to other particles that don't share the same cluster value.

Just what I needed, never thought of that. Thanks.

A lot of useful insights in this thread  Idea