Toon Shading and Surface Patches

Toon Shading and Surface Patches

Toon Shading and Surface Patches Computer Graphics CSE 167 Lecture 14 CSE 167: Computer graphics • Toon shading – A non‐photorealistic rendering method • Surface patches – Generalization of curves CSE 167, Winter 2018 2 Based on slides courtesy of Jurgen Schulze Toon shading • Also called Cel Shading (“Cel” is short for “celluloid” sheets, on which animation was hand‐drawn) • Gives any 3D model a cartoon‐style look • Emphasizes silhouettes • Discrete steps for diffuse shading, highlights • Non‐photorealistic rendering method (NPR) • Programmable shaders allow real‐time performance Source: Wikipedia CSE 167, Winter 2018 3 Off-line toon shader GLSL toon shader Approach • Start with regular 3D model • Apply two rendering tricks – Silhouette edges • Emphasize pixels with normals perpendicular to viewing direction – Discretized shading • Conventional (smooth) lighting values calculated for each pixel, then mapped to a small number of discrete shades Source: Wikipedia CSE 167, Winter 2018 4 Silhouette edges • Silhouette edge detection – Compute dot product of viewing direction v and normal n – Use cutoff value for edge: • If edge < 0.01 draw black, else do not change pixel color – Use 1D texture to define edge ramp for smoother edgeramp transition 1 uniform sample1D edgeramp; e = texture1D(edgeramp,edge); 0 edge CSE 167, Winter 2018 5 Discretized shading • Compute diffuse and specular shading • Discretize shading – Approaches • If then else tree comparing values against thresholds if (diffuse < A) diffuse = 0.0; else if (diffuse < B) diffuse = B; else if (diffuse < C) diffuse = C; else diffuse = D; • 1D textures to map diffuse and specular shading to colors uniform sampler1D diffuseramp; uniform sampler1D specularramp; color = e * (texture1D(diffuse,diffuseramp) + texture1D(specular,specularramp)); CSE 167, Winter 2018 6 Toon shading demo http://www.bonzaisoftware.com/gldemos/non‐photorealistic‐rendering/ CSE 167, Winter 2018 7 Surface patches • Bilinear patch • Bicubic Bézier patch CSE 167, Winter 2018 8 Curved surfaces • Curves – Described by a 1D series of control points – A function x(t) – Segments joined together to form a longer curve • Surfaces – Described by a 2D mesh of control points – Parameters have two dimensions (two dimensional parameter domain) – A function x(u,v) – Patches joined together to form a bigger surface CSE 167, Winter 2018 9 Parametric surface patch • x(u,v) describes a point in space for any given (u,v) pair – u,v each range from 0 to 1 v x(0.8,0.7) z u 1 y v x 0 u 1 2D parameter domain CSE 167, Winter 2018 10 Parametric surface patch • x(u,v) describes a point in space for any given (u,v) pair – u,v each range from 0 to 1 v x(0.8,0.7) x(0.4,v) z u x(u,0.25) 1 y v x 0 u 1 • Parametric curves 2D parameter domain – For fixed u0 , have a v curve x(u0,v) – For fixed v0 , have a u curve x(u,v0) – For any point on the surface, there are a pair of parametric curves through that point CSE 167, Winter 2018 11 Tangents • The tangent to a parametric curve is also tangent to the surface • For any point on the surface, there are a pair of (parametric) tangent vectors • Note: these vectors are not necessarily perpendicular to each other x v v x u u CSE 167, Winter 2018 12 Surface normal • Normal is cross product of the two tangent vectors r x x n(u,v) (u,v) (u,v) Note: order matters u v • Typically,Typically we are we interested desire in the a un unitit normal, normal, so we need soto normalize we need to unitize x r * x x r n (u,v) (u,v) (u,v) v u v n r * r n (u,v) x n(u,v) r * n (u,v) u CSE 167, Winter 2018 13 Bilinear patch • Control mesh with four points p0, p1, p2, p3 • Compute x(u,v) using a two‐step construction scheme p2 p3 v p0 p1 u CSE 167, Winter 2018 14 Bilinear patch (step 1) • For a given value of u, evaluate the linear curves on the two u‐direction edges • Use the same value u for both q1 = Lerp(u, p2, p3) p2 q1 p3 v q0 = Lerp(u, p0, p1) p0 q 0 p1 u CSE 167, Winter 2018 15 Bilinear patch (step 2) • Consider that q0, q1 define a line segment • Evaluate it using v to get x x Lerp(v,q0 ,q1 ) p2 q1 p x 3 v p0 q 0 p1 u CSE 167, Winter 2018 16 Bilinear patch • Combining the steps, we get x(u,v) Lerp(v, Lerp(u,p0 ,p1 ), Lerp(u,p2 ,p3 )) p2 q1 p x 3 v p0 q 0 p1 u CSE 167, Winter 2018 17 Bilinear patch • Try the other order • Evaluate first in the v direction r0 Lerp(v,p0 ,p2 ) r1 Lerp(v,p1,p3 ) p2 p3 r0 v r1 p0 p1 u CSE 167, Winter 2018 18 Bilinear patch • Consider that r0, r1 define a line segment • Evaluate it using u to get x x Lerp(u,r0 ,r1 ) p2 p x 3 r0 v r1 p0 p1 u CSE 167, Winter 2018 19 Bilinear patch • Formula for the v direction first x(u,v) Lerp(u, Lerp(v,p0 ,p2 ), Lerp(v,p1,p3 )) p2 p x 3 r0 v r1 p0 p1 u CSE 167, Winter 2018 20 Bilinear patch • Patch geometry is independent of the order of u and v x(u,v) Lerp(v, Lerp(u,p0 ,p1 ), Lerp(u,p2 ,p3 )) x(u,v) Lerp(u, Lerp(v,p0 ,p2 ), Lerp(v,p1,p3 )) p2 q1 p x 3 r0 v r1 p0 q 0 p1 u CSE 167, Winter 2018 21 Bilinear patch • Weighted sum of control points • Bilinear polynomial • Matrix form p0 p2 1 v x(u,v) 1 u u p1 p3 v CSE 167, Winter 2018 22 Bilinear patch • Properties – Patch interpolates the control points – The boundaries are straight line segments – If all 4 points of the control mesh are co‐planar, the patch is flat – If the points are not co‐planar, we get a curved surface • Saddle shape (hyperbolic paraboloid) – The parametric curves are all straight line segments • A (doubly) ruled surface: has (two) straight lines through every point – Not terribly useful as a modeling primitive CSE 167, Winter 2018 23 Bicubic Bézier patch • Grid of 4x4 control points, p0 through p15 • Four rows of control points define Bézier curves along u p0,p1,p2,p3; p4,p5,p6,p7; p8,p9,p10,p11; p12,p13,p14,p15 • Four columns define Bézier curves along v p0,p4,p8,p12; p1,p6,p9,p13; p2,p6,p10,p14; p3,p7,p11,p15 p12 p13 p 8 p v 9 p p4 14 p5 p15 p0 p10 p1 p11 p6 u p7 p2 p3 CSE 167, Winter 2018 24 Bicubic Bézier patch (step 1) • Evaluate four u‐direction Bézier curves at scalar value u [0..1] q0 Bez(u,p0 ,p1,p2 ,p3 ) q Bez(u,p ,p ,p ,p ) • Get points q0,q1,q2,q3 1 4 5 6 7 q2 Bez(u,p8 ,p9 ,p10 ,p11 ) p12 p13 q3 q3 Bez(u,p12 ,p13,p14 ,p15 ) p8 v p9 p p14 4 p p15 5 q2 q p 1 p 0 p 10 1 p p 11 q0 6 u p7 p2 p3 CSE 167, Winter 2018 25 Bicubic Bézier patch (step 2) • Points q0,q1,q2,q3 define a Bézier curve • Evaluate it at v [0..1] x(u,v) Bez(v,q0 ,q1,q2 ,q3 ) p12 p13 q3 p8 v p9 x p p14 4 p p15 5 q2 q p 1 p 0 p 10 1 p p 11 q0 6 u p7 p2 p3 CSE 167, Winter 2018 26 Bicubic Bézier patch q Bez(u,p ,p ,p ,p ) r Bez(v,p ,p ,p ,p ) • Same result in 0 0 1 2 3 0 0 4 8 12 q1 Bez(u,p4 ,p5 ,p6 ,p7 ) r1 Bez(v,p1,p5 ,p9 ,p13 ) either order q2 Bez(u,p8 ,p9 ,p10 ,p11 ) r2 Bez(v,p2 ,p6 ,p10 ,p14 ) q Bez(u,p ,p ,p ,p ) r Bez(v,p ,p ,p ,p ) (evaluate u 3 12 13 14 15 3 3 7 11 15 x(u,v) Bez(v,q ,q ,q ,q ) x(u,v) Bez(u,r ,r ,r ,r ) before v or 0 1 2 3 0 1 2 3 p 12 p q vice versa) r0 13 3 r1 p8 v p9 x p p14 4 p p15 5 q2 r q 2 r3 p 1 p 0 p 10 1 p p 11 q0 6 u p7 p2 p3 CSE 167, Winter 2018 27 Bicubic Bézier patch, matrix form u 3 v3 1331 u2 v2 3 630 U V B BT u v Bez 33 00 Bez 1 1 1000 p p p p C BT G B 0 x 1x 2 x 3x x Bez x Bez p p p p T 4 x 5x 6 x 7 x Cy BBezGyBBez Gx , Gy = L , Gz = L T p8 x p9x p10x p11x Cz BBezGzBBez p12x p13x p14 x p15x T V CxU T C stores the coefficients of the bicubic equation xu,v V CyU G stores the control point geometry T BBez is the basis matrix (Bézier basis) V CzU U and V are the vectors formed from the powers of u and v CSE 167, Winter 2018 28 Bicubic Bézier patch • Properties – Convex hull • Any point on the surface will fall within the convex hull of the control points – Interpolates 4 corner points – Approximates other 12 points, which act as “handles” – The boundaries of the patch are the Bézier curves defined by the points on the mesh edges – The parametric curves are all Bézier curves CSE 167, Winter 2018 29 Tangents of a Bézier patch • Recall parametric curves x(u,v0) and x(u0,v), where v0 and u0 are fixed, respectively • Tangents to surface = tangents to parametric curves • Tangents are partial derivatives of x(u,v) • Normal is cross product of the tangents x p p13 12 v v0 p8 v p9 x p14 p4 p5 x p15 u p0 p10 p1 p11 p6 u0 u p7 p2 p3 CSE 167, Winter 2018 30 Tangents of a Bézier patch q0 Bez(u,p0 ,p1,p2 ,p3 ) r0 Bez(v,p0 ,p4 ,p8 ,p12 ) q1 Bez(u,p4 ,p5 ,p6 ,p7 ) r1 Bez(v,p1,p5 ,p9 ,p13 ) q2 Bez(u,p8 ,p9 ,p10 ,p11 ) r2 Bez(v,p2 ,p6 ,p10 ,p14 ) q3 Bez(u,p12 ,p13,p14 ,p15 ) r3 Bez(v,p3,p7 ,p11,p15 ) x x (u,v) Bez(v,q ,q ,q ,q ) (u,v) Bez(u,r ,r ,r ,r ) v 0 1 2 3 u 0 1 2 3 x p13 v p12 r0 q r1 3 p8 v p9 x p14 p4 x p5 p15 q2 u r q 2 r3 p 1 p 0 p 10 1 p p 11 q0 6 u p7 p2 p3 CSE 167, Winter 2018 31 Tessellating a Bézier patch • Uniform tessellation is most straightforward – Evaluate points on a grid of u,v coordinates – Compute tangents at each point, take cross product to get per‐ vertex normal – Draw triangle strips with glBegin(GL_TRIANGLE_STRIP) • Adaptive tessellation/recursive subdivision – Potential for “cracks” if patches on opposite sides of an edge divide differently – Tricky to get right, but can be done CSE 167, Winter 2018 32 Piecewise Bézier surface • Lay out grid of adjacent meshes of control points • For C0 continuity, must share points on the edge – Each edge of a Bézier patch is a Bézier curve based only on the edge mesh points – So if adjacent meshes share edge points, the patches will line up exactly • But, results in a crease Grid of control points CSE 167, Winter 2018Piecewise Bézier surface 33 C1 continuity • We want the parametric curves that cross each edge to have C1 continuity – So the handles must be equal‐and‐opposite across the edge CSE 167, Winter 2018 34 Modeling with Bézier patches • Original Utah teapot, from Martin Newell's PhD thesis, consisted of 28 Bézier patches.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    35 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us