Top Banner
Hofstra University 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
42

Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Dec 20, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 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

Page 2: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 2

The wall

Page 3: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 3

The wall

Page 4: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 4

The Wall: Brick

Page 5: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 5

The Wall: Checkers

Page 6: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 6

Texture Mapping

s

t

x

y

z

image

geometry screen

Ed Angel

Page 7: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 7

Texture Mapping and the OpenGL Pipeline

geometry pipelinevertices

pixel pipelineimage

rasterizer

Images and geometry flow through separate pipelines that join at the rasterizer “complex” textures do not affect

geometric complexity

Ed Angel

Page 8: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 8

Texture mapping Texture mapping: adding surface detail

by mapping texture patterns to the surface

Technique developed by Catmull (1974), Blinn and Newell (1976).

Page 9: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 9

Texture mapping methods

2D texture mapping: paint 2D pattern onto the surface

Environmental (reflection) mapping Bump mapping: perturb surface

normals to fool shading algorithms Procedural texture mapping, 3D

texture

Page 10: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 10

More Examples

Jim Blinn

Page 11: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 11

Environment Mapping

Yoshihiro Mizutani and Yoshihiro Mizutani and Kurt Reindel Kurt Reindel

Page 12: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 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

Page 13: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 13

2D texture mapping overview

Rendering uses the texture mapping Find surface that is front most at current

pixel Find the 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

Page 14: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 14

Page 15: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 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)

Page 16: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 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)

Page 17: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 17

Based on parametric texture coordinates

glTexCoord*() specified at each vertex

s

t1, 1

0, 1

0, 0 1, 0

(s, t) = (0.2, 0.8)

(0.4, 0.2)

(0.8, 0.4)

A

B C

a

bc

Texture Space Object Space

Mapping aTexture

Page 18: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 18

Mapping texture onto parametric surface Point on the parametric surface

),(),,(),,(: vuzzvuyyvuxxp

Page 19: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 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)

),(),,(),,(: vuzzvuyyvuxxp

fetdsv

cbtasu

Page 20: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 20

Mapping texture onto parametric surface, example

Does not take into account curvature of surfaceEqual size texture patches are stretched to fit various areas

Page 21: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 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

Page 22: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 22

Two-step mapping example

• parametric form cylinder: x = r cos(2 PI u) y = r sin(2 PI u) z = v h 0<=u,v<=1 first step: u = s, v = t • sphere • cube

Page 23: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 23

Two-step mapping example

• Second-step: map intermediate surface to the surface being rendered• Various strategies: a, b, c

Page 24: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 24

The texture mapping transformation

Page 25: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 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

Page 26: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 26

2DTexture mapping in OpenGL

Pixel pipeline

Texture map done at rasterization stage

Page 27: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 27

Texture Mapping in OpenGL

Get hold of texture array Create texture object and specify

texture for it Specify mode for applying texture

to pixels Enable texture mapping Draw the scene providing both

texture and geometric coordinates

Page 28: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 28

Create texture object and texture for it

Texel values could be up to 4D (R,G,B,A)

Texturing is expensive. Texture objects similar to display lists: faster to bind(reuse) stored texture than load with glTexImage*D()

Page 29: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 29

Using texture objects

Create texture names, glGenTextures() , Returns available id’s in second parameter

which is passed by reference static Gluint texName;

glGenTextures(1, &texName); Create and use texture objects:

glBindTexture(GL_TEXTURE_2D, texName); In first use: new texture object is created and

assigned the name; subsequent uses: activate the texture object

Page 30: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 30

Using texture objects

glBindTexture(), “sets” texture state, subsequent calls to glTexImage, glTexParameters,etc., store data in the active texture object

The data may include: texture image (mipmaps), width, height,border, internal format, texture properties (minmag filters, wrapping modes,…)

Page 31: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 31

2D texture mapping in OpenGL

Provide texture arrayGlubyte my_texels[512][512][3]; Specify which texture array to use glTexImage2D( GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, my_texels);

Enable texture mapping glEnable(GL_TEXTURE_2D); Specify map from texture array to object.

0 <= s, t <= 1 Assign texture coordinates to vertices

glTexCoord2f(s, t);

Page 32: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 32

Mapping texture coordinates to object

glBegin(GL_QUAD); glTexCoord2f(0.0,0.0); glVertex3f(x1,y1,z1); glTexCoord2f(1.0,0.0); glVertex3f(x2,y2,z2); glTexCoord2f(1.0,1.0); glVertex3f(x3,y3,z3); glTexCoord2f(0.0,1.0); glVertex3f(x4,y4,z4);glEnd();

Example: map the array to quadrilateral

Page 33: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 33

OpenGL texture parameters

glTexParameterf(GL_TEXTURE_WRAP_S,GL_REPEAT);

GL_CLAMP glTexParameterf(GL_TEXTURE_2D,

GL_TEXTURE_MAG_FILTER, GL_NEAREST); GL_LINEAR Mipmapping: create sequence of texture arrays at

different sizes, it will use the appropriate size. glBuild2DMipmaps(GL_TEXTURE_2D,…, my_texels);

Interaction between texturing and shading glTexEnvi(GL_TEX_ENV_MODE, GL_MODULATE);

GL_DECAL glHINT(GL_PERSPECTIVE_CORRECTION, GL_NICEST);

Page 34: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 34

Environment Mapping

Yoshihiro Mizutani and Yoshihiro Mizutani and Kurt Reindel Kurt Reindel

Page 35: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 35

Environment Mapping II

Put texture on a highly reflectivehighly reflective object by picking up texture from the environment in which the object is immersed.

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

Page 36: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 36

Environment Mapping III: methods

Sphere mapping Supported directly by OpenGL

Cube mapping Supported by the NV GeForce 256

GPU OpenGL extension: EXT_texture_cube

Page 37: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 37

Sphere Mapping

Blinn and Newell’s method: for each environment mapped pixel compute the (viewer) reflection vector

NV: Technical Brief: NV: Technical Brief: Perfecct reflections and Perfecct reflections and Specular ….Specular ….

Page 38: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 38

Blinn-Newell: problems

Borders Singularities at the poles

(convergence)

Page 39: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 39

Cubic mapping

Intrtoduced by Greene in 1986. O mapping: put a camera in the environment

center and then project the environment onto the sides of a cube centered at the camera position. Amounts to six scene renderings.

More uniform sampling then B-N The normalized reflection vector

determines which face to use for texturing. The reflection vector component with larges

abs value determines the side e.g. [-0.2,0.5,-0.84] selects the –Z face

Page 40: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 40

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

Page 41: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 41

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)NWe 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.

Page 42: Hofstra University1 Texture Motivation: to model realistic objects need surface detail: wood grain, stone roughness, scratches that affect shininess, grass,

Hofstra University 42

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