CS 352: Computer Graphics Chapter 5: Viewing.

Slides:



Advertisements
Similar presentations
Computer Graphics - Viewing -
Advertisements

Three-Dimensional Viewing Sang Il Park Sejong University Lots of slides are stolen from Jehee Lee’s.
Based on slides created by Edward Angel
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Computer Viewing Ed Angel Professor of Computer Science, Electrical and Computer Engineering,
CS 352: Computer Graphics Chapter 5: Viewing. Interactive Computer GraphicsChapter Overview Specifying the viewpoint Specifying the projection Types.
Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia.
Transformations and Projections (Some slides adapted from Amitabh Varshney)
CS 4731: Computer Graphics Lecture 11: 3D Viewing Emmanuel Agu.
1 Chapter 5 Viewing. 2 Perspective Projection 3 Parallel Projection.
Informationsteknologi Wednesday, November 14, 2007Computer Graphics - Class 81 Today’s class Orthogonal matrices Quaternions Shears Synthetic camera Viewing.
Projection Projection - the transformation of points from a coordinate system in n dimensions to a coordinate system in m dimensions where m
Introduction to 3D viewing 3D is just like taking a photograph!
Computer Graphics (fall 2009)
UBI 516 Advanced Computer Graphics Three Dimensional Viewing
Advanced Computer Graphics Three Dimensional Viewing
CS559: Computer Graphics Lecture 9: Projection Li Zhang Spring 2008.
Viewing Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
1 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Classical Viewing Sai-Keung Wong ( 黃世強 ) Computer Science National.
Chapter 5 Viewing.
C O M P U T E R G R A P H I C S Guoying Zhao 1 / 67 C O M P U T E R G R A P H I C S Guoying Zhao 1 / 67 Computer Graphics Three-Dimensional Graphics III.
Graphics Graphics Korea University cgvr.korea.ac.kr 3D Viewing 고려대학교 컴퓨터 그래픽스 연구실.
Computer Graphics Bing-Yu Chen National Taiwan University.
Fundamentals of Computer Graphics Part 5 Viewing prof.ing.Václav Skala, CSc. University of West Bohemia Plzeň, Czech Republic ©2002 Prepared with Angel,E.:
CAP 4703 Computer Graphic Methods Prof. Roy Levow Chapter 5.
Demetriou/Loizidou – ACSC330 – Chapter 5 Viewing Dr. Giorgos A. Demetriou Computer Science Frederick Institute of Technology.
Computer Graphics I, Fall 2010 Computer Viewing.
CS 450: COMPUTER GRAPHICS PROJECTIONS SPRING 2015 DR. MICHAEL J. REALE.
Viewing Chapter 5. CS 480/680 2Chapter 5 -- Viewing Introduction: Introduction: We have completed our discussion of the first half of the synthetic camera.
Graphics Graphics Korea University kucg.korea.ac.kr Viewing 고려대학교 컴퓨터 그래픽스 연구실.
Jinxiang Chai CSCE 441 Computer Graphics 3-D Viewing 0.
Chapters 5 2 March Classical & Computer Viewing Same elements –objects –viewer –projectors –projection plane.
Three-Dimensional Viewing
12/24/2015 A.Aruna/Assistant professor/IT/SNSCE 1.
©2005, Lee Iverson Lee Iverson UBC Dept. of ECE EECE 478 Viewing and Projection.
Graphics CSCI 343, Fall 2015 Lecture 16 Viewing I
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Classical Viewing Ed Angel Professor of Computer Science, Electrical and Computer Engineering,
Classical Viewing Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Taxonomy of Projections FVFHP Figure Taxonomy of Projections.
Classical Viewing Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Viewing Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
CS5500 Computer Graphics March 20, Computer Viewing Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts.
1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Computer Viewing Isaac Gang University of Mary Hardin-Baylor.
OpenGL LAB III.
Viewing. Classical Viewing Viewing requires three basic elements - One or more objects - A viewer with a projection surface - Projectors that go from.
CS 490: Computer Graphics Chapter 5: Viewing. Interactive Computer GraphicsChapter Overview Specifying the viewpoint Specifying the projection Types.
Outline 3D Viewing Required readings: HB 10-1 to 10-10
Viewing 고려대학교 컴퓨터 그래픽스 연구실 kucg.korea.ac.kr.
Rendering Pipeline Fall, 2015.
Viewing.
Computer Graphics - Chapter 5 Viewing
Computer Viewing.
Isaac Gang University of Mary Hardin-Baylor
3D Viewing cgvr.korea.ac.kr.
Rendering Pipeline Aaron Bloomfield CS 445: Introduction to Graphics
CSCE 441 Computer Graphics 3-D Viewing
Modeling 101 For the moment assume that all geometry consists of points, lines and faces Line: A segment between two endpoints Face: A planar area bounded.
Unit 4 3D Viewing Pipeline Part - 2
CSC461: Lecture 19 Computer Viewing
Fundamentals of Computer Graphics Part 5 Viewing
Three Dimensional Viewing
Last Time Canonical view pipeline Projection Local Coordinate Space
Chap 3 Viewing Pipeline Reading:
Viewing (Projections)
University of New Mexico
Viewing (Projections)
Interactive Computer Graphics Viewing
Computer Graphics Computer Viewing
THREE-DIMENSIONAL VIEWING II
Computer Viewing Ed Angel Professor Emeritus of Computer Science
Presentation transcript:

