The Poor Man’s Crowd Sim
When the 3D team didn’t have time to make a crowd simulation for the project, it fell to the 2D team. However 2D also didn’t have time, well apart from me. I had just finished working on hologram filter (check here for the results and here for the blog), so my dance card was a bit open.
As the concept was a one-er of a woman going up a lift and hand over a bag to a clone of her self in a cyber punk environment, we wanted a people walking around in the back ground, to liven up the streets of this dystopian city scape a bit. Knowing we were gonna be doing this, we got a few plates of the an actor walking back and forth, so we had that.
Initial Plan
So with the task being set, I started prepping the plates. Initially I thought the plates was of the extra walking on a tread mill, so I was gonna key the plate and use the Nuke particle system to animate and randomise the people walking but as I looked at the plates, I noticed that the actor was walking from left to right then right to left, meaning my original plan won’t work. I had to figure out a new plan.
Plan B
They say no plan survives first contact, so I always make multiple plans. New Plan! Cut up the plates and use that to randomise the people to make it look like it’s random. So I keyed the plates and cut it all up. Append nodes, retimes, frame range nodes galore. Attached them to cards and built a 3D test environment, because the actor was walking back and forth in front of the greenscreen, he didn’t cover the whole frame so had find the boarders of the walk cycles.
It worked. Well mostly, the slight issue was they all started on the same frame. So I just dropped some time offset nodes in and that sorted it and randomised it a lot more.
But it wasn’t perfect.
Plan B i
The main issues I saw in what I had done, was that everyone was wearing the same costume, same hair style, same everything. So I decided to randomise the highlights. This was done using an alpha made from the luminance values, with a grade node doing the colour change. For the randomisation, I went down the expression route, which I felt comfortable with after the hologram filter. Well it didn’t work. Mathematically I couldn’t get it working.
Plan B ii
So with expressions out of the picture, I started look at other options, with the best one being Python. Over the course of four weeks I deep dived into Python, reading the Nuke API as a bedtime story and watching any video that seemed relevant. It took a while and a lot of research and development time. Check out the more in depth look at the python experience here.
Once the code was done and functional I attached it to the node sub-assembly, turned it into a gizmo and set it all up. It looks great and works great for this project.
Over all I feel this was a great experience. The fact that thing went wrong meant that my process evolved, going from a more by the books compositor, to more of a jazz compositor. Working by ear and changing with the flow of the project.