CS 4620 Final Exam. (a) Is a circle C 0 continuous?

Similar documents
CS 130 Exam I. Fall 2015

For each question, indicate whether the statement is true or false by circling T or F, respectively.

CS 4620 Midterm, March 21, 2017

Curves D.A. Forsyth, with slides from John Hart

CSCI 4620/8626. Coordinate Reference Frames

CS 130 Final. Fall 2015

Rasterization. COMP 575/770 Spring 2013

3D Modeling Parametric Curves & Surfaces. Shandong University Spring 2013

CS 130 Exam I. Fall 2015

6.837 Introduction to Computer Graphics Final Exam Tuesday, December 20, :05-12pm Two hand-written sheet of notes (4 pages) allowed 1 SSD [ /17]

OpenGL Graphics System. 2D Graphics Primitives. Drawing 2D Graphics Primitives. 2D Graphics Primitives. Mathematical 2D Primitives.

CS337 INTRODUCTION TO COMPUTER GRAPHICS. Describing Shapes. Constructing Objects in Computer Graphics. Bin Sheng Representing Shape 9/20/16 1/15

Lecture 25: Bezier Subdivision. And he took unto him all these, and divided them in the midst, and laid each piece one against another: Genesis 15:10

3D Modeling Parametric Curves & Surfaces

CS559 Computer Graphics Fall 2015

Curves and Surfaces. CS475 / 675, Fall Siddhartha Chaudhuri

Spring 2012 Final. CS184 - Foundations of Computer Graphics. University of California at Berkeley

CS123 INTRODUCTION TO COMPUTER GRAPHICS. Describing Shapes. Constructing Objects in Computer Graphics 1/15

COMPUTER AIDED ENGINEERING DESIGN (BFF2612)

Surface shading: lights and rasterization. Computer Graphics CSE 167 Lecture 6

Central issues in modelling

Homework #2. Hidden Surfaces, Projections, Shading and Texture, Ray Tracing, and Parametric Curves

INF3320 Computer Graphics and Discrete Geometry

Rasterization. CS4620/5620: Lecture 12. Announcements. Turn in HW 1. PPA 1 out. Friday lecture. History of graphics PPA 1 in 4621.

Rasterization. CS 4620 Lecture Kavita Bala w/ prior instructor Steve Marschner. Cornell CS4620 Fall 2015 Lecture 16

Curves. Computer Graphics CSE 167 Lecture 11

Computergrafik. Matthias Zwicker Universität Bern Herbst 2016

9. Three Dimensional Object Representations

An introduction to interpolation and splines

Introduction to Computer Graphics

Know it. Control points. B Spline surfaces. Implicit surfaces

The graphics pipeline. Pipeline and Rasterization. Primitives. Pipeline

Sung-Eui Yoon ( 윤성의 )

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

From curves to surfaces. Parametric surfaces and solid modeling. Extrusions. Surfaces of revolution. So far have discussed spline curves in 2D

Rasterization. CS4620 Lecture 13

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

CS-184: Computer Graphics

Pipeline and Rasterization. COMP770 Fall 2011

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

Parametric Curves. University of Texas at Austin CS384G - Computer Graphics

Computergrafik. Matthias Zwicker. Herbst 2010

Parameterization of triangular meshes

Parameterization. Michael S. Floater. November 10, 2011

CSE 167: Introduction to Computer Graphics Lecture #11: Bezier Curves. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2016

COMP 175 COMPUTER GRAPHICS. Ray Casting. COMP 175: Computer Graphics April 26, Erik Anderson 09 Ray Casting

Physically-Based Modeling and Animation. University of Missouri at Columbia

CHAPTER 1 Graphics Systems and Models 3

We have already studied equations of the line. There are several forms:

notes13.1inclass May 01, 2015

Multi-level Partition of Unity Implicits

Homework #2. Shading, Projections, Texture Mapping, Ray Tracing, and Bezier Curves

Textures and normals in ray tracing

Computer Graphics CS 543 Lecture 13a Curves, Tesselation/Geometry Shaders & Level of Detail

Mathematical Tools in Computer Graphics with C# Implementations Table of Contents

Curves and Curved Surfaces. Adapted by FFL from CSE167: Computer Graphics Instructor: Ronen Barzel UCSD, Winter 2006

First of all, we need to know what it means for a parameterize curve to be differentiable. FACT:

