University of British Columbia CPSC 314 Computer Graphics May-June 2005 Tamara Munzner Transformations I, II,

Slides:



Advertisements
Similar presentations
Today Composing transformations 3D Transformations
Advertisements

Computer Graphics Lecture 4 Geometry & Transformations.
Informationsteknologi Wednesday, November 7, 2007Computer Graphics - Class 51 Today’s class Geometric objects and transformations.
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 Jan-Apr 2007 Tamara Munzner Transformations I Week.
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 Review Guest Lecturer: Michiel van de Panne Week 1, Wed Jan 9
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.
Transformations IV Week 3, Wed Jan 23
Image Warping : Computational Photography Alexei Efros, CMU, Fall 2006 Some slides from Steve Seitz
© Tamara Munzner University of British Columbia Hierarchical modelling recap: composing transforms recap: composing transforms finish: rendering pipeline.
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 2008 Tamara Munzner OpenGL, GLUT, Transformations.
Computer Graphics (Fall 2008) COMS 4160, Lecture 3: Transformations 1
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.
Computer Graphics (Fall 2004) COMS 4160, Lecture 3: Transformations 1
CS 450: Computer Graphics 2D TRANSFORMATIONS
Geometric Objects and Transformations Geometric Entities Representation vs. Reference System Geometric ADT (Abstract Data Types)
Foundations of Computer Graphics (Fall 2012) CS 184, Lecture 3: Transformations 1
Mathematical Fundamentals
Transformations Aaron Bloomfield CS 445: Introduction to Graphics
C O M P U T E R G R A P H I C S Stuff CMSC 435 / 634 Transformations 1/29 Geometric Transformations Readings: Chapters 5-6.
CS 480/680 Computer Graphics Representation Dr. Frederick C Harris, Jr. Fall 2012.
Geometric Transformation. So far…. We have been discussing the basic elements of geometric programming. We have discussed points, vectors and their operations.
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 Jehee Lee Seoul National University.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2010 Tamara Munzner GLUT, Transformations.
16/5/ :47 UML Computer Graphics Conceptual Model Application Model Application Program Graphics System Output Devices Input Devices API Function.
1/50 CS148: Introduction to Computer Graphics and Imaging Transforms CS148: Introduction to Computer Graphics and Imaging Transforms.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
Transformations
Geometric Transformations Sang Il Park Sejong University Many slides come from Jehee Lee’s.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2016 Tamara Munzner Math Basics Week 1, Fri.
Foundations of Computer Graphics (Spring 2012) CS 184, Lecture 3: Transformations 1
Learning Objectives Affine transformations Affine transformations Translation Translation Rotation Rotation Scaling Scaling Reflection Reflection Shear.
Jinxiang Chai CSCE441: Computer Graphics 3D Transformations 0.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2005 Tamara Munzner Math Review Week 1, Fri.
Geometric Transformations Ceng 477 Introduction to Computer Graphics Computer Engineering METU.
Image Warping 2D Geometric Transformations
Modeling Transformation
Transformations. Modeling Transformations  Specify transformations for objects  Allows definitions of objects in own coordinate systems  Allows use.
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.
Forward Projection Pipeline and Transformations CENG 477 Introduction to Computer Graphics.
Final Review I University of British Columbia
Transformations 5 University of British Columbia
Transformations V, Viewing I Week 3, Fri Jan 22
Introduction to Computer Graphics CS 445 / 645
Transformations 6 University of British Columbia
Transformations 3 University of British Columbia
Transformations IV Week 3, Wed Jan 20
Transformations 4 University of British Columbia
Geometric Objects and Transformations (II)
Transformations IV Week 3, Mon Jan 22
Transformations III Week 3, Mon Jan 21
Transformations II Week 2, Fri Jan 18
Viewing/Projections I Week 3, Fri Jan 25
OpenGL, GLUT, Transformations I Week 2, Wed Jan 16
Transformations IV Week 3, Wed Jan 23
Transformations 2 University of British Columbia
Presentation transcript:

