3 DIMENSIONAL VIEWING Ceng 477 Introduction to Computer Graphics Computer Engineering METU.

Slides:



Advertisements
Similar presentations
Computer Graphics - Viewing -
Advertisements

OPENGL.
Three Dimensional Viewing
Three-Dimensional Viewing Sang Il Park Sejong University Lots of slides are stolen from Jehee Lee’s.
4.1si31_2001 SI31 Advanced Computer Graphics AGR Lecture 4 Projection Clipping Viewport Transformation.
2D Viewing. 2D viewing transformation is a mapping of world coordinate scene to device coordinates xw min xw max yw min yw max xv min xv max yv min yv.
Introduction to 3D viewing 3D is just like taking a photograph!
12.1 Si23_03 SI23 Introduction to Computer Graphics Lecture 12 – 3D Graphics Transformation Pipeline: Projection and Clipping.
Viewing and Projections
Computer Graphics (fall 2009)
UBI 516 Advanced Computer Graphics Three Dimensional Viewing
Advanced Computer Graphics Three Dimensional Viewing
The Viewing Pipeline (Chapter 4) 5/26/ Overview OpenGL viewing pipeline: OpenGL viewing pipeline: – Modelview matrix – Projection matrix Parallel.
3D Viewing.
CS559: Computer Graphics Lecture 9: Projection Li Zhang Spring 2008.
Viewing Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
Computer Graphics Bing-Yu Chen National Taiwan University.
2 DIMENSIONAL VIEWING Ceng 477 Introduction to Computer Graphics Fall Computer Engineering METU.
CAP 4703 Computer Graphic Methods Prof. Roy Levow Chapter 5.
Three-Dimensional Viewing Jehee Lee Seoul National University.
Introduction to Computer Graphics Chapter 6 – 2D Viewing Pt 1 1.
Basic Perspective Projection Watt Section 5.2, some typos Define a focal distance, d, and shift the origin to be at that distance (note d is negative)
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
The Camera Analogy ► Set up your tripod and point the camera at the scene (viewing transformation) ► Arrange the scene to be photographed into the desired.
Chapters 5 2 March Classical & Computer Viewing Same elements –objects –viewer –projectors –projection plane.
Three-Dimensional Viewing
Three-Dimensional Viewing Hearn & Baker Chapter 7
12/24/2015 A.Aruna/Assistant professor/IT/SNSCE 1.
©2005, Lee Iverson Lee Iverson UBC Dept. of ECE EECE 478 Viewing and Projection.
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.
Viewing and Projection
CS552: Computer Graphics Lecture 6: Viewing in 2D.
CS552: Computer Graphics Lecture 11: Orthographic Projection.
Viewing and Projection. The topics Interior parameters Projection type Field of view Clipping Frustum… Exterior parameters Camera position Camera orientation.
Viewing Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
Chapter: Viewing.
Viewing. Classical Viewing Viewing requires three basic elements - One or more objects - A viewer with a projection surface - Projectors that go from.
Forward Projection Pipeline and Transformations CENG 477 Introduction to Computer Graphics.
Three Dimensional Viewing
Computer Graphic 2 D Viewing.
Rendering Pipeline Fall, 2015.
Computer Graphics CC416 Week 14 3D Graphics.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2016
Courtesy of Drs. Carol O’Sullivan / Yann Morvan Trinity College Dublin
Camera Position (5.6) we specify the position and orientation of the camera to determine what will be seen. use gluLookAt (eye x, y, z, at x, y, z, up.
Projection Our 3-D scenes are all specified in 3-D world coordinates
3D Viewing cgvr.korea.ac.kr.
Computer Graphics Viewing
CSCE 441 Computer Graphics 3-D Viewing
CSC461: Lecture 20 Parallel Projections in OpenGL
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
“Computer Science is no more about computers than astronomy is about telescopes.” Professor Edsger Dijkstra.
CENG 477 Introduction to Computer Graphics
Fundamentals of Computer Graphics Part 5 Viewing
WINDOWING AND CLIPPING
Three Dimensional Viewing
OpenGL 2D Viewing Pipeline
CSC4820/6820 Computer Graphics Algorithms Ying Zhu Georgia State University View & Projection.
Computer Graphics (Spring 2003)
Last Time Canonical view pipeline Projection Local Coordinate Space
Chap 3 Viewing Pipeline Reading:
Viewing (Projections)
Viewing (Projections)
Interactive Computer Graphics Viewing
3D Viewing.
THREE-DIMENSIONAL VIEWING II
THREE-DIMENSIONAL VIEWING
Presentation transcript:

3 DIMENSIONAL VIEWING Ceng 477 Introduction to Computer Graphics Computer Engineering METU

3D Viewing Concepts ● Involves some task that are not present in 2D viewing – 3D viewing reference frame, i.e., camera – Projection: Transfer the scene to view on a planar surface – Visible part identification – Lighting – Surface characteristics (opaque, transparent) view plane

Model M1 M2 M3 3D World Scene View Coordinates V Projection Transformation Viewport Transformation 2D Image Projection Rasterization Modeling Transformations Viewing Transformations MCS WCSVCS Normalized coordinates DCS SCS 3D Viewing Pipeline Normalization Transformation and Clipping

Modeling Transformation ● Model coordinates to World coordinates: World coordinates: All shapes with their absolute coordinates and sizes. z world x world y world

3D Viewing-Coordinate Parameters ● World coordinates to Viewing coordinates: Viewing transformations World coordinates Viewing coordinates: Viewers (Camera) position and viewing plane. z world x world y world x vie w y vie w z vie w

Viewing Parameters ● How to define the viewing coordinate system (or view reference coordinate system): – Position of the viewer: P 0 ● view point or viewing position – Orientation of the viewer: ● View up vector: V ● Viewing direction: N (view plane normal) ● N and V should be orthogonal – if it is not, V can be adjusted to be orthogonal to N zwzw xwxw ywyw P0P0 N V The camera is looking at opposite direction of N

The uvn Viewing-Coordinate Reference Frame ● A set of unit vectors that define the viewing coordinate system is obtained by: xvxv yvyv zvzv v u n By changing some of the viewing parameters (e.g., N, viewing position), we can generate 3d viewing effects like rotating around an object or flying over a scene.

Transformation Between Coordinate Systems ● Given the objects in world coordinates, find the transformation matrix to transform them into viewing coordinate system. n, v, u : unit vectors defining the viewing coordinate system. zwzw xwxw ywyw P0P0 N V World coordinate system can be aligned with the viewing coordinate system in two steps: (1) Translate P 0 to the origin of the world coordinate system, (2) Rotate to align the axes.

Step 1 ● Translation: Move view reference point to origin. xwxw ywyw N V zwzw xwxw ywyw zwzw N V P0P0

Step 2 ● Rotation: After we find n, v and u, we can use them to define the rotation matrix for aligning the axes. xwxw ywyw zwzw N V xwxw ywyw zwzw n v u xwxw ywyw zwzw v u n

WC to VC transformation matrix ● The transformation matrix from world coordinate to viewing reference frame

Projection transformations ● Projection: 3D to 2D. Perspective or parallel. x vie w y vie w z vie w P2P2 P1P1 P1`P1` P2`P2` P1P1 P2P2 P2`P2` P1`P1` Convergence Point

Projections ● Classification of projections. Based on: – Center of projection: infinity (parallel) or a point (perspective) – Projection lines wrt. projection plane: orthogonal (orthographic), another angle (oblique) Center of projection Projection plane Center of projection Projection plane Center of projection Projection plane Orthographic Perspective Oblique

Orthographic projection ● Multiview Orthographic: – Parallel projection to z =0, y =0, x =0 planes – Used for engineering drawings, architectural drawing – Accurate, scales preserved. Not 3D realistic. Top Front Side

Orthogonal Projection View Volume Clipping Window Near Plane Far Plane z view x view y view

Normalization Transformation ● The coordinates within the view volume are normalized to the range [-1,1] (or [0,1]) ● The orthographic volume which may be a long rectangular prism is going to be mapped to a unit cube ● A transformation to a left handed coordinate system (i.e., z -axis inversion) may also be needed ● In the orthogonal volume ( x min, y min, z near ) is mapped to (-1,-1,-1) in the normalized volume and ( x max, y max, z far ) is mapped to (1,1,1)

Left-handed coordinate system Depth (i.e., z values) are increasing away from the viewport

Normalization transformation z view x view y view (x min, y min, z near ) (x max, y max, z far ) (-1, -1, -1) (1, 1, 1) z norm x norm y norm Normalized view volume. Clipping is performed after everything is normalized into this unit cube.

Perspective Projection ● Single point center of projection (i.e. projection lines converge at a point) ● Shapes are projected smaller as their distances to the view plane increase. ● More realistic (human eye is a perspective projector) ● Depending on number of principal axes intersecting the viewing plane: 1, 2 or 3 vanishing points Projection plane Center of projection

Perspective Projection ● Assume that the projection reference point is selected at an arbitrary position ( x prp,y prp, z prp ) and the view plane is located at a selected position z vp on the z view axis. z view x view y view (x prp,y prp,z prp ) P = (x,y,z) View Plane

Perspective Projection ● Our goal is to find the projection of point P on the view plane which is ( x p,y p, z vp ) z view x view y view (x prp,y prp,z prp ) P = (x,y,z) View Plane (x p,y p,z vp )

Projection equations ● The projected point ( x p,y p, z vp ) can be found using parametric equation of the projection line: We can solve for u at z’ = z vp and then plug-in u to find x p and y p.

Projection equations The denominators are functions of z, hence we cannot directly derive the matrix form. We will use homogeneous coordinates to do that.

Special cases ● When the projection reference point is on the z view axis.

Special cases ● When the projection reference point is at the view coordinate system origin.

Special cases ● When the view plane is the uv plane and the projection reference point is on the z view axis.

Perspective Projection View Volume Clipping Window Projection Reference Point Frustum View Volume Near Clipping Plane Far Clipping Plane Field of View Angle θ

Perspective-Projection Transformation Matrix ● We can use homogeneous coordinates to express the perspective projection equations: ● We compute homogenous coordinates in the perspective projection equations

Perspective-Projection Transformation Matrix ● We can set up a perspective projection matrix to convert 3D coordinates to homogenous coordinates, then we can divide the homogeneous coordinates by h to obtain the true positions

Finding M pers ● We need to be careful when finding z h. We need to preserve the depth information, we cannot simply use the coordinate z vp for all the projected points. We set up the M pers matrix so that the z coordinate of a point is converted to a normalized z p coordinate. s z and t z are the scaling and translation parameters for normalizing projected z coordinates.

Perspective Transformation ● The symmetric perspective transformation will map the objects into a parallelpiped view volume

Normalization ● Normalization is then similar to normalization of an orthographic projection

Clipping ● Clipping: Finding parts of the objects in the viewing volume. Algorithms from 2D clipping can easily be applied to 3D and used to clip objects against faces of the normalized view volume.

Clipping Volume vs. Viewport ● The clipping volume selects what we want to see in our virtual 3D world. ● The viewport indicates where it is to be viewed on the output device (or within the display window) ● By default the viewport have the same location and dimensions of the GLUT display window you create – But it can be modified so that only a part of the display window is used for OpenGL display

Midterm Review Exercise #1 ● Given a line segment P A P B in the world coordinate system with: – P A = (2,4,1) and P B = (1,-2,3) and the following viewing parameters specified with the gluLookAt function: – gluLookAt(1, 2, 3, 0, 2, 3, 0, -1, 0); What will be the coordinates of the line when it is transformed into the viewing coordinate system?

Solution steps ● Using the camera parameters, identify the u, v, n vectors that define the viewing coordinate system. ● Construct the viewing transformation matrix as a composition of a translation and rotation ● Apply the viewing transformation to the points of the line

Finding u, v, n vectors N = P0-Pref = (1,2,3) - (0,2,3) = (1,0,0) = n u = (0,0,1) v = (0,-1,0)

Viewing Transformation Matrix

Apply Viewing Transformation to P A P B

Midterm Review Exercise #2 ● Given the following function call to gluPerspective: – gluPerspective(60.0,0.8,4.0,100.0); where the first parameter is the viewing angle, the second parameter is the aspect ratio of the clipping window (width/height), the third parameter is the distance of the near plane to the viewing origin, and the fourth parameter is the distance of the far plane to the viewing origin. Find the glFrustum parameters: glFrustum (xwmin, xwmax, ywmin, ywmax, dnear, dfar)

Solution gluPerspective defines a symmetric perspective projection Therefore, xmin = -xmax and ymin=-ymax ymax ymax = tan (30) * 4.0 = 2.31 height = 2.31*2 = 4.62 width = aspect * height = 0.8 * 4.62 = 3.7 xmax = width/2 = 1.85 glFrustum(-1.85,1.85,-2.31,2.31,4.0,100.0)

OpenGL Viewing Functions ● OpenGL, GLU, and GLUT provide functions to specify clipping volumes, projection parameters, viewports, and display windows within a video screen.

Camera Parameters ● The viewing parameters (camera position, view- up vector, view-plane normal) are specified as part of modeling transformations. A matrix is formed and concatenated with the current modelview matrix. So, to set up camera parameters: glMatrixMode (GL_MODELVIEW); gluLookAt (x0, y0, z0, xref, yref, zref, Vx, Vy, Vz); N = P 0 -P ref Viewing direction is along the – z view axis

gluLookAt ● If we do not invoke the gluLookAt function. The default camera parameters are: – P 0 = (0,0,0) – P ref = (0,0,-1) – V = (0,1,0)

Setting up an Orthographic View ● glMatrixMode (GL_PROJECTION) ● glLoadIdentity (); // reset, so that new viewing parameters are not combined with old ones (if any) ● gluOrtho2D (xwmin, xwmax, ywmin, ywmax); or ● glOrtho (xwmin, xwmax, ywmin, ywmax, zwmin, zwmax); ● Objects within the clipping window are transformed to normalized coordinates (-1,1)

OpenGL Symmetric Perspective- Projection Function ● gluPerspective (theta, aspect, dnear, dfar) ● The parameters theta and aspect determines the position and the size of the clipping window on the near plane. theta is the field of view angle, i.e., the angle between top and bottom clipping planes. aspect is the aspect ratio of the clipping window. dnear and dfar are assigned positive values with dnear<dfar. The actual positions of the near and far planes are z near = -dnear and z far = -dfar

General Perspective-Projection Function glFrustum (xwmin, xwmax, ywmin, ywmax, dnear, dfar) Projection reference point is the viewing (camera position) and the view plane normal is the z view axis. If xwmin != -xwmax or ywmin!=-ywmax we can obtain an oblique perspective-projection frustum. Otherwise, we will have a symmetric perspective projection.

Setting up a Viewport ● glViewport (xvmin, yvmin, vpWidth, vpHeight); ● All the parameters are given in integer screen coordinates relative to the lower-left corner of the display window. ● If we do not invoke this function, by default, a viewport with the same size and position of the display window is used (i.e., all of the GLUT window is used for OpenGL display)

Creating a GLUT Display Window ● glutInitWindowPosition (xTopLeft, yTopLeft); – the integer parameters are relative to the top-left corner of the screen ● glutInitWindowSize (dwWidth, dwHeight); ● glutCreateWindow (“Title of Display Window”); ● glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB) – Specification of the buffer that will be used ● glClearColor (red, green, blue, alpha) – Specify the background color

Multiple GLUT windows ● Multiple windows may be created within an OpenGL program – Need window ids to manage multiple windows – windowID = glutCreateWindow(“Window1”); – glutDestroyWindow (windowID) // to distroy the window ● General functions (like glutInitDisplayMode) are applied to the current display window. We can set the current window to a specific window with: – glutSetWindow (windowID);

Display callback function ● Each separate GLUT window can have its own function to specify what will be drawn inside. E.g., – glutSetWindow (w1); – glutDisplayFunction (wireframeDisplay); – glutSetWindow (w2); – glutDisplayFunction (solidDisplay); ● Display callback functions are called only when GLUT determines that the display content should be renewed. To update the display manually call: glutPostRedisplay(); ● glutIdleFunc (functionName) could be used in animations