Midterm Exam Fundamentals of Computer Graphics (COMP 557) Thurs. Feb. 19, 2015 Professor Michael Langer

Parametric Curves. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell

We have already studied equations of the line. There are several forms:

Curves & Surfaces. Last Time? Progressive Meshes. Selective Refinement. Adjacency Data Structures. Mesh Simplification. Mesh Simplification

Differential Geometry: Circle Patterns (Part 1) [Discrete Conformal Mappinngs via Circle Patterns. Kharevych, Springborn and Schröder]

1. (10 pts) Order the following three images by how much memory they occupy:

The exam begins at 2:40pm and ends at 4:00pm. You must turn your exam in when time is announced or risk not having it accepted.

CS770/870 Spring 2017 Ray Tracing Implementation

Intro to Modeling Modeling in 3D

TDA362/DIT223 Computer Graphics EXAM (Same exam for both CTH- and GU students)

Design considerations

CSE 167: Introduction to Computer Graphics Lecture #13: Curves. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2017

Revision Problems for Examination 2 in Algebra 1

Point Cloud Filtering using Ray Casting by Eric Jensen 2012 The Basic Methodology

Computer Graphics Curves and Surfaces. Matthias Teschner

University of California, Berkeley

Solution Notes. COMP 151: Terms Test

Lecture IV Bézier Curves

Computer Graphics I Lecture 11

Tentti/Exam Midterm 2/Välikoe 2, December

Background for Surface Integration

Computer Graphics. - Rasterization - Philipp Slusallek

CS 543: Computer Graphics. Rasterization

Topics and things to know about them:

Generalized barycentric coordinates

End-Term Examination

GEOMETRIC TOOLS FOR COMPUTER GRAPHICS

Rendering Curves and Surfaces. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

Mach band effect. The Mach band effect increases the visual unpleasant representation of curved surface using flat shading.

Free-Form Deformation (FFD)

From Vertices to Fragments: Rasterization. Reading Assignment: Chapter 7. Special memory where pixel colors are stored.

SUMMARY. CS380: Introduction to Computer Graphics Ray tracing Chapter 20. Min H. Kim KAIST School of Computing 18/05/29. Modeling

Information Coding / Computer Graphics, ISY, LiTH. Splines

Spline Surfaces, Subdivision Surfaces

Intro to Curves Week 1, Lecture 2

Free-Form Deformation and Other Deformation Techniques

ECE 600, Dr. Farag, Summer 09

EF432. Introduction to spagetti and meatballs

CSE 167: Introduction to Computer Graphics Lecture 12: Bézier Curves. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013

Curve and Surface Basics

Direction Fields; Euler s Method

Curves and Surfaces Computer Graphics I Lecture 10

CSE528 Computer Graphics: Theory, Algorithms, and Applications

Transcription:

CS 4620 Final Exam Wednesday 9, December 2009 2 1 2 hours Prof. Doug James Explain your reasoning for full credit. You are permitted a double-sided sheet of notes. Calculators are allowed but unnecessary. Problem 1: Continuity (8 pts) You have learned about parametric and geometric continuity. For each 2D curve, answer the continuity query as correctly as possible, and provide a brief explanation: (a) Is a circle C 0 continuous? Answer: Parametric C continuity refers to the continuity of the parameterization used. However, since no parameterization has been specified, the question is ambiguous circle parameterizations may or may not be C 0. (b) Is a circle G 0 continuous? Answer: Geometric G continuity refers to the continuity of the geometric shape. Yes the circle is G 0 continuous because the curve is connected (unbroken) everywhere. (c) Is a circle C continuous? Answer: Again it is unclear, since no parameterization has been specified. Circle parameterizations may or may not be C 0. (d) Is a circle G continuous? Answer: Yes, because the circle is infinitely smooth. It can also be parameterized by (x(t), y(t)) = (sin(t), cos(t)) which is infinitely differentiable. (e) Is a square C 0 continuous? Answer: Unclear, since no parameterization has been specified. Parameterizations of the square may or may not be C 0. (f) Is a square G 0 continuous? Answer: Yes, because the curve is continuous/unbroken everywhere. 1