University of British Columbia CPSC 314 Computer Graphics May-June 2005 Tamara Munzner Transformations I, II, III Week 1, Thu May 12

2 Reading FCG Chap 5 (except 5.1.6, 5.3.1) FCG pages RB Chap Viewing: Sect. Viewing and Modeling Transforms until Viewing Transformations Sect. Examples of Composing Several Transformations through Building an Articulated Robot Arm RB Appendix Homogeneous Coordinates and Transformation Matrices until Perspective Projection RB Chapter Display Lists (it’s short)

3 Textbook Errata list at math review: also p 48 a x (b x c) != (a x b) x c transforms: p 91 should halve x (not y) in Fig 5.10 transforms: p 106 second line of matrices: [x p, y p, 1]

4 Correction: Vector-Vector Subtraction subtract: vector - vector = vector argument reversal 2

5 Correction: Vector-Vector Multiplication multiply: vector * vector = scalar dot product, aka inner product geometric interpretation lengths, angles can find angle between two vectors u2u2

6 Correction: Matrix Multiplication can only multiply (n,k) by (k,m) number of left cols = number of right rows legal undefined

7 Correction: Matrices and Linear Systems linear system of n equations, n unknowns matrix form Ax=b 1

8 Review: Rendering Pipeline GeometryDatabaseGeometryDatabase Model/ViewTransform.Model/ViewTransform. LightingLightingPerspectiveTransform.PerspectiveTransform. ClippingClipping ScanConversionScanConversion DepthTestDepthTest TexturingTexturing BlendingBlending Frame-bufferFrame-buffer

9 Correction: Scan Conversion scan conversion turn 2D drawing primitives (lines, polygons etc.) into individual pixels (discretizing/sampling) interpolate color across primitive generate discrete fragments GeometryDatabaseGeometryDatabase Model/ViewTransform.Model/ViewTransform. LightingLightingPerspectiveTransform.PerspectiveTransform. ClippingClipping ScanConversionScanConversion

10 Correction: Blending GeometryDatabaseGeometryDatabase Model/ViewTransform.Model/ViewTransform. LightingLightingPerspectiveTransform.PerspectiveTransform.ClippingClipping ScanConversionScanConversion DepthTestDepthTest TexturingTexturing BlendingBlending blending final image: write fragments to pixels draw from farthest to nearest no blending – replace previous color blending: combine new & old values with arithmetic operations

11 Correction: Framebuffer GeometryDatabaseGeometryDatabase Model/ViewTransform.Model/ViewTransform. LightingLightingPerspectiveTransform.PerspectiveTransform. ClippingClipping ScanConversionScanConversion DepthTestDepthTest TexturingTexturing BlendingBlending Frame-bufferFrame-buffer framebuffer video memory on graphics board that holds image double-buffering: two separate buffers draw into one while displaying other, then swap allows smooth animation, instead of flickering

12 Review: OpenGL void display() { glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0, 1.0, 0.0); glBegin(GL_POLYGON); glVertex3f(0.25, 0.25, -0.5); glVertex3f(0.75, 0.25, -0.5); glVertex3f(0.75, 0.75, -0.5); glVertex3f(0.25, 0.75, -0.5); glEnd(); glFlush(); } pipeline processing, set state as needed

13 Review: Event-Driven Programming main loop not under your control vs. procedural control flow through event callbacks redraw the window now key was pressed mouse moved callback functions called from main loop when events occur mouse/keyboard state setting vs. redrawing

14 Transformations

15 Overview 2D Transformations Homogeneous Coordinates 3D Transformations Composing Transformations Transformation Hierarchies Display Lists Transforming Normals Assignments

16 Transformations transforming an object = transforming all its points transforming a polygon = transforming its vertices

17 Matrix Representation represent 2D transformation with matrix multiply matrix by column vector apply transformation to point transformations combined by multiplication matrices are efficient, convenient way to represent sequence of transformations!

