1 / 39

Geometric Transforms

Geometric Transforms. Changing coordinate systems. The plan. Describe coordinate systems and transforms Introduce homogeneous coordinates Introduce numerical integration for animation Later: camera transforms physics more on vectors and matrices. World Coordinates.

garth-wall
Télécharger la présentation

Geometric Transforms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Geometric Transforms Changing coordinate systems

  2. The plan • Describe coordinate systems and transforms • Introduce homogeneous coordinates • Introduce numerical integration for animation • Later: • camera transforms • physics • more on vectors and matrices

  3. World Coordinates • Objects exist in the world without need for coordinate systems • But, describing their positions is easier with a frame of reference • “World” or “object-space” or “global” coordinates

  4. Screen vs World Coordinates • Some objects only exist on the screen • mouse pointer, “radar” display, score, UI elements • Screen coordinates typically 2D Cartesian • x, y • Objects in the world also appear on the screen – need to project world coordinates to screen coordinates • camera transform

  5. Coordinate Transforms • A Cartesian coordinate system has three things: • an origin – reference point measurements are taken from • axes – canonical directions • scale – meaning of units of distance

  6. Types of transforms • Translation • moving in a fixed position • Rotation • changing orientation • Scale • changing size • All can be viewed either as affecting the model or as affecting the coordinate system

  7. Changing coordinate systems • Translation: changing the origin of the coordinate system (5,13) (2,12) (0,0) (0,0)

  8. Changing coordinate systems • Rotation: changing the axes of the coordinate system (7,1) (5,5) (0,0) (0,0)

  9. Changing coordinate systems • Scaling: changing the units of the coordinate system (8,8) (4,4) (0,0) (0,0)

  10. Matrix Transforms • For "simplicity"s sake, we want to represent our transforms as matrix operations • Why is this simple? • single type of operation for all transforms • IMPORTANT: collection of transforms can be expressed as a single matrix • efficiency

  11. Scaling • If we express our 2D coordinates as (x,y), scaling by a factor a multiplies each coordinate: so (ax, ay) • Can write as a matrix multiplication: =

  12. Scaling Syntax Matrix.CreateScale( s ); • scalar argument s describes amount of scaling • alternatively, Matrix.CreateScale( v ); • vector argument v describes scale amount in x y z

  13. Rotation • Similarly, rotating a point by an angle θ: • (x,y)  (x cos θ - y sin θ, x sin θ + y cos θ) =

  14. Rotation Syntax Matrix.CreateRotationZ(angle) • Note, specify the axis about which the rotation occurs • also have CreateRotationX, CreateRotationY • argument is angle of rotation, in radians

  15. Translation • Translating a point by a vector involves a vector addition: • (x,y) + (s,t) = (x+s, y+t)

  16. Translation • Translating a point by a vector involves a vector addition: • (x,y) + (s,t) = (x+s, y+t) • Problem: cannot compose multiplications and additions into one operation

  17. Coordinate Transforms • Scaling: p’ = Sp • Rotation: p’ = Rp • Translation: p’ = t + p • Problem: Translation is treated differently.

  18. Homogeneous Coordinates • Add an extra coordinate w • 2D point written (x,y,w) • Cartesian coordinates of this point are (x/w, y/w) • w=0 represents points at infinity and should be avoided if representing location • [Aside: w=0 also used to represent vector, e.g., normal] • in practice, usually have w=1

  19. Translation now • (x,y,1) + (s,t,0) = (x+s,y+t, 1) =

  20. Composing Translations =

  21. Translation Syntax Matrix.CreateTranslation( v ); • vector v is the translation vector • Also, Matrix.CreateTranslation( x, y, z); • x, y, z are scalars (floats)

  22. Composing Transformations • Rotation, scale, and translate are all matrix multiplications • We can compose an arbitrary sequence of transformations into one matrix • C = T0T1…Tn-1Tn • Remember – order matters • In XNA, later transforms are added on the right

  23. Kinds of Transformations • Rigid transformations • composed of only rotations and translations • preserve distances between points • Affine transformations • include scales • preserve parallelism of lines • distances and angles might change

  24. More on Rotations • R matrix we wrote allows rotation about origin • Usually, origin and point of rotation do not coincide

  25. More on Rotations • Want to rotate about arbitrary point • How to achieve this?

  26. More on Rotations • Want to rotate about arbitrary point • How to achieve this? • Composite transform • first translate to origin • next, rotate desired amount • finally, translate back • C = T-1RT

  27. More on Order of Operations • AB != BA in general • But, AB = BA if: • A is translation, B is translation • A is scale, B is scale • A is rotation, B is rotation • A is rotation, B is scale (that preserves aspect ratio) • All in two dimensions, note Like transforms commute

  28. ISROT • ISROT: a mnemonic for the order of transformations • Identity: gets you started • Scale: change the size of your model • Rotation: rotate in place • Orbit: rotate about an external point • first translate • then rotate (about origin) • Translation: move to final position

  29. 3D transforms • Translation same as in 2D • use 4D homogeneous coordinates x,y,z,w • Scaling same as 2D • For rotation, need to specify axis • unique in 2D, but different possibilities available in 3D • can represent any 3D rotation by a composition of rotations about axes

  30. Transforming objects • So far, talked about transforming points • How about objects? • Lines get transformed sensibly with transforms on endpoints • Polygons same, mutatis mutandis

  31. Hierarchical Models • Many times, structures (and models) will be built as a hierarchy: Body Arm Other limbs... Hand Thumb other fingers...

  32. Transforms on Hierarchies • Transforms applied to nodes higher in the hierarchy are also applied to lower nodes • parent transforms propagate to children • How to achieve this? • Simple: multiply your transform with your parent's transform • May want a stack for hierarchy management • push transform on descending • pop when current node finished

  33. Transforms on Hierarchies • pseudocode for computing final transform: applyWorld = myWorld * parentWorld; • applyWorld is the final transform • myWorld is the local transform • parentWorld is the parent node's transform • The power of matrix transforms! Complex hierarchical models can be expressed simply.

  34. Moving objects • Want to get things to move • Can adjust transform parameters • translation amount • rotation, orbit angles • Just incorporate changes into Update() • Need to do this in a disciplined way

  35. Speed  position • If we know • where an object started • how fast it is moving (and the direction) • and how much time has passed • we can figure out where it is now • x(t + dt) = x(t) + v(t)dt • Numerical integration!

  36. Euler integration • Assumes constant speed within a timestep • still gives an answer if speed changes, but answer might be wrong • x(t + dt) = x(t) + v(t)dt • "Explicit integration" • Most commonly used in graphics/game applications

  37. Implementation • Time available in Update as gameTime object.position += object.velocity * gameTime.ElapsedGameTime.TotalSeconds; • if speed expressed in distance units per second • assumes that position and velocity are vectors • may have some way of updating velocity • physics, player control, AI, ... • Similar approach for angle updates (need angular velocity)

  38. Recap • How to use world transformations • scale, rotate, translate • Use of homogeneous coordinates for translation • Order of operations • ISROT • Animation and Euler integration

  39. Future lectures • matrix and vector math • camera transformations • illumination and texture • particle systems • linear physics

More Related