Viewing/Projections I Week 3, Fri Jan 25

Slides:



Advertisements
Similar presentations
MAT 594CM S2010Fundamentals of Spatial ComputingAngus Forbes Overview Goals of the course: 1. to introduce real-time 3D graphics programming with openGL.
Advertisements

Computer Graphics Lecture 4 Geometry & Transformations.
Graphics Pipeline.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Display Lists, Viewing.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Viewing/Projections I.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Viewing/Projections IV.
Transformations II Week 2, Wed Jan 17
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Projections II Week 4,
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Viewing/Projections III.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Viewing/Projections II.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Transformations II Week.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Viewing/Projections III.
University of British Columbia CPSC 314 Computer Graphics May-June 2005 Tamara Munzner Viewing, Projections.
Transformations IV Week 3, Wed Jan 23
Computer Graphics (Fall 2008) COMS 4160, Lecture 3: Transformations 1
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Viewing/Projections I.
Computer Graphics (Fall 2004) COMS 4160, Lecture 3: Transformations 1
Foundations of Computer Graphics (Fall 2012) CS 184, Lecture 3: Transformations 1
Viewing and Projections
Graphics Graphics Korea University cgvr.korea.ac.kr 3D Viewing 고려대학교 컴퓨터 그래픽스 연구실.
Foundations of Computer Graphics (Fall 2012) CS 184, Lectures 13,14: Reviews Transforms, OpenGL
OpenGL Conclusions OpenGL Programming and Reference Guides, other sources CSCI 6360/4360.
Geometric Camera Models
CAP4730: Computational Structures in Computer Graphics 3D Transformations.
OpenGL The Viewing Pipeline: Definition: a series of operations that are applied to the OpenGL matrices, in order to create a 2D representation from 3D.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
Chapters 5 2 March Classical & Computer Viewing Same elements –objects –viewer –projectors –projection plane.
©2005, Lee Iverson Lee Iverson UBC Dept. of ECE EECE 478 Viewing and Projection.
Graphics CSCI 343, Fall 2015 Lecture 16 Viewing I
Rendering Pipeline Fall, D Polygon Rendering Many applications use rendering of 3D polygons with direct illumination.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Viewing/Projections IV.
Foundations of Computer Graphics (Spring 2012) CS 184, Lecture 3: Transformations 1
CS559: Computer Graphics Lecture 9: 3D Transformation and Projection Li Zhang Spring 2010 Most slides borrowed from Yungyu ChuangYungyu Chuang.
Geometric Transformations Ceng 477 Introduction to Computer Graphics Computer Engineering METU.
OpenGL LAB III.
3D Ojbects: Transformations and Modeling. Matrix Operations Matrices have dimensions: Vectors can be thought of as matrices: v=[2,3,4,1] is a 1x4 matrix.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Viewing/Projections I.
OpenGL Matrices and Transformations Angel, Chapter 3 slides from AW, Red Book, etc. CSCI 6360/4360.
Objectives Introduce standard transformations Introduce standard transformations Derive homogeneous coordinate transformation matrices Derive homogeneous.
Forward Projection Pipeline and Transformations CENG 477 Introduction to Computer Graphics.
Final Review I University of British Columbia
Rendering Pipeline Fall, 2015.
Computer Graphics CC416 Week 14 3D Graphics.
CSE 167 [Win 17], Lecture 3: Transformations 1 Ravi Ramamoorthi
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2016
Transformations V, Viewing I Week 3, Fri Jan 22
3D Viewing cgvr.korea.ac.kr.
Rendering Pipeline Aaron Bloomfield CS 445: Introduction to Graphics
3D Computer Graphics (3080/GV10) Week 5-6 Tutorial 3
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.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2016
CS451Real-time Rendering Pipeline
CSC461: Lecture 19 Computer Viewing
Viewing/Projections I Week 3, Fri Jan 25
Transformations 6 University of British Columbia
OpenGL 2D Viewing Pipeline
Geometric Camera Models
Viewing II Week 4, Mon Jan 25
Transformations IV Week 3, Wed Jan 20
Lecture 13 Clipping & Scan Conversion
Last Time Canonical view pipeline Projection Local Coordinate Space
Chap 3 Viewing Pipeline Reading:
Viewing III Week 4, Wed Jan 27
Transformations III Week 3, Mon Jan 21
THREE-DIMENSIONAL VIEWING II
Transformations IV Week 3, Wed Jan 23
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2016
CS 352: Computer Graphics Chapter 5: Viewing.
Presentation transcript:

Viewing/Projections I Week 3, Fri Jan 25 http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008

Reading for This and Next 2 Lectures FCG Chapter 7 Viewing FCG Section 6.3.1 Windowing Transforms RB rest of Chap Viewing RB rest of App Homogeneous Coords

Review: Display Lists precompile/cache block of OpenGL code for reuse usually more efficient than immediate mode exact optimizations depend on driver good for multiple instances of same object but cannot change contents, not parametrizable good for static objects redrawn often display lists persist across multiple frames interactive graphics: objects redrawn every frame from new viewpoint from moving camera can be nested hierarchically snowman example: 3x performance improvement, 36K polys