18 Scaling scaling a coordinate means multiplying each of its components by a scalar uniform scaling means this scalar is the same for all components:  2 2

19 non-uniform scaling: different scalars per component: how can we represent this in matrix form? Scaling X  2, Y  0.5

20 Scaling scaling operation: or, in matrix form: scaling matrix

21 2D Rotation  (x, y) (x′, y′) x ′ = x cos(  ) - y sin(  ) y ′ = x sin(  ) + y cos(  ) counterclockwise RHS

22 2D Rotation From Trig Identities x = r cos (  ) y = r sin (  ) x′ = r cos (  +  ) y′ = r sin (  +  ) Trig Identity… x′ = r cos(  ) cos(  ) – r sin(  ) sin(  ) y′ = r sin(  ) cos(  ) + r cos(  ) sin(  ) Substitute… x ′ = x cos(  ) - y sin(  ) y ′ = x sin(  ) + y cos(  )  (x, y) (x′, y′) 

23 2D Rotation Matrix easy to capture in matrix form: even though sin(q) and cos(q) are nonlinear functions of q, x′ is a linear combination of x and y y′ is a linear combination of x and y

24 2D Rotation: Another Derivation (x′,y′)  (x,y)

25 2D Rotation: Another Derivation (x′,y′) (x,y)  x y

26 2D Rotation: Another Derivation (x′,y′) (x,y)  x y  x y

27 2D Rotation: Another Derivation x ' B A (x′,y′) (x,y)

28 2D Rotation: Another Derivation x x ' B A (x′,y′) (x,y)  x

29 2D Rotation: Another Derivation x B A y y   (x′,y′) (x,y)  x ' 

30 Shear shear along x axis push points to right in proportion to height x y x y

31 Shear shear along x axis push points to right in proportion to height x y x y

32 Reflection x x reflect across x axis mirror

33 Reflection reflect across x axis mirror x x

34 2D Translation (x,y) (x’,y’)

35 2D Translation (x,y) (x′,y′) scaling matrixrotation matrix

36 2D Translation (x,y) (x′,y′) scaling matrixrotation matrix vector addition matrix multiplication

37 2D Translation (x,y) (x′,y′) scaling matrixrotation matrix translation multiplication matrix?? vector addition matrix multiplication

38 Linear Transformations linear transformations are combinations of shear scale rotate reflect properties of linear transformations satisifes T(sx+ty) = s T(x) + t T(y) origin maps to origin lines map to lines parallel lines remain parallel ratios are preserved closed under composition

39 Challenge matrix multiplication for everything except translation how to do everything with multiplication? then just do composition, no special cases homogeneous coordinates trick represent 2D coordinates (x,y) with 3-vector (x,y,1)

40 Homogeneous Coordinates our 2D transformation matrices are now 3x3: use rightmost column

41 Homogeneous Coordinates Geometrically point in 2D cartesian x y

42 Homogeneous Coordinates Geometrically point in 2D cartesian + weight w = point P in 3D homog. coords multiples of (x,y,w) form a line L in 3D all homogeneous points on L represent same 2D cartesian point example: (2,2,1) = (4,4,2) = (1,1,0.5) homogeneouscartesian / w x y w w=1

43 Homogeneous Coordinates Geometrically homogenize to convert homog. 3D point to cartesian 2D point: divide by w to get (x/w, y/w, 1) projects line to point onto w=1 plane when w=0, consider it as direction points at infinity these points cannot be homogenized lies on x-y plane (0,0,0) is undefined homogeneouscartesian / w x y w w=1

44 Homogeneous Coordinates Summary may seem unintuitive, but they make graphics operations much easier allow all linear transformations to be expressed through matrix multiplication use 4x4 matrices for 3D transformations

45 Affine Transformations affine transforms are combinations of linear transformations translations properties of affine transformations origin does not necessarily map to origin lines map to lines parallel lines remain parallel ratios are preserved closed under composition

46 3D Rotation About Z Axis glRotatef(angle,x,y,z); glRotatef(angle,0,0,1); general OpenGL command rotate in z

