Modeling Transformations Sung-Eui Yoon ( ) Course URL: - - PowerPoint PPT Presentation

modeling transformations
SMART_READER_LITE
LIVE PREVIEW

Modeling Transformations Sung-Eui Yoon ( ) Course URL: - - PowerPoint PPT Presentation

CS380: Computer Graphics Modeling Transformations Sung-Eui Yoon ( ) Course URL: http://sglab.kaist.ac.kr/~sungeui/CG/ Class Objectives (Ch. 3.5) Know the classic data processing steps, rendering pipeline, for rendering primitives


slide-1
SLIDE 1

CS380: Computer Graphics

Modeling Transformations

Sung-Eui Yoon (윤성의)

Course URL: http://sglab.kaist.ac.kr/~sungeui/CG/

slide-2
SLIDE 2

2

Class Objectives (Ch. 3.5)

  • Know the classic data processing steps,

rendering pipeline, for rendering primitives

  • Understand 3D translations and rotations
slide-3
SLIDE 3

3

Outline

  • Where are we going?
  • Sneak peek at the rendering pipeline
  • Vector algebra
  • Modeling transformation
  • Viewing transformation
  • Projections
slide-4
SLIDE 4

4

The Classic Rendering Pipeline

  • Object primitives defined by

vertices fed in at the top

  • Pixels come out in the display at

the bottom

  • Commonly have multiple

primitives in various stages of rendering

slide-5
SLIDE 5

5

Modeling Transforms

  • Start with 3D models defined in

modeling spaces with their own modeling frames:

  • Modeling transformations orient models

within a common coordinate frame called world space,

  • All objects, light sources, and the camera

live in world space

  • Trivial rejection

attempts to eliminate

  • bjects that

cannot possibly be seen

  • An optimization

t n t 2 t 1

m ,..., m , m   

t

w 

slide-6
SLIDE 6

6

Illumination

  • I lluminate potentially visible objects
  • Final rendered color is determined by
  • bject’s orientation, its material

properties, and the light sources in the scene

slide-7
SLIDE 7

7

Viewing Transformations

  • Maps points from world space to

eye space:

  • Viewing position is transformed to

the origin

  • Viewing direction is oriented along

some axis

V

t t

w e   =

slide-8
SLIDE 8

8

Clipping and Projection

  • We specify a volume called a viewing

frustum

  • Map the view frustum to the unit cube
  • Clip objects against the view volume,

thereby eliminating geometry not visible in the image

  • Project objects

into two-dimensions

  • Transform from

eye space to normalized device coordinates

slide-9
SLIDE 9

9

Rasterization and Display

  • Transform normalized device

coordinates to screen space

  • Rasterization converts objects pixels
  • Almost every step in the rendering

pipeline involves a change of coordinate systems!

  • Transformations are central to

understanding 3D computer graphics

slide-10
SLIDE 10

10

But, this is a architectural

  • verview of a recent GPU (Fermi)
  • Unified

architecture

  • Highly parallel
  • Support CUDA

(general language)

  • Wide memory

bandwidth

slide-11
SLIDE 11

11

But, this is a architectural

  • verview of a recent GPU
slide-12
SLIDE 12

12

Recent CPU Chips (Intel’s Core i7 processors)

slide-13
SLIDE 13

13

Vector Algebra

  • We already saw vector addition and

multiplications by a scalar

  • Will study three kinds of vector

multiplications

  • Dot product (⋅)
  • returns a scalar
  • Cross product (×)
  • returns a vector
  • Tensor product (⊗)
  • returns a matrix
slide-14
SLIDE 14

14

Dot Product ( )

  • Returns a scalar s
  • Geometric interpretations s:
  • Length of projected onto

and or vice versa

  • Distance of from the origin

in the direction of

[ ] [ ]

s 1 b b b a a a b a b a s, b b b a a a b a b a

z y x z y x T z y x z y x T

=             = ≡ ⋅ =             = ≡ ⋅        

cosθ b a b a = ⋅ a θ b a b cosθ b b b  a

slide-15
SLIDE 15

15

Cross Product (×)

  • Return a vector that is perpendicular to both

and , oriented according to the right-hand rule

  • The matrix is called the skew-symmetric matrix of

c b c a c b b b a a a a a a b a

z y x x y x z y z

= ⋅ = ⋅ =                         − − − ≡ ×       

[ ]

x y y x z x x z y z z y

b a b a b a b a b a b a c − − − = c a b a

slide-16
SLIDE 16

16

Cross Product (×)

  • A mnemonic device for remembering the

cross-product

slide-17
SLIDE 17

17

Modeling Transformations

  • Vast majority of transformations are

modeling transforms

  • Generally fall into one of two classes
  • Transforms that move parts within the model
  • Transforms that relate a local model’s frame to

the scene’s world frame

  • Usually, Euclidean transforms, 3D rigid-

body transforms, are needed

c Mc c

t t 1 t 1

w m m    =  c Mc c ′ = 

t 1 t 1 t 1

m m m   

slide-18
SLIDE 18

18

Translations

  • Translate points by adding offsets to their

coordinates

  • The effect of this translation:

            = =  ′ =  1 t 1 t 1 t 1 T where c w Tc m c m c m Tc m c m

z y x t t t t t t

     

slide-19
SLIDE 19

19

3D Rotations

  • More complicated than 2D rotations
  • Rotate objects along a rotation axis
  • Several approaches
  • Compose three canonical rotations about the

