280 likes | 308 Views
CAP4730: Computational Structures in Computer Graphics. Texture Mapping. Outline. What is texture mapping? Math behind texture mapping OpenGL texture mapping Advanced Topics in texture mapping. Marching towards Visual Realism. http://www.3drender.com/jbirn/productions.html.
E N D
CAP4730: Computational Structures in Computer Graphics Texture Mapping
Outline • What is texture mapping? • Math behind texture mapping • OpenGL texture mapping • Advanced Topics in texture mapping
Marching towards Visual Realism http://www.3drender.com/jbirn/productions.html
Using only Triangles • Using only triangles to model everything is hard • Think about a label on a soup can • Instead of interpolating colors, map a pattern • Run Demo • How do you create a pattern?
Texture • A color array that holds an image • Similar to a framebuffer • gluint buffer[x*y*3] • 255 0 255
Procedural Texture • Calculate pixel values via functions
Image Textures Load pixel values from a file
Texture Space • How would you store this in your program? • How much memory? s s = [0…1] t = [0…1] t
Object Space (u1,v1) (u0,v0) s Texture -> Object Transformation s = [0…1] t = [0…1] u = [0…1] v = [0…1] (u3,v3) t (u2,v2)
Going from pixels to textures Object -> Texture Transformation Image -> Object Transformation (x,y) (s,t) (u,v)
What is the question? • A pixel (x,y) corresponds to what texture element (s,t)? • Q: How do we convert (s,t) into texture element coordinates? • TEXture Elements (TEXELS) • A: Linearly Interpolate texture coordinates! • http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture21/Slide05.html
Tiling • Let’s look at the texture coordinates (u1,v1) (u0,v0) s (u3,v3) t (u2,v2)
0,0 2,0 2,2 0,2 Textures built to Tile • Think Windows Background • Why would you want this? Discuss the Pros and Cons of tiling. • Look at code 0,0 1,0 0,1 1,1
Filtering • Why does this happen? (u0,v0) (u1,v1) (u2,v2)
Filtering • Why does this happen? • What are some alternatives? (ui,vi) (uj,vj)
Combining Lighting + Texturing • If you notice there is no lighting involved with texture mapping! • They are independent operations, which MAY (you decide) be combined • It all depends on how you “apply” the texture to the underlying triangle
Combining Lighting + Texturing • CT = Texture Color • CC = Base Triangle • Replace, CF = CT • Blend, CF = CT * CC • OpenGL: • glTexEnv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); • http://trant.sgi.com/opengl/docs/man_pages/hardcopy/GL/html/gl/texenv.html
Screen space vs. world space P0(x,y,z) V0(x,y) V1(x,y) P1(x,y,z)
Interpolation in Screen Space P0(x,y,z) V0(x’,y’) V1(x’,y’) P1(x,y,z) z’=1
Interpolation in World Space P0(x,y,z) V0(x’,y’) V1(x’,y’) P1(x,y,z) z’=1
Comparing the two • What do we need to interpolate in screen space now? • What happens if we don’t have Z? What have we discussed that doesn’t have Z? • Perspectively Correct Z • http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture21/Slide14.html
Other solutions • Cost of screen space interpolation now? • Increase # of triangles
Linear Interpolation is wrong? • Gouraud is wrong, but why does it look okay? • Q: Why does Texture mapping not look right even though we are doing the same thing? • A: All about the slope of the interpolation and the “gradualness” or “abruptness” of the change
Transparencies • We will revisit this later, but we can use the alpha channel to stencil out textures. • Thus per pixel, set alpha = 1 or alpha = 0. Where alpha = 0,
Let’s Look at some games • Pick a favorite game from the class