47 3D Rotation in X, Y glRotatef(angle,1,0,0); around x axis: glRotatef(angle,0,1,0); around y axis:

48 3D Scaling glScalef(a,b,c);

49 3D Translation glTranslatef(a,b,c);

50 3D Shear shear in x shear in y shear in z

51 Summary: Transformationstranslate(a,b,c) scale(a,b,c)

52 Undoing Transformations: Inverses (R is orthogonal)

53 Composing Transformations

54 Composing Transformations translation so translations add

55 Composing Transformations scaling rotation so scales multiply so rotations add

56 Composing Transformations Ta Tb = Tb Ta, but Ra Rb != Rb Ra and Ta Rb != Rb Ta

57 Composing Transformations FhFhFhFh FWFWFWFW suppose we want

58 Composing Transformations FhFhFhFh FWFWFWFW suppose we want FWFWFWFW FhFhFhFh Rotate(z,-90)

59 Composing Transformations FhFhFhFh FWFWFWFW suppose we want FWFWFWFW FhFhFhFh Rotate(z,-90) FWFWFWFW FhFhFhFh Translate(2,3,0)

60 Composing Transformations FhFhFhFh FWFWFWFW suppose we want FWFWFWFW FhFhFhFh Rotate(z,-90) FWFWFWFW FhFhFhFh Translate(2,3,0)

61 Composing Transformations which direction to read? right to left interpret operations wrt fixed coordinates moving object left to right interpret operations wrt local coordinates changing coordinate system

62 Composing Transformations which direction to read? right to left interpret operations wrt fixed coordinates moving object left to right interpret operations wrt local coordinates changing coordinate system OpenGL pipeline ordering!

63 Composing Transformations which direction to read? right to left interpret operations wrt fixed coordinates moving object left to right interpret operations wrt local coordinates changing coordinate system OpenGL updates current matrix with postmultiply glTranslatef(2,3,0); glRotatef(-90,0,0,1); glVertexf(1,1,1); specify vector last, in final coordinate system first matrix to affect it is specified second-to-last OpenGL pipeline ordering!

64 (2,1) (1,1) changing coordinate system moving object translate by (-1,0) Interpreting Transformations same relative position between object and basis vectors intuitive? OpenGL

65 Matrix Composition matrices are convenient, efficient way to represent series of transformations general purpose representation hardware matrix multiply matrix multiplication is associative p′ = (T*(R*(S*p))) p′ = (T*R*S)*p procedure correctly order your matrices! multiply matrices together result is one matrix, multiply vertices by this matrix all vertices easily transformed with one matrix multiply

66 Rotation About a Point: Moving Object FWFWFWFW translate p to origin rotate about p by : p by : rotate about origin translate p back

67 Rotation: Changing Coordinate Systems same example: rotation around arbitrary center

68 Rotation: Changing Coordinate Systems rotation around arbitrary center step 1: translate coordinate system to rotation center

69 Rotation: Changing Coordinate Systems rotation around arbitrary center step 2: perform rotation

70 Rotation: Changing Coordinate Systems rotation around arbitrary center step 3: back to original coordinate system

71 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

72 Rotation About an Arbitrary Axis axis defined by two points translate point to the origin rotate to align axis with z-axis (or x or y) perform rotation undo aligning rotations undo translation

Arbitrary Rotation problem: given two orthonormal coordinate systems XYZ and UVW find transformation from one to the other answer: transformation matrix R whose columns are U,V,W: Y Z X W V U

74 Arbitrary Rotation why? similarly R(Y) = V & R(Z) = W

75 Transformation Hierarchies

76 Transformation Hierarchies scene may have a hierarchy of coordinate systems stores matrix at each level with incremental transform from parent’s coordinate system scene graphroadstripe1 stripe2... car1car2... w1w3w2w4

77 Transformation Hierarchy Example 1 torso head RUarm RLarm Rhand RUleg RLleg Rfoot LUarm LLarm Lhand LUleg LLleg Lfootworld trans(0.30,0,0) rot(z, )

