Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS559: Computer Graphics Lecture 27: Texture Mapping Li Zhang Spring 2008.

Similar presentations


Presentation on theme: "CS559: Computer Graphics Lecture 27: Texture Mapping Li Zhang Spring 2008."— Presentation transcript:

1 CS559: Computer Graphics Lecture 27: Texture Mapping Li Zhang Spring 2008

2 Today Continue on texture maping Reading – Shirley: Ch 11.2, 11.3, 11.4 – Redbook: Ch 9 – (optional) Moller and Haines: Real-Time Rendering, 3e, Ch 6 Linux: /p/course/cs559- lizhang/public/readings/6_texture.pdf Windows: P:\course\cs559- lizhang\public\readings\6_texture.pdf

3 Texture Mapping Many slides from Ravi Ramamoorthi, Columbia Univ, Greg Humphreys, UVA and Rosalee Wolfe, DePaul tutorial teaching texture mapping visually

4 Adding Visual Detail Basic idea: use images instead of more polygons to represent fine scale color variation

5 Parameterization geometry + = image texture map Q: How do we decide where on the geometry each color from the image should go?

6 Option: Varieties of mappings [Paul Bourke]

7 How to map object to texture? To each vertex (x,y,z in object coordinates), must associate 2D texture coordinates (s,t) So texture fits “nicely” over object

8 How to map object to texture? To each vertex (x,y,z in object coordinates), must associate 2D texture coordinates (s,t) So texture fits “nicely” over object

9 Outline Types of mappings Interpolating texture coordinates Broader use of textures

10 Planar mapping Like projections, drop z coord (u,v) = (x/W,y/H) Problems: what happens near silhouettes?

11 Cylindrical Mapping Cylinder: r, θ, z with (u,v) = (θ/(2π),z) – Note seams when wrapping around (θ = 0 or 2π)

12 Basic procedure First, map (square) texture to basic map shape Then, map basic map shape to object – Or vice versa: Object to map shape, map shape to square Usually, this is straightforward – Maps from square to cylinder, plane, … – Maps from object to these are simply coordinate transform

13 Spherical Mapping Convert to spherical coordinates: use latitude/long. – Singularities at north and south poles

14 Cube Mapping

15

16 Slides from Leonard Mcmillan

17 Outline Types of projections Interpolating texture coordinates Broader use of textures

18 1 st idea: Gouraud interp. of texcoords Using barycentric Coordinates

19 1 st idea: Gouraud interp. of texcoords Scan line

20 Artifacts McMillan’s demo of this is at http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture21/Slide05.html http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture21/Slide05.html Another example http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture21/Slide06.html What artifacts do you see? Why? Hint: problem is in interpolating parameters

21 Interpolating Parameters The problem turns out to be fundamental to interpolating parameters in screen-space – Uniform steps in screen space  uniform steps in world space Texture image

22 Slides from Jingyi Yu Linear Interpolation in Screen Space Compare linear interpolation in screen space Without loss of generality, let’s assume that the viewport is located 1 unit away from the center of projection. That is

23 Linear Interpolation in 3-Space to interpolation in 3-space: Slides from Jingyi Yu

24 How to make them Mesh Still need to scan convert in screen space... so we need a mapping from t values to s values. We know that the all points on the 3-space edge project onto our screen-space line. Thus we can set up the following equality: and solve for s in terms of t giving: Unfortunately, at this point in the pipeline (after projection) we no longer have z 1 and z 2 lingering around (Why? Efficiency, don’t need to compute 1/z all the time). However, we do have w 1 = 1/z 1 and w 2 = 1/z 2. Slides from Jingyi Yu

25 Interpolating Parameters We can now use this expression for s to interpolate arbitrary parameters, such as texture indices (u, v), over our 3-space triangle. This is accomplished by substituting our solution for s given t into the parameter interpolation. Therefore, if we premultiply all parameters that we wish to interpolate in 3-space by their corresponding w value and add a new plane equation to interpolate the w values themselves, we can interpolate the numerators and denominator in screen-space. We then need to perform a divide a each step to get to map the screen-space interpolants to their corresponding 3-space values. This is a simple modification to the triangle rasterizer that we developed in class. Slides from Jingyi Yu

