Jump to content
Sign in to follow this  

Interaction between Crowd and FLIP Solvers

Recommended Posts

Hi All,

The interaction between Crowd agents and FLIP simulation is one way : agents clearly influence the FLIP Simulation, but I have troubles to get the FLIP Sim move my ragdoll agents. I have already put the Feedback Scale to 1 under FLIPSOlver / Volume Motion tab / Solver.

I have seen that particles interact with ragdoll agents, so I have created a POP object and added a POP Solver. The POP object is feed with the particles of the FLIP fluid at every simulation time. And I add a mass and pscale attributes to the particles.

Now I have a better interaction between the ragdolls and the FLIP sim... but my agents now start to act as "spaghettis" under impacts of particles... I have tweaked the constraints (CFM, position CFM, position ERP etc.) but I can't enforce the position constraints and my ragdoll are really streched...

Any ideas how to solve that ? Maybe a better way to make FLIP and crowd ragdolls better interact ? Any video / course / lesson / ressource where people have played with that a bit ?

Thanks for your help


Edited by StepbyStepVFX

Share this post

Link to post
Share on other sites

It does seem like the pop solution is causing the bad deformations.

I disabled the pop section. I sorted the agents along the Z-axis. You may be able to automate triggering if they are in a linear order.

Instead I took the hard coded approach which offers art direction.

Place the Crowd Trigger node into Custom VEXpression mode.

Use if statements to turn on the trigger, based upon individual point #s.

// setting i@trigger to 1 will enable
// setting i@trigger to 0 will disable
int result = 0;

// Stagger transition to ragdoll.
if((@Frame == 13) && (@ptnum==0)){result=1;}
if((@Frame == 15) && (@ptnum==1)){result=1;}
if((@Frame == 17) && (@ptnum==2)){result=1;}

if((@Frame == 28) && (@ptnum==3)){result=1;}
if((@Frame == 29) && (@ptnum==4)){result=1;}
if((@Frame == 31) && (@ptnum==5)){result=1;}

if((@Frame == 37) && (@ptnum==6)){result=1;}
if((@Frame == 39) && (@ptnum==7)){result=1;}
if((@Frame == 42) && (@ptnum==8)){result=1;}

if((@Frame == 46) && (@ptnum==9)){result=1;}

i@trigger = result;

For the ragdoll state, I dropped down a PopSteerSeek to make the agents move in the down stream direction. You can adjust the force on this node to match the agent speed to the fluid motion.



Edited by Atom
  • Like 1
  • Thanks 1

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
Sign in to follow this