Transformations IV Week 3, Wed Jan 23

Slides:



Advertisements
Similar presentations
Using GLU/GLUT Objects GLU/GLUT provides very simple object primitives glutWireCube glutWireCone gluCylinder glutWireTeapot.
Advertisements

University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Transformations III Week.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Transformations II Week.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Display Lists, Viewing.
University of British Columbia CPSC 314 Computer Graphics May-June 2005 Tamara Munzner Transformations I, II,
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Transformations III Week.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Viewing/Projections I.
Math 1Hofstra University – CSC171A1 Modeling Objects by Polygonal Approximations Define volumetric objects in terms of surfaces patches that surround the.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Transformations Week 2,
Transformations II Week 2, Wed Jan 17
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Math Review Rendering.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Transformations II Week.
© Tamara Munzner University of British Columbia Hierarchical modelling recap: composing transforms recap: composing transforms finish: rendering pipeline.
Modeling Objects by Polygonal Approximations
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Transformations V Week.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner Math Review Week 1, Wed.
University of British Columbia CPSC 414 Computer Graphics Week 3, Monday 15 Oct 03 © Tamara Munzner 1 Hierarchies, Display Lists recap: matrix hierarchies,
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Transformations III Week.
2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.
CS 450: Computer Graphics 2D TRANSFORMATIONS
Geometric Objects and Transformations Geometric Entities Representation vs. Reference System Geometric ADT (Abstract Data Types)
3D Rendering with JOGL Introduction to Java OpenGL Graphic Library By Ricardo Veguilla
University of Texas at Austin CS 378 – Game Technology Don Fussell CS 378: Computer Game Technology 3D Engines and Scene Graphs Spring 2012.
Hierarchical Transformations Hierarchical Models Scene Graphs
Foundations of Computer Graphics (Fall 2012) CS 184, Lecture 2: Review of Basic Math
Transformations Dr. Amy Zhang.
TWO DIMENSIONAL GEOMETRIC TRANSFORMATIONS CA 302 Computer Graphics and Visual Programming Aydın Öztürk
Graphics Graphics Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실.
Geometric transformations The Pipeline
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2010 Tamara Munzner GLUT, Transformations.
Transforms Hierarchical Modeling Scene Graphs Using hierarchical modeling techniques in 3D software design Transforms Local basis Matrix math review Matrices.
Jinxiang Chai CSCE441: Computer Graphics 3D Transformations 0.
Jinxiang Chai Composite Transformations and Forward Kinematics 0.
Image Synthesis Rabie A. Ramadan, PhD 4. 2 Review Questions Q1: What are the two principal tasks required to create an image of a three-dimensional scene?
1/50 CS148: Introduction to Computer Graphics and Imaging Transforms CS148: Introduction to Computer Graphics and Imaging Transforms.
2 COEN Computer Graphics I Evening’s Goals n Discuss viewing and modeling transformations n Describe matrix stacks and their uses n Show basic geometric.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
Transformations
David Luebke1/10/2016 CS 551 / 645: Introductory Computer Graphics David Luebke
Geometric Transformations Sang Il Park Sejong University Many slides come from Jehee Lee’s.
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell Hierarchical Modeling.
Learning Objectives Affine transformations Affine transformations Translation Translation Rotation Rotation Scaling Scaling Reflection Reflection Shear.
1 Geometric Transformations-II Modelling Transforms By Dr.Ureerat Suksawatchon.
Jinxiang Chai CSCE441: Computer Graphics 3D Transformations 0.
Geometric Transformations Ceng 477 Introduction to Computer Graphics Computer Engineering METU.
CSCE 441: Computer Graphics: Hierarchical Models Jinxiang Chai.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Viewing/Projections I.
Transformations University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2016 Tamara Munzner.
CSE 167 [Win 17], Lecture 2: Review of Basic Math Ravi Ramamoorthi
Final Review I University of British Columbia
Transformations 5 University of British Columbia
IAT 355 Scene Graphs Feb 23, 2017 IAT 355.
Transformations V, Viewing I Week 3, Fri Jan 22
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2016
Transformations 6 University of British Columbia
Geometric Transformations
Transformations 3 University of British Columbia
Transformations IV Week 3, Wed Jan 20
Geometric Transformations
Transformations 4 University of British Columbia
The Modelview Matrix Lecture 8 Mon, Sep 10, 2007.
Transformations IV Week 3, Mon Jan 22
Transformations III Week 3, Mon Jan 21
CSCE441: Computer Graphics 2D/3D Transformations
Viewing/Projections I Week 3, Fri Jan 25
Transformations IV Week 3, Wed Jan 23
Transformations 2 University of British Columbia
Geometric Transformations
Hierarchical Modeling
CSCE 441: Computer Graphics: Hierarchical Models
Presentation transcript:

Transformations IV Week 3, Wed Jan 23 http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008

Readings for Jan 16-25 FCG Chap 6 Transformation Matrices except 6.1.6, 6.3.1 FCG Sect 13.3 Scene Graphs RB Chap Viewing Viewing and Modeling Transforms until Viewing Transformations Examples of Composing Several Transformations through Building an Articulated Robot Arm RB Appendix Homogeneous Coordinates and Transformation Matrices until Perspective Projection RB Chap Display Lists

Review: General Transform Composition transformation of geometry into coordinate system where operation becomes simpler typically translate to origin perform operation transform geometry back to original coordinate system

Review: Arbitrary Rotation C A Y Z X arbitrary rotation: change of basis given two orthonormal coordinate systems XYZ and ABC transformation from one to the other is matrix R whose columns are A,B,C:

