pemetaan tekstur

35
Pemetaan Tekstur 1/35 Komputer Grafik 2 (AK045206) Pemetaan Tekstur

Upload: samson-parks

Post on 03-Jan-2016

129 views

Category:

Documents


3 download

DESCRIPTION

Pemetaan Tekstur. Outline. Memetakan tekstur ke permukaan datar Contoh-contoh dengan OpenGL Pemetaan ‘Bump’ MIPMAPS. Texture Mapping. Limited ability to generate complex surfaces with geometry Images can convey the illusion of geometry - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Pemetaan Tekstur

Pemetaan Tekstur 1/35

Komputer Grafik 2 (AK045206)

Pemetaan Tekstur

Page 2: Pemetaan Tekstur

Pemetaan Tekstur 2/35

Komputer Grafik 2 (AK045206)

Outline

• Memetakan tekstur ke permukaan datar

• Contoh-contoh dengan OpenGL

• Pemetaan ‘Bump’

• MIPMAPS

Page 3: Pemetaan Tekstur

Pemetaan Tekstur 3/35

Komputer Grafik 2 (AK045206)

Texture Mapping• Limited ability to generate complex

surfaces with geometry

• Images can convey the illusion of geometry

• Images painted onto polygons is called texture mapping

Page 4: Pemetaan Tekstur

Pemetaan Tekstur 4/35

Komputer Grafik 2 (AK045206)

Texture Maps• Images applied to polygons to enhance

the visual effect of a scene– Rectangular arrays of data

• Color, luminance, alpha• Components of array called texels

– We’ve also had volumetric voxels

Page 5: Pemetaan Tekstur

Pemetaan Tekstur 5/35

Komputer Grafik 2 (AK045206)

Texture Mapping• Texture map is an image, two-dimensional array of

color values (texels)• Texels are specified by texture’s (u,v) space• At each screen pixel, texel can be used to

substitute a polygon’s surface property (color)• We must map (u,v) space to polygon’s (s, t) space

U

V

S

T

Page 6: Pemetaan Tekstur

Pemetaan Tekstur 6/35

Komputer Grafik 2 (AK045206)

Texture Mapping• (u,v) to (s,t) mapping can be explicitly set

at vertices by storing texture coordinates with each vertex

• How do we compute (u,v) to (s,t) mapping for points in between– Watch for aliasing– Watch for many to one mappings– Watch for perspective foreshortening effects

and linear interpolation

Page 7: Pemetaan Tekstur

Pemetaan Tekstur 7/35

Komputer Grafik 2 (AK045206)

Example Texture Map

Applied to tilted polygon

Page 8: Pemetaan Tekstur

Pemetaan Tekstur 8/35

Komputer Grafik 2 (AK045206)

Example Texture Map

glVertex3d (s, s, s)glTexCoord2d(1,1);

glVertex3d (-s, -s, -s)glTexCoord2d(1,1);

Page 9: Pemetaan Tekstur

Pemetaan Tekstur 9/35

Komputer Grafik 2 (AK045206)

Example Texture Map

glVertex3d (s, s, s)glTexCoord2d(5, 5);

glVertex3d (s, s, s)glTexCoord2d(1, 1);

Page 10: Pemetaan Tekstur

Pemetaan Tekstur 10/35

Komputer Grafik 2 (AK045206)

Texture Coordinates• Every polygon has object coordinates and

texture coordinates– Object coordinates describe where polygon

vertices are on the screen– Texture coordinates describe texel

coordinates of each vertex (usually 0 -> 1)– Texture coordinates are interpolated along

vertex-vertex edges

• glTexCoord{1234}{sifd}(TYPE coords)

Page 11: Pemetaan Tekstur

Pemetaan Tekstur 11/35

Komputer Grafik 2 (AK045206)

Textures• Texture Object

– An OpenGL data type that keeps textures resident in memory and provides identifiers to easily access them

– Provides efficiency gains over having to repeatedly load and reload a texture

– You can prioritize textures to keep in memory– OpenGL uses least recently used (LRU) if no priority

is assigned

Page 12: Pemetaan Tekstur

Pemetaan Tekstur 12/35

Komputer Grafik 2 (AK045206)

Example use of Texture

• Read .bmp from file– Use Image data type

• getc() and fseek() to read image x & y size• fread() fills the Image->data memory with actual

red/green/blue values from .bmp

– Note• malloc() Image->data to appropriate size• .bmp stores color in bgr order and we convert to rgb

order

Page 13: Pemetaan Tekstur

Pemetaan Tekstur 13/35

Komputer Grafik 2 (AK045206)

Step 2 – create Texture Objects