Review: Computing Normals direction specifying orientation of polygon w=0 means direction with homogeneous coords vs. w=1 for points/vectors of object vertices used for lighting must be normalized to unit length can compute if not supplied with object

Review: Transforming Normals cannot transform normals using same matrix as points nonuniform scaling would cause to be not perpendicular to desired plane! given M, what should Q be? inverse transpose of the modelling transformation

Viewing

Using Transformations three ways modelling transforms place objects within scene (shared world) affine transformations viewing transforms place camera rigid body transformations: rotate, translate projection transforms change type of camera projective transformation

Scene graph Object geometry Rendering Pipeline Scene graph Object geometry Modelling Transforms Viewing Transform Projection Transform

Scene graph Object geometry Rendering Pipeline result all vertices of scene in shared 3D world coordinate system Scene graph Object geometry Modelling Transforms Viewing Transform Projection Transform

Scene graph Object geometry Rendering Pipeline result scene vertices in 3D view (camera) coordinate system Scene graph Object geometry Modelling Transforms Viewing Transform Projection Transform

Scene graph Object geometry Rendering Pipeline result 2D screen coordinates of clipped vertices Scene graph Object geometry Modelling Transforms Viewing Transform Projection Transform

Viewing and Projection need to get from 3D world to 2D image projection: geometric abstraction what eyes or cameras do two pieces viewing transform: where is the camera, what is it pointing at? perspective transform: 3D to 2D flatten to image

Rendering Pipeline Geometry Database Model/View Transform. Lighting Perspective Clipping Scan Conversion Depth Test Texturing Blending Frame- buffer

Rendering Pipeline Geometry Database Model/View Transform. Lighting Perspective Clipping Scan Conversion Depth Test Texturing Blending Frame- buffer

OpenGL Transformation Storage modeling and viewing stored together possible because no intervening operations perspective stored in separate matrix specify which matrix is target of operations common practice: return to default modelview mode after doing projection operations glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_PROJECTION);

Coordinate Systems result of a transformation names convenience mouse: leg, head, tail standard conventions in graphics pipeline object/modelling world camera/viewing/eye screen/window raster/device

Projective Rendering Pipeline object world viewing O2W W2V V2C OCS WCS VCS projection transformation modeling transformation viewing transformation clipping C2N CCS OCS - object/model coordinate system WCS - world coordinate system VCS - viewing/camera/eye coordinate system CCS - clipping coordinate system NDCS - normalized device coordinate system DCS - device/display/screen coordinate system perspective divide normalized device N2D NDCS viewport transformation device DCS

Viewing Transformation y VCS image plane z OCS z y Peye y x x WCS object world viewing OCS WCS VCS modeling transformation viewing transformation Mmod Mcam OpenGL ModelView matrix

Basic Viewing starting spot - OpenGL camera at world origin probably inside an object y axis is up looking down negative z axis why? RHS with x horizontal, y vertical, z out of screen translate backward so scene is visible move distance d = focal length where is camera in P1 template code? 5 units back, looking down -z axis

Convenient Camera Motion rotate/translate/scale versus eye point, gaze/lookat direction, up vector demo: Robins transformation, projection

OpenGL Viewing Transformation gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz) postmultiplies current matrix, so to be safe: glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz) // now ok to do model transformations demo: Nate Robins tutorial projection

Convenient Camera Motion rotate/translate/scale versus eye point, gaze/lookat direction, up vector y lookat x Pref WCS view up z eye Peye

From World to View Coordinates: W2V translate eye to origin rotate view vector (lookat – eye) to w axis rotate around w to bring up into vw-plane y z x WCS v u VCS Peye w Pref up view eye lookat

Deriving W2V Transformation translate eye to origin y z x WCS v u VCS Peye w Pref up view eye lookat

Deriving W2V Transformation rotate view vector (lookat – eye) to w axis w: normalized opposite of view/gaze vector g y z x WCS v u VCS Peye w Pref up view eye lookat

Deriving W2V Transformation rotate around w to bring up into vw-plane u should be perpendicular to vw-plane, thus perpendicular to w and up vector t v should be perpendicular to u and w y z x WCS v u VCS Peye w Pref up view eye lookat

Deriving W2V Transformation rotate from WCS xyz into uvw coordinate system with matrix that has columns u, v, w reminder: rotate from uvw to xyz coord sys with matrix M that has columns u,v,w MW2V=TR

W2V vs. V2W MW2V=TR we derived position of camera in world invert for world with respect to camera MV2W=(MW2V)-1=R-1T-1 inverse is transpose for orthonormal matrices inverse is negative for translations

W2V vs. V2W MW2V=TR we derived position of camera in world invert for world with respect to camera MV2W=(MW2V)-1=R-1T-1

Moving the Camera or the World? two equivalent operations move camera one way vs. move world other way example initial OpenGL camera: at origin, looking along -z axis create a unit square parallel to camera at z = -10 translate in z by 3 possible in two ways camera moves to z = -3 Note OpenGL models viewing in left-hand coordinates camera stays put, but world moves to -7 resulting image same either way possible difference: are lights specified in world or view coordinates?

World vs. Camera Coordinates Example a = (1,1)W C2 c b = (1,1)C1 = (5,3)W c = (1,1)C2= (1,3)C1 = (5,5)W b a C1 W