78 Transformation Hierarchies hierarchies don’t fall apart when changed transforms apply to graph nodes beneath

79 Demo: Brown Applets freeSoftware/catalogs/scenegraphs.html

80 Transformation Hierarchy Example 2 draw same 3D data with different transformations: instancing

81 Matrix Stacks challenge of avoiding unnecessary computation using inverse to return to origin computing incremental T 1 -> T 2 Object coordinates World coordinates T 1 (x) T 2 (x) T 3 (x)

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

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

84 Matrix Stacks advantages 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)

85 Transformation Hierarchy Example 3 FWFWFWFW FhFhFhFh FhFhFhFh glLoadIdentity();glTranslatef(4,1,0);glPushMatrix();glRotatef(45,0,0,1);glTranslatef(0,2,0);glScalef(2,1,1);glTranslate(1,0,0);glPopMatrix(); F1F1F1F1 FhFhFhFh FhFhFhFh FhFhFhFh FhFhFhFh FhFhFhFh

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

87 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

88 Single Parameter: simple parameters as functions of other params clock: control all hands with seconds s m = s/60, h=m/60, theta_s = (2 pi s) / 60, theta_m = (2 pi m) / 60, theta_h = (2 pi h) / 60

89 Single Parameter: complex mechanisms not easily expressible with affine transforms

90 Single Parameter: complex mechanisms not easily expressible with affine transforms

91 Display Lists

92 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

93 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 Nose glColor3f(1.0f, 0.5f, 0.5f); glRotatef(0.0f,1.0f, 0.0f, 0.0f); glutSolidCone(0.08f,0.5f,10,2); } // 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();

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

95 Making Display Lists 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

96 Transforming Normals

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

98 Computing Normals polygon: assume vertices ordered CCW when viewed from visible side of polygon normal for a vertex specify polygon orientation used for lighting supplied by model (i.e., sphere), or computed from neighboring polygons

99 Transforming Normals what is a normal? a direction homogeneous coordinates: w=0 means direction often normalized to unit length vs. points/vectors that are object vertex locations what are normals for? specify orientation of polygonal face used when computing lighting so if points transformed by matrix M, can we just transform normal vector by M too?

100 Transforming Normals translations OK: w=0 means unaffected rotations OK uniform scaling OK these all maintain direction

101 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)

102 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

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

104 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 Finding Correct Normal Transform transform a plane

105 Assignments

106 Assignments project 1 out today, due 11:59pm Wed May 18 you should start very soon! build giraffe out of cubes and 4x4 matrices think cartoon, not beauty template code gives you program shell, Makefile written homework 1 out today, due 4pm Wed May 18 theoretical side of material

107 Real Giraffes cgi.di.uoa.gr/~kmorfo/Images/Toronto/Giraffe.jpg

108 Articulated Giraffe

109 Articulated Giraffe

110 Demo

111 Project 1 Advice build then animate one section at a time ensure you’re constructing hierarchy correctly use body as scene graph root start with an upper leg consider using separate transforms for animation and modelling make sure you redraw exactly and only when necessary

112 Project 1 Advice finish all required parts before going for extra credit playing with lighting or viewing ok to use glRotate, glTranslate, glScale ok to use glutSolidCube, or build your own where to put origin? your choice center of object, range -.5 to +.5 corner of object, range 0 to 1

113 Project 1 Advice visual debugging color cube faces differently colored lines sticking out of glutSolidCube faces thinking about transformations move physical objects around play with demos Brown scenegraph applets

114 Project 1 Advice transitions safe to linearly interpolate parameters for glRotate/glTranslate/glScale do not interpolate individual elements of 4x4 matrix!

115 Labs Reminder in CICSR 011 today 3-4, 4-5 Thu labs are for help with programming projects Thursday slot deprecated first four weeks Tue labs are for help with written assignments Tuesday slot is fine no separate materials to be handed in after-hours door code