Texture mapping


Published on

Computer Graphics

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Motivation:
    -- object/picture often has parts
    -- model once/instantiate multiple times
    -- modify only a part
  • Textures are images that can be thought of as continuous and be one, two, three, or four dimensional. By convention, the coordinates of the image are s, t, r and q. Thus for the two dimensional image above, a point in the image is given by its (s, t) values with (0, 0) in the lower-left corner and (1, 1) in the top-right corner.
    A texture map for a two-dimensional geometric object in (x, y, z) world coordinates maps a point in (s, t) space to a corresponding point on the screen.
  • The advantage of texture mapping is that visual detail is in the image, not in the geometry. Thus, the complexity of an image does not affect the geometric pipeline (transformations, clipping) in OpenGL. Texture is added during rasterization where the geometric and pixel pipelines meet.
  • Contouring: 1D texture
    Contour curves drawn on an object can provide valuable information about the object's geometry. Such curves may represent height above some plane (as in a topographic map) that is either fixed or moves with the object [Sabella 88]. Alternatively, the curves may indicate intrinsic surface properties, such as geodesics or loci of constant curvature. Contouring is achieved with texture mapping by first defining a one-dimensional texture image that is of constant color except at some spot along its length. Then, texture coordinates are computed for vertices of each polygon in the object to be contoured using a texture coordinate generation function. This function may calculate the distance of the vertex above some plane (Figure 4), or may depend on certain surface properties to produce, for instance, a curvature value. Modular arithmetic is used in texture coordinate interpolation to effectively cause the single linear texture image to repeat over and over. The result is lines across the polygons that comprise an object, leading to contour curves.
    A two-dimensional (or even three-dimensional) texture image may be used with two (or three) texture coordinate generation functions to produce multiple curves, each representing a different surface characteristic.
    Environment Mapping
  • When you want to map a texture onto a geometric primitive, you need to provide texture coordinates. The glTexCoord*() call sets the current texture coordinates. Valid texture coordinates are between 0 and 1, for each texture dimension, and the default texture coordinate is ( 0, 0, 0, 1 ). If you pass fewer texture coordinates than the currently active texture mode ( for example, using glTexCoord1d() while GL_TEXTURE_2D is enabled ), the additionally required texture coordinates take on default values.
  • Texture mapping

    1. 1. Texture    Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass, wall paper. Use geometry, model surface detail with polygons; good for large scale detail, too expensive otherwise. Improvement: map an image of the details onto simple geometry 1
    2. 2. The wall 2
    3. 3. The wall 3
    4. 4. The Wall: Brick 4
    5. 5. The Wall: Checkers 5
    6. 6. Texture Mapping y z x geometry t screen image s 6
    7. 7. Texture Mapping  Images and geometry flow through separate pipelines that join at the rasterizer  “complex” textures do not affect geometric complexity vertices geometry pipeline rasterizer image pixel pipeline 7
    8. 8. Texture mapping   Texture mapping: adding surface detail by mapping texture patterns to the surface Technique developed by Catmull (1974), Blinn and Newell (1976). 8
    9. 9. Texture mapping methods     2D texture mapping: paint 2D pattern onto the surface Environmental (reflection) mapping Bump mapping: Disturb surface normal to fool shading algorithms Procedural texture mapping, 3D texture 9
    10. 10. More Examples 10
    11. 11. Environment Mapping 11
    12. 12. 2D texture mapping overview Texture array is a 2D image pattern  With elements texels  Value at a texel affects surface appearance  The “texture map” determines how the pattern lies on the surface 12
    13. 13. 2D texture mapping overview Rendering uses the texture mapping  Find surface that is front most at current pixel  Find the surface patch corresponding to the pixel  Find the part of the texture pattern corresponding to the surface patch  Use that part of the texture pattern in setting the pixel color 13
    14. 14. 14
    15. 15. 2D texture mapping     Source: 2D pattern from drawing, photo, procedure Destination: any surface, easier if surface given in parametric form The map from 2D texture coord; to 3D object Texture mapping transformation: 2D screen coord;  3D object coord;  2D texture coord; and back (see previous slide) 15
    16. 16. Mapping the 2D texture to the surface      The map: 2D texture(s,t)  3D object(x,y,z) Mapping onto triangle is not difficult Mapping onto triangular mesh is more difficult (have to handle texture discontinuity) Mapping onto parametric surface is easier Alternative: use an intermediate parametric surface (cylinder, sphere) 16
    17. 17. Mapping a Texture   t 0, 1 Based on parametric texture coordinates glTexCoord*() specified at each vertex Texture Space 1, 1 (s, t) = (0.2, 0.8) A a b 0, 0 Object Space c (0.4, 0.2) B 1, 0 s C (0.8, 0.4) 17
    18. 18. Mapping texture onto parametric surface  Point on the parametric surface p : x = x(u , v), y = y (u , v), z = z (u , v) 18
    19. 19. Mapping texture onto parametric surface using liner map  The map from texture to the parametric coord using invertible linear map between the texture space (s,t) and the domain (u,v) p : x = x(u , v), y = y (u , v), z = z (u , v) u = as + bt + c v = ds + et + f 19
    20. 20. Mapping texture onto parametric surface, example Does not take into account curvature of surface Equal size texture patches are stretched to fit various areas 20
    21. 21. Mapping texture to a surface using an intermediate surface  Two-step mapping   Map the texture to a simple intermediate surface (sphere, cylinder, cube) Map the intermediate surface (with the texture) onto the surface being rendered 21
    22. 22. Two-step mapping example parametric form cylinder: x = r cos(2 PI u) y = r sin(2 PI u) z=vh 0<=u,v<=1 first step: u = s, v = t • sphere • cube • 22
    23. 23. Two-step mapping example Second-step: map intermediate surface to the surface being rendered • Various strategies: a, b, c • 23
    24. 24. The texture mapping transformation 24
    25. 25. Texture mapping transformation Consider surface visible at current pixel. Find the patch on the surface that corresponds to it. •Map screen coord of pixel corners back to object •Find texels that map to the surface patch •If multiple texels lie on patch combine them: weighted avg; supersampling with postfiltering 25
    26. 26. 2DTexture mapping in OpenGL Pixel pipeline Texture map done at rasterization stage 26
    27. 27. Environment Mapping Yoshihiro Mizutani and Kurt Reindel 27
    28. 28. Environment Mapping II   Put texture on a highly reflective object by picking up texture from the environment in which the object is absorbed/occupied. Realized as two-step process   Project the environment (excluding the object) onto an intermediate surface. Place object back, and map texture from intermediate surface to object 28
    29. 29. Environment Mapping III: methods   Sphere mapping Cube mapping 29
    30. 30. Sphere Mapping  Blinn and Newell’s method: for each environment mapped pixel compute the (viewer) reflection vector Technical Brief: Perfect reflections and Specular …. 30
    31. 31. Cubic mapping  Introduced by Greene in 1986.  Put a camera in the environment center and then project the environment onto the sides of a cube centered at the camera position. 31
    32. 32. BUMP Mapping  Bump mapping is a technique in computer graphics for simulating bumps and wrinkles on the surface of an object. This is achieved by perturbing the surface normal of the object and using the perturbed normal during lighting calculations. The result is an apparently bumpy surface rather than a smooth surface although the surface of the underlying object is not actually changed. Bump mapping was introduced by Blinn in 1978. 32
    33. 33. Bump mapping   2D Texture map creates odd looking rough surfaces Bump mapping: texture map that alters surface normals.    Use texture array to set a function which perturbs surface normals Altered normals match a bumpy surface Applying illumination model to the new normals shades the bumps correctly 33
    34. 34. Bump mapping Bump map is in texture array: d(s,t) << 1 • p point on the surface corresponding to texture coordinates s,t. • N the normal at p • p’ the bump point for p p’ = p + d(s,t)N We actually do not “bump” the surface, just the normal at p . • N’ the normal at p’ . This normal used by the illumination model at p . • 34
    35. 35. Bump mapping How to get N’ : • given two vectors tangent to the bumpy surface, N’ is their cross product • The two vectors follow from the partial derivatives of the p’ equation wrt u,v p’ = p + d(s,t)N These partial derivatives expressed in terms of the derivatives of d(s,t) as s,t change • 35