Jump to content

Crowd Simulation


Yoona

Recommended Posts

I'm very interested in that topic as well and one day I'll dig into it.

A simple crowd behavior can be achieved with fluids but then your agents act a bit like people in the subway here. One mass fluid flesh piping mindlessly through paths and narrows. Not too bad I guess, you'd be surpised how much a crowd of people that vacuously stare at mobiles phones just "flow with it".

So what you really want is some intelligence and I guess sopsolvers and pops could come into that. You could give your agents some sense of environment (point cloud searches) or clustering desires (a kind of multiparity attribute) and goals.

I wonder also if volumes vops could be useful here! Your agents could create fields (in the form of volumes. see volume from attribute sop) and those could be sampled nicely and fast with volume vops. Ahh! The possibilities!

Another thing, which I tried in the past, is to create a graph structure out of an environment geometry and then search it for paths you can travel. You can precompute those all at once and store them and just look them up. That is useful for finding clever-looking paths through an environment and I think if you were to create fileds out of them and then use that to direct particles or a fluid it could look cool. Big job though.

I really think we should get some crowd tools in Houdini. It's almost perfectly equipped for it already.

Edited by Macha
Link to comment
Share on other sites

Depends what kind of crowds you need, if they are "static" in a stadium or so, you need more randomized instancing approaches.

If you are looking for more intelligent behaviour, then sopsolving points is a good start:

The above suggestions could prove interesting. Eventually you can guide your points through custom velocity fields. SDF's are particularly useful for collision detection & avoidance. You can also use adaptive collision detection for speed optimizations. So if an object is far away it is represented by the bounding box, if it is closer you start reading the sdf or raying against it.

In regards to motionblending of the meshes, the easy solution is to "blendshape" mix the caches.

A more advanced solutions is to use chops to blend different caches.

The proper solution is to perform custom skinning at rendertime and spitting the mesh out as part of a VRAYprocedural, either caching it on the local drive on a node on the farm or rendering it directly withouth caching to disk. This method does require custom hdk programming and is quite advanced. (You are effectively interpolating bones, not geometry caches). This is what Massive does.

Link to comment
Share on other sites

From my own experience will tell if there is access to a massive better to use it, but Houdini has all the tools for creating crowds.

For many shots it is sufficient to implement a separate HDA: placement, randomization at the time of rendering, texture geometry.

My crowd project in Houdini

Edited by oslo
Link to comment
Share on other sites

  • 2 weeks later...

Here's a question for anyone that has experience making a crowd using particles: How do you get the feet right?

Lets say I have a character with a walk cycle that walks in place. I want to use the particle's movement to control the TZ & TX translation of each character. How can I make the character's feet always stick to the ground when they make contact, and thus avoid any foot slippage?

I just finished a brief inquiry into Massive. As part of the workflow for walking-character crowds, there are tools to create IK constraints on the feet. These will hold the character's feet in place as they contact the ground according to user specified threshold of foot height and speed. I'm interested in how this is handled in Houdini. I want to use particles so I can take advantage of nodes like the interact pop to give the crowd a little bit of intelligence to avoid eachother.

Link to comment
Share on other sites

Here's a question for anyone that has experience making a crowd using particles: How do you get the feet right?

Lets say I have a character with a walk cycle that walks in place. I want to use the particle's movement to control the TZ & TX translation of each character. How can I make the character's feet always stick to the ground when they make contact, and thus avoid any foot slippage?

I just finished a brief inquiry into Massive. As part of the workflow for walking-character crowds, there are tools to create IK constraints on the feet. These will hold the character's feet in place as they contact the ground according to user specified threshold of foot height and speed. I'm interested in how this is handled in Houdini. I want to use particles so I can take advantage of nodes like the interact pop to give the crowd a little bit of intelligence to avoid eachother.

I guess it depends how close they are in camera, in my opinion there is a difference between getting the feet approximately right in a terms of the feet cycle matches the 'speed' of the character and having the feet really stick to the ground plane. Getting it approximately right would be the easiest I guess, I would approach it like this: Calculate how 'fast' a character should walk using your 'default' cycle by multiplying the length of a step or cycle by the number of frames it takes then it's easy to get a distance for a second, a minute or a hour. Now you know this, you use the velocity of the particle (which is in units per second!), bring it to the same scale (second, minute, hour or what ever you like) and you can compute how many times you need to multiply the cycle in order to get it right for the current velocity. Makes sense?

Link to comment
Share on other sites

Makes sense?

Thanks for your input Nick. Yes I agree approximate would be fine, as long as it very close to correct. When I have more time I'll be looking into some of those ideas for creating a math formula that calculates the walk cycle speed based on particle speed. I feel like there might be some way to take the point velocity of the characters geo points for one cycle, and use that to calculate how far the character should move forward. (I think Massive uses this technique or something similar).

Obviously the goal would be to make a procedural tool, where no matter how fast or slow the particles speed, the character still looks like it is walking across the ground plane (without sliding).

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