26 1 st idea: Gouraud interp. of texcoords Scan line Replace I to uw, vw, and w, then compute (uw/w, and vw/w)

27 Perspective-Correct Interpolation In short… – Rather than interpolating u and v directly, interpolate u/z and v/z These do interpolate correctly in screen space Also need to interpolate z and multiply per-pixel – Problem: we don’t keep z anymore – Solution: we do keep w  1/z – So…interpolate uw and vw and w, and compute u = uw/w and v = vw/w for each pixel This unfortunately involves a divide per pixel http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture21/Slide14.html

28 Texture Mapping Linear interpolation of texture coordinates Correct interpolation with perspective divide Hill Figure 8.42 http://graphics.lcs.mit.edu/classes/6.8 37/F98/Lecture21/Slide14.html

29 Why don’t we notice? Traditional screen-space Gourand shading is wrong. However, you usually will not notice because the transition in colors is very smooth (And we don't know what the right color should be anyway, all we care about is a pretty picture). There are some cases where the errors in Gourand shading become obvious. When do we notice? – When switching between different levels-of-detail representations – At "T" joints.

30 Dealing with Incorrect Interpolation You can reduce the perceived artifacts of non-perspective correct interpolation by subdividing the texture-mapped triangles into smaller triangles (why does this work?). But, fundamentally the screen-space interpolation of projected parameters is inherently flawed. http://groups.csail.mit.edu/graphics/classes/6.837/F98/Lecture21/Slide15.html

31 Texture Map Filtering Naive texture mapping aliases badly Look familiar? int uval = (int) (u * W); int vval = (int) (v * H); int pix = texture.getPixel(uval, vval); Actually, each pixel maps to a region in texture – |PIX| < |TEX| Easy: interpolate (bilinear) between texel values – |PIX| > |TEX| Hard: average the contribution from multiple texels – |PIX| ~ |TEX| Still need interpolation!

32 Mip Maps Keep textures prefiltered at multiple resolutions – For each pixel, linearly interpolate between two closest levels (e.g., trilinear filtering) – Fast, easy for hardware Why “Mip” maps?

33 MIP-map Example No filtering: MIP-map texturing: AAAAAAAGH Where are my glasses?

34

35 Outline Types of projections Interpolating texture coordinates Broader use of textures

36 Texture Mapping Applications Modulation, light maps Bump mapping Displacement mapping Illumination or Environment Mapping Procedural texturing And many more

37 Modulation textures Map texture values to scale factor Wood texture

38 Bump Mapping Texture = change in surface normal! Sphere w/ diffuse textureSwirly bump map Sphere w/ diffuse texture and swirly bump map

39 Displacement Mapping

40 Illumination Maps Quake introduced illumination maps or light maps to capture lighting effects in video games Texture map: Texture map + light map: Light map

41 Cube map

42 Sphere map

43 Shaddow map

44 Environment Maps Images from Illumination and Reflection Maps: Simulated Objects in Simulated and Real Environments Gene Miller and C. Robert Hoffman SIGGRAPH 1984 “Advanced Computer Graphics Animation” Course Notes Terminator

45 Arc-length parameterization Freeform x y 0 1 t 0 L s Arc-length parameterization

46 Interpolating Parameters Perspective foreshortening is not getting applied to our interpolated parameters – Parameters should be compressed with distance – Linearly interpolating them in screen-space doesn’t do this Correct Mapping Results – http://graphics.lcs.mit.edu/classes/6.837/F98/Lec ture21/Slide14.html http://graphics.lcs.mit.edu/classes/6.837/F98/Lec ture21/Slide14.html


Download ppt "CS559: Computer Graphics Lecture 27: Texture Mapping Li Zhang Spring 2008."

Similar presentations


Ads by Google