Friday, 3 December 2010

Non-player Character test for 'In-World War'

I was approached by Graeme Turnbull of the Mill a few months ago to do some visual effects work on a film he is involved with called In-World War.  One of the problems was to create NPC's that had their faces pixelated in world space rather than on the cinema screen.  I struck upon the idea of mapping the pixelation onto their faces in 3D but it wasn't until I saw this interview with Digital Domain artist Justin van der Lek on fxguidetv that I realised how it could be done.

As a 2D artist, the toughest part for me is to get a good animated match of the head in 3D space.  For this example I just downloaded a free head from Turbosquid.  I had overlapping UV problems at first so my brute force approach was to get rid of the eyes which cleared up my UVs but created the eye artifacts in this example.
Once I had projected the frame onto the geometry, I used the Scanline renderer in UV mode to do the processing in 2D.  I then reformated the UVs to a fraction of their original scale, threw in a write node so Nuke wouldn't recover the pixel information, reformated back to the original scale and used another write node so Nuke would no not to filter when remapping, thus loosing all the hard edges.  The result needed a little extra degredation so I threw in a dither filter to introduce some noise.  To give a resolution dropping, struggling processor kind of look I keyframed the first reformat nodes scaling in the curve editor, if we use this in production I will write an expression to do that (not my strong point).
At one point in the film, the character Randy reveals herself to be using the NPC look as a disgise and switches it off on screen.  Because the effect is dynamically linked, it can be turned off gradually by increasing the resolution of the first reformat node to the original scale.  This should tell that story point well without destracting from Randy's actions.