CS 352: Computer Graphics Chapter 5: Viewing

Overview Specifying the viewpoint Specifying the projection Interactive Computer Graphics Overview Specifying the viewpoint Specifying the projection Types of projections Viewing APIs Walking through a scene Projections and shadows

How do cameras work? Interactive Computer Graphics Camera Obscura – what does it mean in Latin? (Dark room)

Synthentic camera model Interactive Computer Graphics Synthentic camera model 1. Camera is placed at a location, pointed in a direction (modeling matrix) 2. 3D points are flattened onto the viewing plane (projection matrix) What do we need to know about the camera (real or synthetic)?

Synthetic camera parameters Interactive Computer Graphics Synthetic camera parameters Position of camera Direction it is pointed [look vector] Angle of film to look vector [view plane normal] Rotation around viewing direction [up vector] Height angle (zoom setting) [fovy] Aspect ratio of "film" (width/height) Front and back clipping planes Focal length Field of view Shutter speed

Interactive Computer Graphics Depth of ffield Focal length

Perspective distortion Interactive Computer Graphics Perspective distortion How would you film dizziness? Vertigo effect [2] You can also make someone look like an ogre…

Projections Basic Elements: Basic Types Objects, viewer Interactive Computer Graphics Projections Basic Elements: Objects, viewer Projection plane Projectors Center of projection Direction of projection (DOP) Basic Types Perspective Parallel (COP at infinity)

Classical viewing Interactive Computer Graphics The point of classical viewing is to show a specific relationship among object, viewer and projection plane. These are all special cases of the more general “perspective” and “parallel” views of computer graphics.

Orthographic projection Interactive Computer Graphics Orthographic projection Orthographic: parallel projection with projectors perpendicular to the projection plane. Often used as front, side, top views for 3D design Importance: preservation of distance and angle Often used for top, front, and size views, e.g. in a modeling program or working drawing

Perspective projection Interactive Computer Graphics Perspective projection Perspective projections: projectors converge at COP Classical perspective views: 1, 2, and 3-point (1, 2, or 3 vanishing points) Difference: how many of the principle axes of the object are parallel to projection plane (I.e., depends on relationship of object to viewing frame)

Interactive Computer Graphics 1. Position the camera By default, camera is at origin, looking in –z dir To “move the camera”, set up a modelview matrix that moves objects that are drawn Ignore Z-coordinate when drawing E.g. dimetric view? Dimetric: 45 degree angle from x,z axes Think of affecting object: rotate while it’s at the origin, then translate modelview = identity translate(0,0,-d) rotate(-45,<0,1,0>);

Exercise: look from +x axis Interactive Computer Graphics Exercise: look from +x axis How would you change the camera to generate a view down the +x axis to origin? Do this before displaying objects: modelview = identity; translate(0, 0, -d); rotate(-90, [0, 1, 0]);

Exercise: front/top view Interactive Computer Graphics Exercise: front/top view How would you change the camera to generate a view from (0, 10, 10) to origin? Do this before displaying objects: modelview = identity; translate(0,0,-14.14); rotate(45, [1, 0, 0]);

Helper function: lookAt Interactive Computer Graphics Helper function: lookAt Most 3D toolkits let you position the camera by setting eyepoint, lookpoint, and up direction lookAt(Xeye, Yeye, Zeye, Xat, Yat, Zat, Xup, Yup, Zup): Effect: set the modelview matrix

Rolling your own lookAt Interactive Computer Graphics Rolling your own lookAt How could you write your own lookAt function? lookAt(Xeye, Yeye, Zeye, Xat, Yat, Zat, Xup, Yup, Zup):