• glGenTextures(1,

&texture[texture_num]); – First argument tells GL how many Texture

Objects to create– Second argument is a pointer to the place

where OpenGL will store the names (unsigned integers) of the Texture Objects it creates

• texture[] is of type GLuint

Page 14: Pemetaan Tekstur

Pemetaan Tekstur 14/35

Komputer Grafik 2 (AK045206)

Step 3 – Specify which texture object is about to be defined

• Tell OpenGL that you are going to define the specifics of the Texture Object it created– glBindTexture(GL_TEXTURE_2D, texture[texture_num]);

• Textures can be 1D and 3D as well

Page 15: Pemetaan Tekstur

Pemetaan Tekstur 15/35

Komputer Grafik 2 (AK045206)

Step 4 – Begin defining texture• glTexParameter()

– Sets various parameters that control how a texture is treated as it’s applied to a fragment or stored in a texture object

– // scale linearly when image bigger than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

– // scale linearly when image smaller than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

Page 16: Pemetaan Tekstur

Pemetaan Tekstur 16/35

Komputer Grafik 2 (AK045206)

Step 5 – Assign image data– glTexImage2D();GL_TEXTURE_2D (2D Texture)

0 (level of detail 0)

3 (3 components, RGB)

image1->sizeX (size)

image1->sizeY (size)

0 (no border pixel)

GL_RGB (RGB color order)

GL_UNSIGNED_BYTE (unsigned byte data)

image1->data (pointer to the data))

Page 17: Pemetaan Tekstur

Pemetaan Tekstur 17/35

Komputer Grafik 2 (AK045206)

glTexImage2D – Arg 1• GLenum target

– GL_TEXTURE_2D– GL_PROXY_TEXTURE_2D

• Provides queries for texture resources• Proceed with hypothetical texture use (GL won’t

apply the texture)• After query, call GLGetTexLevelParamter to verify

presence of required system components• Doesn’t check possibility of multiple texture

interference

Page 18: Pemetaan Tekstur

Pemetaan Tekstur 18/35

Komputer Grafik 2 (AK045206)

glTexImage2D – Arg 2• GLint level

– Used for Level of Detail (LOD)– LOD stores multiple versions of texture that

can be used at runtime (set of sizes)– Runtime algorithms select appropriate version

of texture• Pixel size of polygon used to select best texture• Eliminates need for error-prone filtering algorithms

Page 19: Pemetaan Tekstur

Pemetaan Tekstur 19/35

Komputer Grafik 2 (AK045206)

glTexImage2D – Arg 3• GLint internalFormat

– Describes which of R, G, B, and A are used in internal representation of texels

– Provides control over things texture can do• High bit depth alpha blending• High bit depth intensity mapping• General purpose RGB

– GL doesn’t guarantee all options are available on given hardware

Page 20: Pemetaan Tekstur

Pemetaan Tekstur 20/35

Komputer Grafik 2 (AK045206)

glTexImage2D – Args 4-6• GLsizei width• GLsizei height

– Dimensions of texture image• Must be 2m + 2b (b=0 or 1 depending on border) • min, 64 x 64

• GLint border– Width of border (1 or 0)

• Border allows linear blending between overlapping textures• Useful when manually tiling textures

Page 21: Pemetaan Tekstur

Pemetaan Tekstur 21/35

Komputer Grafik 2 (AK045206)

glTexImage2D – Args 7 & 8• GLenum format

– Describe how texture data is stored in input array

• GL_RGB, GL_RGBA, GL_BLUE…

• GLenum type – Data size of array components

• GL_SHORT, GL_BYTE, GL_INT…

Page 22: Pemetaan Tekstur

Pemetaan Tekstur 22/35

Komputer Grafik 2 (AK045206)

glTexImage2D – Arg 9

• Const GLvoid *texels– Pointer to data describing texture map

Page 23: Pemetaan Tekstur

Pemetaan Tekstur 23/35

Komputer Grafik 2 (AK045206)

Step 6 – Apply texture• Before defining geometry

– glEnable(GL_TEXTURE_2D);– glBindTexture(GL_TEXTURE_2D, texture[0]);

– glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

Page 24: Pemetaan Tekstur

Pemetaan Tekstur 24/35

Komputer Grafik 2 (AK045206)

glTexEnv()

GL_TEXTURE_ENV_MODE GL_DECAL

GL_REPLACE

GL_MODULATE

GL_BLEND

If GL_BLEND selected, second call to glTexEnv() must specify GL_TEXTURE_ENV_COLOR

4-float array for R,G,B,A blend

First argument to function is always GL_TEXTURE_ENV

Page 25: Pemetaan Tekstur

