View Full Version : How to achieve good cell-shading?

03 March 2011, 05:56 PM
Hi, I'm working on a school project and I would like to experiment a bit with a cel-shaded look. I've messed arount with Ink & Paint a bit and searched for tutorial and custom shaders, but I'm a bit lost since there is a great variety of techniques. I was wondering if someone could point me into a direction, a good tutorial, something that'd help me achieve the look I want for my project.

I'd like the cel-shading to look somewhat like Prince of Persia (2008):

Here's an artwork of my character (I've basically rendered the t-stand and coloured over it). That's the look I'd like to give to the whole animation:

3D Render for reference I guess:

Also, here's two viewport screenshots of my scene, to give a basic idea of what it would look like:

Thanks for the input!

03 March 2011, 02:07 PM
Assuming you're using 3DS Max, you can use falloff maps in shadow/highlight mode to drive the way you want your light/shadow bits to look. As for the lines themselves, ink and paint should offer you quite a bit in the way of control over line thickness. The painterly-looking color map is best simply painted into the texture.

Ideally you'd do all of this in compositing, as described in Pixar's paper as described here:

What they describe is really a fancy-pants way of describing the following workflow:

- Render multiple passes. The first contains the color and alpha. The next contains a black/white map to define the thickness of the edges. The third is a collection of unique colors seperating regions that should be defined by a contour.
- Generate lines in post by finding the edges of the ID pass and alpha map with some sort of edge detection filter such as laplacian
- Dilate/erode the lines using the thickness map to drive the dilate amount.
- Comp it all together and you're done :)

You can paint your thickness map using the Vertex Paint modifier. For less-important scene elements, you can just use a world-space noise map to drive the line thickness.
Region IDs can be assigned by splitting the edges of your model at the seams and assigning a constant vertex color to the split-off object.

The advantage of doing it in comp is that you have fast control over the look on a shot-to-shot basis without having to re-render the scene.

03 March 2011, 06:55 AM
Or you could just use contour shaders? Don't know if you're familiar with mental ray, but they're terribly easy to use, and easily customized. Does mental ray still ship with Max? If they don't have the contour shaders in Max yet, please disregard this post.

CGTalk Moderation
03 March 2011, 06:55 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.