virtual realism texture mapping. the quest for visual realism

Post on 14-Dec-2015

235 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CSE 410 Computer Graphics Sessional

Virtual Realism

TEXTURE MAPPING

The Quest for Visual Realism

Why Texture Map?

So far we have done flat shading and Gouraud/Phong shadingNot good to represent everything in real world

What are some of our other options?Represent everything with tiny polygons

Geometry would get complicated very quickly

Apply textures across the polygonsThis allows for less geometry but the image

looks almost as good

Basic Concept

Textures are almost always rectangular array of pixels called texels (texture elements)

• Pasting an image onto a model• An image is mapped onto the 2D domain of a 3D model

Texture Coordinates

A texture is usually addressed by two numbers (s, t)s and t takes values in [0,1]

A vertex can be associated with a point on the texture by giving it one of these texture coordinatesglTexCoord*(s,t);glVertex*(x,y,z);

s

t

[0,0] [1, 0]

[0, 1]

Example Texture Map

Types of TexturesBitmap textures

Bitmapped representation of imagesRepresented by an array

Color3 texture(float s, float t){ Return txtr[(int)(s*c),(int)(t*r)]

}

Procedural texturesDefined by a mathematical function

In either case, we have a ‘texture function’texture(s,t)

Texture Mapping Problem

Texture space World space Screen space

(sx,sy)=Tws(Ttw (s*,t*))

Mapping Textures on Flat Surfaces

• Associate points on texture with points on the polygonal face– OpenGL uses the function glTexCoord*()

• sets the current texture coordinates

Rendering Textures on Flat Surfaces

Similar to Gouraud shadingConsider the current scan line ys

For each xs, compute the correct position P on the face

From that, obtain the correct texture coordinate (s,t)

xright

ys

ytop

ybott

xleft

(s0,t0)

(s3,t3)

(s1,t1)

(s2,t2)

xs

CaveatLinear interpolation does not work always!This is because…

Equal steps across a projected space do not corresponds to equal steps across the 3D space

Visualizing the Problem

Notice that uniform steps on the image plane do not correspond to uniform steps along the edge.

An Example

Proper Interpolation

If we move in equal steps across Ls on the screen, how should we step across texels along Lt in texture space?

Texture space Eye space Screen space

Proper InterpolationR(g) = lerp(A,B,g) r(f)=lerp(a,b,f), a = (a1, a2, a3, a4) or ( a1/a4, a2/a4, a3/a4)r1(f) = lerp(a1/a4, b1/b4, f)

A

B

R(g)M a

br(f)

• R(g) = lerp(A,B,g) • In homogenous coordinate [R(g),1]t

• = [lerp(A,B,g),1]t

• After perspective transformation M([lerp(A,B,g),1]t)• = lerp( M(A,1)t , M(B,1)t , g )• =[ lerp( a1, b1, g ) , lerp( a2, b2, g) , lerp(a3, b3, g) , lerp( a4, b4, g) ]• r1(f ) = lerp(a1,b1,g)/lerp(a4,b4,g)

Proper Interpolationr1(f) = lerp(a1/a4, b1/b4, f)r1(f ) = lerp(a1,b1,g)/lerp(a4,b4,g)

g = f / lerp((b4/a4), 1, f)

R(g) = A(1-g) + Bg= lerp(A1/a4, B1/b4, f) / lerp( 1/a4, 1/b4, f)

Proper Interpolation

a cooresponds to A which maps to texture (Sa, Ta)b corresponds to B which maps to texture ( Sb, Tb)

left = lerp(a,b,f)sleft(y) =lerp(SA/a4, SB/b4, f) / lerp( 1/a4, 1/b4, f)

Similar for tleft(y) and right pixelSimilar hyperbolic interpolation for intermediate pixels

a

b

a’

b’

yleft

right

Texture Maps and Visual Realism

Three different visual effects:1. Glowing objects

– Intensity is set equal to the texture value: I = texture(s,t)– Object appears to emit light or glow– Color can be added by considering the red, green and

blue components separately

2. Modulate reflection coefficients– Make texture appear to be painted on the surface– Change the reflection coefficients at each point by:

3. Bump mapping– Model the roughness of the surface

fsspddaa phongIlambertIItsI )(,texture

Bump Mapping

Bump Mapping Use texture map to perturb surface normal

Use texture array to set a function which perturbs surface normal Apply illumination model using perturbed normal

Bump Mapping

vuvuvuPvuP ,m,texture,, • The ‘perturbed’ surface becomes:

• One approximation to new normal m´(u,v) is:

vuvuvu ,d,m,m

where d is: vuuv PPvu texturemtexturem,d

Bump Mapping

vuvuvuPvuP ,m,texture,,

• The ‘perturbed’ surface becomes:

• To find the new normal m´(u,v)– Find two vectors tangent to the bumpy surface, then m´(u,v) is their

cross product– The two vectors follow from the partial derivatives of the P´(u,v)

equation wrt u,v

Wrapping Texture on Curved SurfacesWrap a label around a cylinder

• Wrap a label onto a sphere

References

Hill 8.5.1 – 8.5.3, 8.5.5

top related