Pemetaan Tekstur 25/35

Komputer Grafik 2 (AK045206)

gluScaleImage()• Alters the size of an image to meet the 2m size

requirement of OpenGL– Scaling performed by linear and box filtering

glCopyTexImage2D()

• Use current frame buffer contents as texture

• Copy frame buffer to named texture location

Page 26: Pemetaan Tekstur

Pemetaan Tekstur 26/35

Komputer Grafik 2 (AK045206)

glTexSubImage2D()• Replace a region of current working

texture with a smaller texture• SubImage need not adhere to 2m size

limitation• This is how you add data from your

system’s camera to GL environment• glCopyTexSubImage2D

– Frame buffer cut and paste possible too

Page 27: Pemetaan Tekstur

Pemetaan Tekstur 27/35

Komputer Grafik 2 (AK045206)

Bump Mapping• Use textures to modify surface geometry

• Use texel values to modify surface normals of polygon

• Texel values correspond to height field– Height field models a rough surface

• Partial derivative of bump map specifies change to surface normal

Page 28: Pemetaan Tekstur

Pemetaan Tekstur 28/35

Komputer Grafik 2 (AK045206)

Bump Mapping

Page 29: Pemetaan Tekstur

Pemetaan Tekstur 29/35

Komputer Grafik 2 (AK045206)

Displacement Mapping• Bump mapped normals are inconsistent with

actual geometry. Problems arise (shadows).• Displacement mapping actually affects the

surface geometry

Page 30: Pemetaan Tekstur

Pemetaan Tekstur 30/35

Komputer Grafik 2 (AK045206)

Mipmaps• multum in parvo -- many things in a small

place • A texture LOD technique• Prespecify a series of prefiltered texture

maps of decreasing resolutions• Requires more texture storage• Eliminates shimmering and flashing as

objects move

Page 31: Pemetaan Tekstur

Pemetaan Tekstur 31/35

Komputer Grafik 2 (AK045206)

MIPMAPS• With versus without MIPMAP

Page 32: Pemetaan Tekstur

Pemetaan Tekstur 32/35

Komputer Grafik 2 (AK045206)

MIPMAPS• Arrange different versions into one block

of memory

Page 33: Pemetaan Tekstur

Pemetaan Tekstur 33/35

Komputer Grafik 2 (AK045206)

gluBuild2DMipmaps• Automatically constructs a family of

textures from original texture size down to 1x1

Page 34: Pemetaan Tekstur

Pemetaan Tekstur 34/35

Komputer Grafik 2 (AK045206)

Advanced Mipmaps

• You can specify additional mipmap levels on the fly– MIN_LOD may reduce popping– MAX_LOD may reduce over compression

• You can specify min mipmap level– Useful for mosaicing (Alphabet on a

texture)

Page 35: Pemetaan Tekstur

Pemetaan Tekstur 35/35

Komputer Grafik 2 (AK045206)

Referensi• 1: , 4:GraphicsSlides07.pdf , 9:Lecture14

• Buku Teks : 1. F.S.Hill, Jr., COMPUTER GRAPHICS – Using Open GL, Second Edition, Prentice Hall, 20012. Foley, van Dam, Feiner, Hughes, and Philips, Introduction to Computer Graphics, Addison Wesley,

2000• Lecture Notes / Slide-Presentation / Referensi lain yang diperoleh melalui internet :

3. Andries van Dam, Introduction to Computer Graphics, Slide-Presentation, Brown University, 2003, (folder : brownUni)

4. _______________, Interactive Computer Graphic, Slide-Presentation, (folder : Lect_IC_AC_UK)5. Michael McCool, CS 488/688 :Introduction to Computer Graphics, Lecture Notes, University of

Waterloo, 2003 (lecturenotes.pdf)6. _______________, Computer Science 559, Slide-Presentation, Wisconsin University,(folder :

Lect_Wisc_EDU)7. http://graphics.lcs.mit.edu/classses/6.837/F98/Lecture4/Slide23.html , Slide-Presentation, MIT,

(folder : MIT_CourseNote)8. _______________, CS 319 : Advance Topic in Computer Graphics, Slide-Presentation, (folder :

uiuc_cs)9. _______________, CS 445/645 : Introduction to Computer Graphics, Slide-Presentation,

(folder :COMP_GRAFIK)10. Gladimir V.G. Baranoski, CS 488 : Introduction to Computer Graphics , Waterloo University11. Prof. Peter Panfilov , http://cse.yeditepe.edu.tr/~osertel/courses/CSE484/index.html12. http://www.cl.cam.ac.uk/Teaching/1998/AGraphics/l3a.html