Samples, Models, Gooch Shading
by Tzu-Chin Wang
Target of toon shading(? |
Gooch Shading + Canny Edge Detection
http://ar3f.in/goochShading.html
Nice sample implemented with js.
1. The model is first rendered with object-space normals
2. Since Canny edge detection is susceptible to noise, I used a median filter to blur out facets
3. Canny edge detection is used on this
4.Then the image is inverted and threshholded (sic) to get black lines
5. This is multiplied with the model rendered on a white background with the Gooch Shader
6. As evident, surfaces with same normals show no edges.
Tachikoma (from Ghost in the Shell) samples
http://seasons.4-sky.com/hobby/tachi.html
Tachikoma |
Models
Online free models
http://tf3dm.com/3d-models/characters/1/obj
Girl model
http://www.mediafire.com/download/klrj8at5tya285q/Beautiful+Girl.7z
We failed to get the correct UV, so used teapot and winnie the pooh in the end.
Gooch Shading
Original Paper
http://www.cs.northwestern.edu/~ago820/SIG98/abstract.html
Gooch Shading
https://lva.cg.tuwien.ac.at/ecg/wiki/doku.php?id=students:gooch
Illustration coloring concept
Tutorial from a Japanese illustrator |
Simulated light source -> single light source on top right or left
Base color(flat color) -> texture color + ambient lighting (or simply ignore ambient light)
Light shadow(flat color) -> single light source + toon shading (2nd layer of flat color)
Heavy shadow(Multiply blend on light shadow area) -> single light source + toon shading (3rd layer of flat color)
In general, the progress of coloring is, first draw the base color, then apply light shadow color with normal blending on it, finally add the dark shadow color upon the light shadow area with multiply blending. It's like reverse of what we do in shading, apply lights to bright up objects. Air brush with alpha is commonly used, making the boundary smoother and has little gradient looking. In the link above, it also shows other popular style of coloring.
Color Blending
Alpha compositing
http://en.wikipedia.org/wiki/Alpha_compositing
C = C_a * alpha_a + C_b * alpha_b * ( 1 - alpha_a )
Layer Composition with alpha (Photoshop)
http://d.hatena.ne.jp/yus_iri/20110921/1316610121
alpha of composite layer = 1 - ( 1 - alpha_f ) * ( 1 - alpha_b )
Color Blend mode on Wiki
http://en.wikipedia.org/wiki/Blend_modes
The Color Blend Mode In Photoshop
http://www.photoshopessentials.com/photo-editing/layer-blend-modes/color-blend-mode/
Multiply blend mode
C = C_a * C_b
M14 Gooch
So this is my version of Gooch, M14 stands for "mutated 14th" which means I tried lots of combination(and most of them failed). It's inspired by illustration coloring concept and color blending describe above. The basic of M14 Gooch is add to two additional blending, one is blending between 3-layer discrete color and normal Gooch, second is blending between the first result and multiplication blending. Resulting a layered color like Toon, but with smoother transition and retain the characteristic of oringinal Gooch shader.
Other links
Cel shader links
http://www.celshader.com/links.html
Michael Arias (Studio Ghibli)
http://en.wikipedia.org/wiki/Michael_Arias
Stylized Depiction in Computer Graphics
http://www.red3d.com/cwr/npr/
Non-Photorealistic, Painterly and 'Toon Rendering by Craig Reynolds
Texture file converter (DDS to PPM)
http://www.office-converter.com/DDS-to-PPM