Review: Transformation Hierarchies scene may have a hierarchy of coordinate systems stores matrix at each level with incremental transform from parent’s coordinate system scene graph road stripe1 stripe2 ... car1 car2 w1 w3 w2 w4

Review: Transformation Hierarchies demo: 1. all scene graph parts would be on top of each other if translation set to 0 everywhere 2. composition of transformations can be surprising and tricky even with just a few simple building blocks 3. negative scale is a reflection http://www.cs.brown.edu/exploratories/freeSoftware/catalogs/scenegraphs.html

Matrix Stacks challenge of avoiding unnecessary computation using inverse to return to origin computing incremental T1 -> T2 Object coordinates World coordinates T1(x) T2(x) T3(x)

Matrix Stacks D = C scale(2,2,2) trans(1,0,0) A B C D glPushMatrix() glPopMatrix() A B C DrawSquare() A B C A B C glPushMatrix() glScale3f(2,2,2) glTranslate3f(1,0,0) DrawSquare() glPopMatrix()

Modularization drawing a scaled square push/pop ensures no coord system change void drawBlock(float k) { glPushMatrix(); glScalef(k,k,k); glBegin(GL_LINE_LOOP); glVertex3f(0,0,0); glVertex3f(1,0,0); glVertex3f(1,1,0); glVertex3f(0,1,0); glEnd(); glPopMatrix(); }

Matrix Stacks advantages practical issues no need to compute inverse matrices all the time modularize changes to pipeline state avoids incremental changes to coordinate systems accumulation of numerical errors practical issues in graphics hardware, depth of matrix stacks is limited (typically 16 for model/view and about 4 for projective matrix)

Transformation Hierarchy Example 3 Fh Fh glLoadIdentity(); glTranslatef(4,1,0); glPushMatrix(); glRotatef(45,0,0,1); glTranslatef(0,2,0); glScalef(2,1,1); glTranslate(1,0,0); glPopMatrix(); Fh Fh Fh Fh Fh F1 FW

Transformation Hierarchy Example 4 glTranslate3f(x,y,0); glRotatef( ,0,0,1); DrawBody(); glPushMatrix(); glTranslate3f(0,7,0); DrawHead(); glPopMatrix(); glTranslate(2.5,5.5,0); DrawUArm(); glTranslate(0,-3.5,0); DrawLArm(); ... (draw other arm) y x

Hierarchical Modelling advantages define object once, instantiate multiple copies transformation parameters often good control knobs maintain structural constraints if well-designed limitations expressivity: not always the best controls can’t do closed kinematic chains keep hand on hip can’t do other constraints collision detection self-intersection walk through walls

Display Lists

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 http://www.lighthouse3d.com/opengl/displaylists

One Snowman void drawSnowMan() { glColor3f(1.0f, 1.0f, 1.0f); // Draw Body glTranslatef(0.0f ,0.75f, 0.0f); glutSolidSphere(0.75f,20,20); // Draw Head glTranslatef(0.0f, 1.0f, 0.0f); glutSolidSphere(0.25f,20,20); // Draw Eyes glPushMatrix(); glColor3f(0.0f,0.0f,0.0f); glTranslatef(0.05f, 0.10f, 0.18f); glutSolidSphere(0.05f,10,10); glTranslatef(-0.1f, 0.0f, 0.0f); glutSolidSphere(0.05f,10,10); glPopMatrix(); // Draw Nose glColor3f(1.0f, 0.5f , 0.5f); glRotatef(0.0f,1.0f, 0.0f, 0.0f); glutSolidCone(0.08f,0.5f,10,2); }

Instantiate Many Snowmen // Draw 36 Snowmen for(int i = -3; i < 3; i++) for(int j=-3; j < 3; j++) { glPushMatrix(); glTranslatef(i*10.0, 0, j * 10.0); // Call the function to draw a snowman drawSnowMan(); glPopMatrix(); } 36K polygons, 55 FPS

Making Display Lists 36K polygons, 153 FPS GLuint createDL() { GLuint snowManDL; // Create the id for the list snowManDL = glGenLists(1); glNewList(snowManDL,GL_COMPILE); drawSnowMan(); glEndList(); return(snowManDL); } snowmanDL = createDL(); for(int i = -3; i < 3; i++) for(int j=-3; j < 3; j++) { glPushMatrix(); glTranslatef(i*10.0, 0, j * 10.0); glCallList(Dlid); glPopMatrix(); } 36K polygons, 153 FPS

Transforming Normals

Transforming Geometric Objects lines, polygons made up of vertices transform the vertices interpolate between does this work for everything? no! normals are trickier

Computing Normals normal 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

Transforming Normals so if points transformed by matrix M, can we just transform normal vector by M too? translations OK: w=0 means unaffected rotations OK uniform scaling OK these all maintain direction

Transforming Normals nonuniform scaling does not work x-y=0 plane line x=y normal: [1,-1,0] direction of line x=-y (ignore normalization for now)

Transforming Normals apply nonuniform scale: stretch along x by 2 new plane x = 2y transformed normal: [2,-1,0] normal is direction of line x = -2y or x+2y=0 not perpendicular to plane! should be direction of 2x = -y

Planes and Normals plane is all points perpendicular to normal (with dot product) (matrix multiply requires transpose) explicit form: plane =

Finding Correct Normal Transform transform a plane given M, what should Q be? stay perpendicular substitute from above thus the normal to any surface can be transformed by the inverse transpose of the modelling transformation