axes

  • Quaternions
slide-20
SLIDE 20

20

Geometry of a Rotation

  • Natural basis for rotation of a vector about

a specified axis:

slide-21
SLIDE 21

21

Geometry of a Rotation

slide-22
SLIDE 22

22

Tensor Product ( )

  • Creates a matrix that when applied to a

vector return scaled by the project of

  • nto

a c c b

slide-23
SLIDE 23

23

Tensor Product ( )

  • Useful when
  • The matrix is called

the symmetric matrix of

  • We shall denote this

a b = a a ⊗

A a ) ( ) ( c a a c a a ⋅ = ⊗ =

slide-24
SLIDE 24

24

Sanity Check

  • Consider a rotation by about the x-axis
  • You can check it in any computer graphics

book, but you don’t need to memorize it

θ θ θ θ sin 1 1 ) cos 1 ( 1 cos 1 1 1 1 ) , 1 (             − + −             +             +             =             Rotate             − = 1 cos sin sin cos 1 θ θ θ θ

slide-25
SLIDE 25

25

Rotation using Affine Transformation

a ˆ

x  x  b  [ ]

           

1 ˆ t s

  • b

x a   

[ ]

           

1 ˆ t s R

  • b

x a

x θ

  

s t

Assume that these basis vectors are normalized

slide-26
SLIDE 26

26

Quaternion

  • Developed by W. Hamilton in 1843
  • Based on complex numbers
  • Two popular notations for a quaternion, q
  • w + xi + yj + zk, where i2= j2= k2= ijk = -1
  • [w, v], where w is a scalar and v is a vector
  • Conversion from the axis, v, and angle, t
  • q = [cos (t/ 2), sin (t/ 2) v]
  • Can represent rotation
  • Example: rotate by degree a along x axis:

qx = [cos (a/ 2), sin(a/ 2) (1, 0, 0)]

slide-27
SLIDE 27

27

Basic Quaternion Operations

  • Addition
  • q + q´ = [w + w´, v + v´]
  • Multiplication
  • qq´ = [ww´ - v · v´, v x v´ + wv´ + w´v]
  • Conjugate
  • q* = [w, -v]
  • Norm
  • N(q) = w 2 + x2 + y2+ z2
  • I nverse
  • q-1 = q* / N(q)
slide-28
SLIDE 28

28

Basic Quaternion Operations

  • q is a unit quaternion if N(q)= 1
  • Then q-1 = q*
  • I dentity
  • [1, (0, 0, 0)] for multiplication
  • [0, (0, 0, 0)] for addition
slide-29
SLIDE 29

29

Rotations using Quaternions

  • Suppose that you want to rotate a

vector/ point v with q

  • Then, the rotated v’
  • v´ = q r q-1, where r = [0, v])
  • Compositing rotations
  • R = R2 R1 (rotation R1 followed by rotation

R2)

slide-30
SLIDE 30

30

Quaternion to Rotation Matrix

  • Q = w + xi + yj + zk
  • Rm = | 1-2y2-2z2

2xy-2wz 2xz+ 2wy| | 2xy+ 2wz 1-2x2-2z2 2yz-2wx | | 2xz-2wy 2yz+ 2wx 1-2x2-2y2|

  • We can also convert a rotation matrix to a

quaternion

slide-31
SLIDE 31

31

Advantage of Quaternions

  • More efficient way to generate arbitrary

rotations

  • Less storage than 4 x 4 matrix
  • Easier for smooth rotation
  • Numerically more stable than 4x4 matrix

(e.g., no drifting issue)

  • More readable
slide-32
SLIDE 32

32

Class Objectives were:

  • Know the classic data processing steps,

rendering pipeline, for rendering primitives

  • Understand 3D translations and rotations
slide-33
SLIDE 33

33

PA2: Simple Animation & Transformation

slide-34
SLIDE 34

34

OpenGL: Display Lists

  • Display lists
  • A group of OpenGL commands stored for later

executions

  • Can be optimized in the graphics hardware
  • Thus, can show higher performance
  • Ver. 4.3: Vertex Array Object is much better
  • I mmediate mode
  • Causes commands to be executed immediately
slide-35
SLIDE 35

35

An Example

void drawCow() { if (frame == 0) { cow = new WaveFrontOBJ( "cow.obj" ); cowID = glGenLists(1); glNewList(cowID, GL_COMPILE); cow->Draw(); glEndList(); } .. glCallList(cowID); .. }

slide-36
SLIDE 36

36

API for Display Lists

Gluint glGenLists (range)

  • generate a continuous set of empty display lists

void glNewList (list, mode) & glEndList () : specify the beginning and end of a display list void glCallLists (list) : execute the specified display list

slide-37
SLIDE 37

37

OpenGL: Getting Information from OpenGL

void main( int argc, char* argv[] ) { … int rv,gv,bv; glGetIntegerv(GL_RED_BITS,&rv); glGetIntegerv(GL_GREEN_BITS,&gv); glGetIntegerv(GL_BLUE_BITS,&bv); printf( "Pixel colors = %d : %d : %d\n", rv, gv, bv ); …. } void display () { .. glGetDoublev(GL_MODELVIEW_MATRIX, cow2wld.matrix()); .. }

slide-38
SLIDE 38

38

Homework

  • Watch SI GGRAPH Videos
  • Go over the next lecture slides
slide-39
SLIDE 39

39

Next Time

  • Viewing transformations