Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 325 Introduction to Computer Graphics 02 / 24 / 2010 Instructor: Michael Eckmann.

Similar presentations


Presentation on theme: "CS 325 Introduction to Computer Graphics 02 / 24 / 2010 Instructor: Michael Eckmann."— Presentation transcript:

1 CS 325 Introduction to Computer Graphics 02 / 24 / 2010 Instructor: Michael Eckmann

2 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Today’s Topics Questions/comments? Revisit Antialiasing Bresenham's line algorithm View volumes and specifying arbitrary views

3 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Antialiasing Bresenham This picture only tells part of the story

4 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Antialiasing Bresenham The picture only tells part of the story It's clear from the picture that dlower = Ydesired – Yk dupper = 1 - dlower Even though we're dealing with slopes of less than 1 and > 0, there are other cases that that picture doesn't display. case 1) when dlower < 0 case 2) when dupper < 0 case 3) shown on last slide when dlower and dupper both > 0 case 4) when line goes right through center of a pixel Picture on the board.

5 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Antialiasing Bresenham Furthermore there's the issue of which two pixels to turn on y is the y-coordinate that Bresenham calculates for this step The two to turn on is dependent on which case we're in case 1) when dlower < 0 the two pixels y coordinates are y & y – 1 case 2) when dupper < 0 the two pixels y coordinates are y & y + 1 case 3) shown on last slide when dlower and dupper both > 0 if Bresenham would've kept y the same then the two pixels y coordinates are y & y + 1 else y & y – 1

6 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Antialiasing Bresenham case 4) when actual line goes right through the center of a pixel that happens when the values of dupper and dlower are 0 and 1 (or really close when dealing with floating points)‏ so you can test it by taking the absolute value of the difference between the two and test if this is really close to 1 Anyway, when this happens we only want to turn on one pixel (the one with the y coordinate that Bresenham calculated) at full intensity

7 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Antialiasing Bresenham As for the intensities of the two pixels –case 1) when dlower < 0 example: dlower = -.2 and dupper = 1.2 make intens1 = 1+ dlower (e.g. 0.8)‏ make intens2 = 1 – intens1 (e.g. 0.2)‏ case 2) when dupper < 0 example: dlower = 1.1 and dupper = -0.1 make intens1 = 1+ dupper (e.g. 0.9)‏ make intens2 = 1 – intens1 (e.g. 0.1)‏ case 3)‏ example: dlower = 0.4 and dupper = 0.6 OR example: dlower = 0.7 and dupper = 0.3 make intens1 = dupper (e.g. 0.6)‏ make intens2 = 1 – intens1 (e.g. 0.4)‏

8 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 View Volumes Assuming a rectangular viewport and given the CoP (aka Projection Reference Point PRP) we have an infinite view volume. Drawing on board. So, the view volume contains the portion of the world that may be displayed in the viewport --- what is not in the volume is clipped out. To limit the processing (and limit what will be displayed), we typically reduce the view volume to a finite volume. We define 2 planes – Front and Back clipping planes (aka hither and yon). Now the finite view volume is the volume contained within the pyramid between the two clipping planes.

9 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 View Volumes Given a view volume and a projection (e.g. a perspective or parallel projection matrix), objects can be clipped to the view volume by solving simultaneous equations for intersections with the projectors with the view plane. This is computation intensive. A more efficient way is clip against a volume that is easier to clip against. For perspective projections this volume (called the canonical view volume for perspective) is defined by the planes: x = z, x = -z, y = z, y = -z, z = -z min, z = -1 For parallel projection's the canonical view volume is x = 1, x = -1, y = 1, y = -1, z = 0, z = -1