(g) Is a square C 1 continuous? Answer: Unclear, since no parameterization has been specified. Parameterizations may or may not be C 1, even though there are corners. (h) Is a square G 1 continuous? Answer: No, because tangents to the geometric curve have direction discontinuities at the corners. Problem 2: View Frustum Culling (10 pts) View frustum culling is a technique to avoid drawing (or cull) geometry which is outside the view frustum. To assist with culling, assume that each object has a bounding sphere with object-frame center position, c o = (c x, c y, c z, 1) T, and radius R o. Imagine that you know you have an [l, r] [b, t] [f, n] orthographic viewing volume, and you know each of the matrices (M vp, M orth, M cam, M m ) used to construct the orthographic view transformation which maps points from object space to screen space: p s = x s y s z c 1 = M vp M orth M cam M m p o = M Derive a simple mathematical test to determine if an object is safely off screen. x o y o z o 1. Answer: It suffices to transform the bounding sphere position to the camera frame, and consider whether or not the sphere intersects the view volume. You can assume that the modeling transformation M m is a rigid-body transformation, and thus that M cam M m is a rigid-body transformation that maps spheres to spheres. Given the sphere center in the camera frame, X c cam = Y Z = M camm m c o, (1) 1 we can not cull the geometry if it is within the R = R o -inflated view volume, [l R, r + R] [b R, t + R] [f R, n + R]. Therefore we must draw the geometry only if the following expression is true: (l R X r + R) AND (b R Y t + R) AND (f R Z n + R). (2) Extra: If you did not assume that M m was a rigid-body transformation, then it suffices to consider the comparison with but replacing the R by sr, where s is the two-norm of the 3-by-3 rotation-like block of M m. 2

Problem 3: Rasterizing Curves (15 pts) In this question you will extend Bresenham s midpoint algorithm for line rasterization to build a DDA-based rasterizer for a quadratic Bézier curve. For simplicity you may assume that the curve is parameterized in the form y(x) = y 0 B 0 (x) + y 1 B 1 (x) + y 2 B 2 (x), where B i (x) = ( ) 2 x i (1 x) 2 i i are the quadratic Bernstein polynomials. You may even assume that the slope of the curve satisfies 0 y (x) 1. (a) First, derive the equations needed to use forward differencing to evaluate the Bézier curve at unit x = 1 spacings without unnecessary multiplication. (Hint: First convert y(x) to monomial form.) Answer: First convert to monomial form as suggested: y(x) = y 0 B 0 (x) + y 1 B 1 (x) + y 2 B 2 (x) (3) = y 0 (1 x) 2 + y 1 2x(1 x) + y 2 x 2 (4) = y 0 (1 2x + x 2 ) + y 1 (2x 2x 2 ) + y 2 x 2 (5) = (y 0 2y 1 + y 2 )x 2 + 2(y 1 y 0 )x + y 0 (6) ax 2 + bx + c (7) Forward differences are easier than for the cubic case done in class. The first difference is and the second difference is y(x) = y(x + 1) y(x) (8) = a[(x + 1) 2 x 2 ] + b[(x + 1) x] (9) = a[2x + 1] + b (10) = 2ax + (a + b), (11) 2 y(x) = y(x + 1) y(x) (12) = 2a(x + 1) 2ax (13) = 2a, (14) with all higher differences zero. In summary, we must update y each increment by just adding 2a to it, y(x + 1) = y(x) + 2a, (15) and we update y by adding y(x), y(x + 1) = y(x) + y(x). (16) (b) Second, provide pseudocode for a simple DDA rasterizer from x = x 0 to x = x 1. You need not consider shading, attribute interpolation, or antialiasing you only need to turn on pixels using appropriate calls to output(x,y). 3

Answer: The pseudocode is identical to the original midpoint code, except with the line-based DDA update for y replaced by the forward-difference update for the Bézier curve. Recall that for line rasterization, each time we incremented x or y by 1, we updated the residual variable, d = mx + b - y, by m or 1, respectively: x = ceil(x0) y = round(m*x + b) d = m*(x + 1) + b - y while (x < floor(x1)) if (d > 0.5) y += 1 d -= 1 x += 1 d += m output(x, y) The appropriate d variable for our problem is d = d(x, y) = y(x) y. (17) Incrementing y will still decrement d by 1, however now incrementing x will use the forwarddifference update, y(x). The pseudocode is as follows: // INIT: a2 = 2*a; x = ceil(x0) f = a*x*x + b*x + c; /// y(x) Df = 2*a*x + (a+b); /// Delta y(x) y = round( f ) // Evaluate d at x+1, first computing y(x+1) and Delta y(x+1): f += Df; Df += a2; d = f - y; /// = y(x+1) - y while (x < floor(x1)) if (d > 0.5) y += 1 d -= 1 x += 1 d += Df; Df += a2; output(x, y) 4