Defining a lookAt function Interactive Computer Graphics Defining a lookAt function lookAt(Xeye, Yeye, Zeye, Xat, Yat, Zat, Xup, Yup, Zup): translate <Xat, Yat, Zat> to origin rotate so that <Xeye, Yeye, Zeye> points in the Z direction normalize <Xeye, Yeye, Zeye> trackball-like rotation to <0,0,1> rotate so <Xup, Yup, Zup> is <0,1,0> trackball-like rotation

Camera API 2: uvn frame Camera parameters: Interactive Computer Graphics Camera API 2: uvn frame Camera parameters: VRP: view reference point, a point on the image plane VPN: view plane normal (n) VUP: vector in up direction (also need viewing direction, if not VPN) Result: viewing coordinate system, u-v-n. v = projection of VUP onto image plane u = v x n u, v axes: coordinates in the image plane n axis: normal to image plane

Camera API 3: roll, pitch, yaw Interactive Computer Graphics Camera API 3: roll, pitch, yaw Specify location + orientation: roll, pitch, yaw

Interactive Computer Graphics 2. Specify projection Once we have located and pointed the camera along the –z axis, we still need to specify the lens (projection).

Parallel projection We’re already looking along the –z axis Interactive Computer Graphics Parallel projection We’re already looking along the –z axis Set z=0 for all points (or ignore z coordinate when rendering)

Interactive Computer Graphics Parallel projection View volume is generally specified with clipping planes: e.g. glOrtho(xmin, xmax, ymin, ymax, near, far) Z clipping planes at –near and –far

Perspective projection Interactive Computer Graphics Perspective projection Need to build appropriate perspective projection matrix into vertex shader What kind of transformation would this be?

Perspective projections Interactive Computer Graphics Perspective projections COP at origin Looking in –z direction Projection plane in front of origin at z=d

Interactive Computer Graphics Foreshortening By similar triangles in previous image, we see that and similarly for y. Using the perspective matrix we get p’ = Adding divide-by-w to the graphics pipeline gives the correct result. Note that using “distance-from” as Z gives positive values; using a right-handed XYZ coord system gives negative Z values in default view.

Perspective Frustum Perspective viewing region is a “frustum”: Interactive Computer Graphics Perspective Frustum Perspective viewing region is a “frustum”: Viewplane normally coincides with front clip plane

Interactive Computer Graphics Camera APIs In raw OpenGL ES, you “position the camera” by programming a vertex shader to apply a modelview matrix Frameworks provide functions to build a viewing matrix for you, using a “camera API” Example: perspectiveCamera(FOV, aspect, near, far)

Perspective projection Interactive Computer Graphics Perspective projection 3D graphics toolkits provide tools for specifying a perspective projection, e.g.

Interactive Computer Graphics Shadows How can one generate shadows in a scene using interactive graphics techniques? In general it's hard, not supported in standard graphics pipeline—you need to know where everything is globally to render a point locally Special techniques let you “fake it”. How to use a projection?

Projections and shadows Interactive Computer Graphics Projections and shadows Projections can be used to generate simple shadow polygons Light (xl, yl, zl) Translate light to origin Project down y axis [M] Translate back

Simple Shadow in OpenGL Interactive Computer Graphics Simple Shadow in OpenGL GLfloat m[16]; //projection matrix for (int i=0; i<16; i++) m[i]=0; m[0]=m[5]=m[10]=1; m[7] = -1/yl; glBegin(); [draw polygon normally]; glEnd(); glMatrixMode(GL_MODELVIEW); glPushMatrix; //save state glTranslatef(xl, yl, zl); glMultMatrix(m); glTranslatef(-xl, -yl, -zl); glColor3fv(shadow_color); [draw polygon] glEnd(); glPopMatrix();

Walking through a scene Interactive Computer Graphics Walking through a scene How to animate viewer motion through a scene? [Demo] Assume viewer’s height is fixed; looking direction is in y=6 plane Store viewer’s location (x,6,z) and orientation (θ). Update appropriately with user commands LookAt( x, y, z, x + cos(θ), y, z + sin(θ), 0, 1, 0); Or adjust LookAt according to mouse position

Credits Interactive Computer Graphics Demos Musical solar system 1. (Pinhole camera): Wikipedia. 5. Synthetic camera parameters: Liz Marai, Pitt Demos Musical solar system

Interactive Computer Graphics Khronos.org

Interactive Computer Graphics