10 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Specifying an arbitrary view To specify an arbitrary view, we should be able to place the view plane anywhere in 3d. –we'll need to specify the direction of the plane and where it lives within the world reference coordinate system (WRC)‏ –we'll also need to know which direction is up (to know what is displayed at the top of the image when we transform to viewport. A common way to specify an arbitrary view is to specify the following: a View Reference Point (VRP) which is a point on the plane a View Plane Normal (VPN) which is the normal vector to the plane a View Up Vector (VUP) which is a vector from which we determine which way is up See diagram. Is that enough info to specify an arbitrary view in your opinion? One note, the VUP vector is allowed to be specified as not perpendicular to VPN. The up direction (determined by a relation of the directions of VPN and VUP) though is perpendicular to VPN.

11 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Specifying an arbitrary view The VRP, VPN and VUP create another reference coordinate system. We call this the view reference coordinate system (VRC). We name the principle axes u, v and n. Within VRC we –specify a window on the view plane with Center of Window (CW) and min and max u and v values –a Projection Reference Point (PRP) which is the CoP for perspective views –Front and Back clipping planes specified as distances F and B, from VRP along the VPN –see next diagram. In the World Reference Coordinate (WRC) system we –define VRP, VPN and VUP In the View Reference Coordinate (VRC) system we –define CW, PRP, F and B

12 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 View Volumes To be able to clip against the canonical view volume and still allow any desired arbitrary view volume we'll need to normalize the desired view volume to the canonical view volume. So, the procedure to project from 3d to 2d given a finite view volume, will be as follows: –apply a normalizing transform to get to the canonical view volume –clip against the canonical view volume –project onto the view plane –transform into viewport

13 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Normalizing to CVV Now we're ready to develop the normalizing transformation for perspective projections. This will transform world coordinate positions so that the view volume is transformed into the canonical view volume. After this transform is applied, we would clip against the CVV and then project onto the view plane (via a perspective projection matrix).

14 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Normalizing to CVV The steps to do this are as follows: –Given the following: VRP, VPN, VUP, PRP, u and v min and max, F and B 1. Translate VRP (view reference point) to origin 2. Rotate the VRC (view reference coordinate system) so that VPN (n-axis) lies on the z-axis, the u-axis lies on the x-axis and the v-axis lies on the y-axis 3. Translate PRP (the Projection Reference Point which is CoP) to the origin 4. Shear so the center line of the view volume lies on the z-axis 5. Scale so that the view volume becomes the canonical view volume Take a look at the pictures

15 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Translate VRP to origin 1. T(-VRP) = [ 1 0 0 -VRP x ] [ 0 1 0 -VRP y ] [ 0 0 1 -VRP z ] [ 0 0 0 1 ]

16 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Rotate VRC 2. Rotate the VRC in the following way: we want u to go to (1, 0, 0)‏ in x,y,z coordinates we want v to go to (0, 1, 0)‏ in x,y,z coordinates we want n to go to (0, 0, 1)‏ in x,y,z coordinates make them have the correct directions and magnitude 1 n = VPN / | VPN | u = (VUP x n) / | VUP x n | v = n x u

17 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Rotate VRC 2. we want u to go to (1, 0, 0)‏ we want v to go to (0, 1, 0)‏ we want n to go to (0, 0, 1)‏ R = [ u x u y u z 0 ] [ v x v y v z 0 ] [ n x n y n z 0 ] [ 0 0 0 1 ] example: This matrix transforms the v vector to (0, 1, 0)‏

18 Michael Eckmann - Skidmore College - CS 325 - Spring 2010 Rotate VRC 2. To check, show this matrix transforms the v vector to (0, 1, 0)‏ [ u x u y u z 0 ] [ v x ] [ u. v ] [ 0 ] [ v x v y v z 0 ] [ v y ] = [ v. v ] = [ 1 ] [ n x n y n z 0 ] [ v z ] [ n. v ] [ 0 ] [ 0 0 0 1 ] [ 1 ] [ 1 ] [ 1 ] dot product of perpendicular vectors is 0 (cos 90 = 0)‏ and dot product of a vector with itself is its magnitude squared 1*1 = 1


Download ppt "CS 325 Introduction to Computer Graphics 02 / 24 / 2010 Instructor: Michael Eckmann."

Similar presentations


Ads by Google