Developing particles crowd-sim with Nuke

I was tasked with development of crowd simulation during our third year film production, As You Command. There’s a scene that requires a CG crowd takes place in a huge hockey rink with action in the foreground. Director James Cunningham gathered every students and lecturers in the class and shot almost 100 green screen plate for this purpose. I immediately thought of using NukeX's particle system for this purpose, and asked the TD who built the hockey rink to give me a locator or a card on every seats. Since he populated the seats with Maya MASH system, everything was in place pretty quickly.

But as bringing this heavy geometry into nuke would make a big hit on performance, I have to bring it into maya first. Turning on frustum view on the rendercam, I was able to isolate out just the area I needed, and bring it back to nuke that way.

The hardest part of this development was actually processing the 97 plates we shot. Under director's instruction we had plates with group or individuals, facing different direction and doing different things (Cheering, talking) for different part of the hockey rink. Luckily the camera was locked off and frame range is quite similar, I was able to replicate the process of cropping and isolating frame range that's usable fairly quickly. So only thing left was keying them, for that purpose I pulled all the cropped out plates from the same category, and put them all in a contactsheet node for bulk keying. This left me with another issue, I needed to crop each and every plate back out so that I can use them as individual particle.

Using python I created a node called ContactSheetCrop (Tool available on nukepedia). When connected with a ContactSheet as its input, will takes in the input resolution, rows/columns and calculate the information crop node needed to crop out an input. After that user can create the “Create Crop Nodes!” button, which will create as many crop nodes as inputs of the ContactSheet node. Other than that as an additional function, user can also check “Connect to Card node” to add a card node under each crop.

The emitter of the particle system is being choose carefully with a GeoSelect node in Nuke, to isolate areas that requires different type of crowd. For instance on screen left crowd needs to look at the action so I pick plates with the actor looking screen right. And for the ones that's closest to the screen, I would use the group plates with more natural crowd interaction. At the end, this is how the node graph looks like.

Previous
Previous

Launch terminal via Python in different linux distros

Next
Next

FFmpeg output from nuke