Jump to content
Sign in to follow this  
StepbyStepVFX

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

crowdFLIPtest_v1.hip

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.

flip_crowd_ragdoll.gif

ap_crowdFLIPtest_v1.hiplc

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  

×