Problem 4: Tracing rays through hexagonal subdivisions (12 pts) You have seen how to trace a ray through a square grid in 2D, and even a voxel grid in 3D. In this question you will consider 2D hexagonal grids. Analogous to rectangular grids, assume that the hexagonal cells have an (i, j) indexing as shown in the figure. Assume that each hexagon s parallel edges are 2h apart (see figure). Propose an efficient pseudocode implementation to trace the ray through an infinite hexagonal subdivision, making calls to output(i,j) indices of hexagons traversed. For simplicity, assume that the ray r(t) = e + tv, t 0, starts at the center of cell (i, j) = (0, 0) as shown in the figure. Ignore boundaries. (-2,3) (0,2) (2,1) (-1,2) (1,1) (3,0) (-2,2) (0,1) (2,0) (-1,1) (1,0) (3,-1) (-2,1) (2,-1) (0,0) (-1,0) (1,-1) (3,-2) (-2,0) (0,-1) (2,-2) (-1,-1) (1,-2) (3,-3) (-2,-1) (0,-2) (2,-3) (-1,-2) (1,-3) (3,-4) 2h Answer: There are three families of parallel lines associated with the normal directions n 0 = (sin(30 o ), cos(30 o )) T (18) n 1 = (sin(90 o ), cos(90 o )) T = (1, 0) (19) n 2 = (sin(150 o ), cos(150 o )) T. (20) The signed time t to travel a distance h in each of these directions is given by τ 0 = h/v T n 0 (21) τ 1 = h/v T n 1 (22) τ 2 = h/v T n 2. (23) Observe that crossing edges along each of the directions results in an (i, j) cell index update, (i, j)+δ, given by From our starting point at the center of cell (0, 0), we can initialize t-distances to the nearest edges as δ 0 = sgn(τ 0 )(1, 0) (24) δ 1 = sgn(τ 1 )(0, 1) (25) δ 2 = sgn(τ 2 )( 1, 1). (26) t 0 = τ 0 (27) t 1 = τ 1 (28) t 2 = τ 2. (29) We will first cross an edge in the direction i given by i = arg min k t k, at which time we update t i to be 2 τ i, but the two other directions must have their times updated too. By observation, the update rules (for j i) are t j ( t j + τ j ) (mod 2 τ j ). 5

Pseudocode to implement this HEX-WALK is as follows (multiplies by 2 can be avoided using additional precomputed variables): // INITIALIZE n_0 =...; n_1 =...; n_2 =...; tau_0 =...; tau_1 =...; tau_2 =...; delta_0 =...; delta_1 =...; delta_2 =...; Dt_0 =...; Dt_1 =...; Dt_2 =...; (I,J) = (0,0); output(i,j); while (continue walk) { // Find crossed edge: i = argmin_k Dt_k; // Update cell indices: (I,J) += delta_i; output(i,j); } // Update Dt values: for(j=0..2) { if(j==i) Dt_i = 2 tau_i ; else Dt_j = (Dt_j + tau_j ) (mod 2 tau_j ); } } 6

Problem 5: Phong Tesselation (20 pts) Recall that Phong Shading interpolates vertex normals across a triangle for smooth shading on low-resolution meshes, i.e., the unnormalized surface normal at barycentric coordinate (u, v, w) (where w = 1 u v) is approximated by barycentrically interpolated vertex normals, n (u, v) = un i + vn j + wn k, where the unit vertex normals are n i, n j and n k. Of course, since each triangle is still planar, the piecewise planar shape is still apparent at silhouettes. p(u, v) = up i + vp j + wp k, (30) Recently, Boubekeur and Alexa [SIGGRAPH Asia 2008] introduced Phong Tesselation as a simple way to use vertex normals to deform a triangle mesh to have smoother silhouettes (see Figures 1 and 2). In the following, you will derive their formula for a curved triangle patch, p (u, v), and analyze surface continuity. Figure 1: Phong Tesselation Examples: A triangle deformed with different vertex normals. Triangle Mesh Phong Shading Phong Shading and Tesselation Answer the following four questions: Figure 2: Phong Tesselation (a) Consider the plane passing though vertex i s position, p i, and sharing the same normal, n i. Give an expression for the orthogonal projection of a point p onto vertex i s plane, hereafter denoted by π i (p). 7

