Jump to content

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
Link to comment
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 3
  • Thanks 1
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.

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...