Paper Cut-Outs
I've always found myself fascinated with non-photorealistic rendering. For this project, I wanted to build a pipeline that combines the power of 3D animation with the artistic expression of a non-photorealistic material. I chose paper cut-out animation because I found the layering aspect interesting.
This project was a final project for my Advanced Computer Animation class (CS1280 taught by Barbara Meier).
Goals
Render a 3D animated scene as paper cut outs
Combine the benefits of 3D animation with the artistic expression of paper cut out animation. Cut out animation is a broad term, encompassing several different styles. Research difference aesthetics and pick one that would translate best to a 3D workflow. Leverage scripting and After Effects compositing to achieve the layered look.
Build an easy pipeline for animators
Design and build a pipeline that would fit seamlessly into the existing 3D pipeline. Since the modeling and animation is all done in Maya, a 3D animation tool, it makes sense to fit this paper cut out workflow into the traditional 3D pipeline.
Leveraging 3D Animation
I wanted to keep as much of the traditional 3D animation workflow as I could, so new users did not have to relearn an entire pipeline just to use my system. As such, modeling, animating, and lighting have remained untouched. This allows the animator to animate their models in 3D space. It makes something like character animation much easier- turning a head is a simple manipulation of the rig. It also allows animators to use physics simulations in their piece. These two videos above show simple animations that would take hours with 2D workflows. In the video to the left, I used an nCloth simulator to blow the leaves off the tree. It was much easier and faster to do this than to hand animate every leaf blowing away. In the video to the right, I made a simple animation of a mobile rotating. The shot shows some perspective and the objects rotating around the Y-axis. In regular 2D animation, this simple turntable animation could be quite complex. However, animating in Maya took less than 5 minutes.
Developing a Paper Cutout Style
There were several styles of paper cutouts, but I ultimately settled on a style similar to the image on the left- simple shapes that are layered on top of each other correlate well to render layers, an existing concept in 3D animation.
Building the Pipeline
There are 3 main steps where this pipeline deviates from the traditional pipeline- shading, rendering, and compositing. These 3 steps transform the 3D render into a paper-cut out style animation.
Shading
The "paper shader" is a ramp shader (essentially a toon shader) but with one difference. Each bucket of color is a layered texture with 2 attributes- a file (the paper texture) and a color (the paper color). I wrote a Python script that generates this shading network. The user selects an object and runs my script, similar to how a user might select an object and apply a material. The script lets the user pick an image for the paper texture and however many colors they would like. As soon as the user hits "Create Shader", the shading network is created using the input the user has given.
Rendering
Before hitting render, a user should select all the objects that they want to be placed into different layers. I created a script that takes everything a user has selected and generates individual render layers. Each object has 2 render layers: one layer with only the object in it and one mask layer. The mask layer is essential to provide an accurate final image. Imagine rendering a bike frame with tires. The frame wraps around the tire, so part of the bike should be seen, but part is obscured by the tire. Simply placing one object layer on top of the other is not enough- you'll get the entirety of the bike frame over the tire, instead of only part of it. Once this script has generated 2 layers for each object selected, the user is free to render the current frame or batch render normally.
Compositing
Once the render is complete, the user can import each frame sequence into a composition in After Effects. I wrote a script for After Effects that masks each object layer with its respective mask render sequence. It also generates a drop shadow and ripped paper edges for each object layer. I wasn't satisfied with After Effects' drop shadow effect, so I created my own with fractal noise. This gives the impression that the paper is bending and curling in areas, so the shadows have some variation in color.
Reflections
Looking Back
Ultimately, while the end result is nice, the render time is a huge problem. Currently, any scene requires 2*n render layers (where n is the number of objects). There is also the “shower door problem”, where the shadows and edges seem to swim when an object is moving.
Moving Forward
There is probably a more intelligent way of generating the render layers. In fact, there is probably one that could move generating the fractal noise shadows/ripped paper edges to the Maya side and cut down on render layers. Doing so would solve the “shower door problem”. I'd also like to experiment with manipulating the lighting to show different effects (a paper light beam could create interesting compositions...). In addition, I want to improve the shading script to allow for multiple textures, instead of just one and a variety of colors.