Answer: The component of v = (p p i ) along the normal is v T n i. Therefore the component along the surface is v n i n T i v, and so π i (p) = p i + v n i n T i v (31) = p n i n T i (p p i ) (32) (b) The deformed position p (u, v) is simply the barycentrically interpolated projections of the undeformed point p(u, v) onto the three vertex planes, i.e., the barycentric interpolation of π i (p(u, v)), π j (p(u, v)), and π k (p(u, v)). Derive a polynomial expression for p (u, v) in terms of u, v and w you can also write it only in terms of u and v but it is messier. (Hint: Express your answer in terms of projected-vertex positions, such as π i (p j ).) Answer: The provided definition says that p (u, v) = u π i (p(u, v)) + v π j (p(u, v)) + w π k (p(u, v)) (33) = u π i (up i + vp j + wp k ) + (34) v π j (up i + vp j + wp k ) + (35) w π k (up i + vp j + wp k ) (36) = u 2 π i (p i ) + uv π i (p j ) + uw π i (p k ) + (37) uv π j (p i ) + v 2 π j (p j ) + vw π j (p k ) + (38) uw π k (p i ) + vw π k (p j ) + w 2 π k (p k ) (39) = u 2 p i + v 2 p j + w 2 p k + (40) uv( π i (p j ) + π j (p i )) + (41) vw( π j (p k ) + π k (p j )) + (42) uw( π k (p i ) + π i (p k )). (43) (c) What degree is this triangular bivariate polynomial patch, p (u, v)? Answer: From our derived formulae, it is clear that p (u, v) is a quadratic (or degree-2) polynomial patch. (Note: It is incorrect to state that it is a quadratic patch since it has 3 control points supposedly in analogy with the 1D curve setting. Note that a planar triangle patch (30) also has 3 control points, but is degree one.) 8

(d) Given a triangle mesh that is converted to these polynomial patches, consider the parametric continuity of the resulting spline surface: (i) Show that the surface is G 0 continuous. Answer: Clearly the quadratic patch is G 0 continuous within the triangle domain, so it remains to show that it is continuous across patch boundaries. First, observe that the patch interpolates vertices. Second, the fact that there are no cracks across edges follows from the fact that for (u, v) coordinates on the edge the function p (u, v) only depends on the position and normal values at the end-points of the edge. For example, on the edge with w = 0 we have p (u, v) = u 2 p i + v 2 p j + uv( π i (p j ) + π j (p i )) (44) where π i only depends on the position and normal of vertex i. Therefore patches on either side of the edge will share the same interface curve values, and the surface is G 0 continuous. (ii) Show that the surface is not G 1 continuous. Answer: Clearly the quadratic patch is G 1 continuous within the triangle domain, so it suffices to consider the patch boundaries. We already know that edge-adjacent patches will share the same interface curve, and therefore they will have the same directional derivative along the patch edge. Therefore, we can try to show that the normals along the edges may differ by considering derivatives along directions not parallel to the edge since the normal is a cross product of such partial derivatives. If this derivative depends on the opposite vertex data, then the normals will not (in general) be continuous across the edge. Another way to proceed is to consider the patch normal at a vertex, to see that it depends on more than just the position/normal at that vertex, and therefore can not be the same as normals of the adjacent patches. This would require taking two derivatives and a cross product. For simplicity, let s consider the edge case, and use the w = 0 edge. It suffices to show that the p w value on the w = 0 edge depends on the values at the opposite vertex, k. Differentiating (43) we find that (for brevity, let w w ) w p (u, v) = u2 w p i + v2 w p j + w2 w p k + (v u w + u v w )( π i(p j ) + π j (p i )) + (w v w + v w w )( π j(p k ) + π k (p j )) + (w u w + u w w )( π k(p i ) + π i (p k )) = 2up i 2vp j + 2wp k + ( v u)( π i (p j ) + π j (p i )) + ( w + v)( π j (p k ) + π k (p j )) + ( w + u)( π k (p i ) + π i (p k )) Which on the edge w = 0 becomes p w w=0 = 2up i 2vp j (u + v)( π i (p j ) + π j (p i )) + (45) v( π j (p k ) + π k (p j )) + u( π k (p i ) + π i (p k )), (46) and since it depends on the position and normal of vertex k, the surface can not be G 1 continuous. 9