texture_mapping - CAP4730: Computational Structures in...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: CAP4730: Computational Structures in Computer Graphics Texture Mapping Texture Mapping Outline Outline What is texture mapping? s Math behind texture mapping s OpenGL texture mapping s Advanced Topics in texture mapping s Marching towards Visual Marching towards Visual Realism http://www.3drender.com/jbirn/productions.html How do we do this? How do we do this? Another Example Another Example Using only Triangles Using only Triangles s s s s s 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 Texture A color array that holds an image s Similar to a framebuffer s gluint buffer[x*y*3] s 255 0 255 s Procedural Texture Procedural Texture s Calculate pixel values via functions Image Textures Image Textures Load pixel values from a file Let’s look at some games Let’s look at some games Texture Space Texture Space How would you store this in your program? s How much memory? s s s = [0…1] t = [0…1] t Object Space Object Space (u1,v1) (u0,v0) s Texture -> Object Transformation s = [0…1] t = [0…1] t u = [0…1] v = [0…1] (u3,v3) (u2,v2) Going from pixels to textures Going from pixels to textures Object -> Texture Transformation (s , t ) (u,v) Image -> Object Transformation ( x, y) What is the question? What is the question? s s s s s 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/cl asses/6.837/F98/Lecture21/ Slide05.html Tiling Tiling s Let’s look at the texture coordinates s t (u0,v0) (u3,v3) (u1,v1) (u2,v2) Textures built to Tile Textures built to Tile s Think Windows Background 0,0 0,1 s s 0,0 2,0 1,1 0,2 2,2 1,0 Why would you want this? Discuss the Pros and Cons of tiling. Look at code Filtering Filtering s Why does this happen? (u0,v0) (u1,v1) (u2,v2) Filtering Filtering s Why does this happen? (ui,vi) s (uj,vj) What are some alternatives? Combining Lighting + Combining Lighting + Texturing If you notice there is no lighting involved with texture mapping! s They are independent operations, which MAY (you decide) be combined s It all depends on how you “apply” the texture to the underlying triangle s Combining Lighting + Combining Lighting + Texturing s s s s s 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_page Screen space vs. world space Screen space vs. world space P0(x,y,z) V0(x,y) V1(x,y) P1(x,y,z) Interpolation in Screen Space Interpolation in Screen Space P ( t ) = V0 + t (V1 − V0 ) V0(x’,y’) x0 x1 x0 P( t ) = + t − z0 z1 z0 V1(x’,y’) z’=1 P1(x,y,z) P0(x,y,z) Interpolation in World Space Interpolation in World Space P ( t ) = P0 + s ( P − P0 ) 1 V0(x’,y’) x0 x1 x0 P ( t ) = + s − z0 z1 z0 V1(x’,y’) z’=1 P1(x,y,z) P0(x,y,z) Comparing the two Comparing the two P ( t ) = V0 + t (V1 − V0 ) x0 x1 x0 P( t ) = + t − z0 z1 z0 s s s s P ( t ) = P0 + s ( P − P0 ) 1 x x x P ( t ) = 0 + s 1 − 0 z0 z1 z0 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/classe s/6.837/F98/Lecture21/Slide14.h tml x0 x1 x0 x0 + s( x1 − x0 ) + t − = z0 z1 z0 z0 + s( z1 − z0 ) tz0 s= z1 + t ( z0 − z1 ) u = u0 + s(u1 − u0 ) v = v0 + s( v1 − v0 ) Other solutions Other solutions Cost of screen space interpolation now? s Increase # of triangles s x0 x1 x0 x0 + s( x1 − x0 ) + t − = z0 z1 z0 z0 + s( z1 − z0 ) tz0 s= z1 + t ( z0 − z1 ) u = u0 + s(u1 − u0 ) v = v0 + s( v1 − v0 ) Linear Interpolation is wrong? Linear Interpolation is wrong? Gouraud is wrong, but why does it look okay? s Q: Why does Texture mapping not look right even though we are doing the same thing? s A: All about the slope of the interpolation and the “gradualness” or “abruptness” of the change s Transparencies Transparencies We will revisit this later, but we can use the alpha channel to stencil out textures. s Thus per pixel, set alpha = 1 or alpha = 0. Where alpha = 0, s Let’s Look at some games Let’s Look at some games s Pick a favorite game from the class ...
View Full Document

Ask a homework question - tutors are online