360 likes | 784 Views
Mapping method. Texture Mapping Environmental mapping (sphere mapping) (cube mapping). Introduction. When we deal with texture 2D image may use as texture for surface. Image format. Bitmap (bmp) TIFF 2 forms: uncompress and compressed JPG Compressed image Post Script (PS)
E N D
Mapping method Texture Mapping Environmental mapping (sphere mapping) (cube mapping)
Introduction • When we deal with texture • 2D image may use as texture for surface
Image format • Bitmap (bmp) • TIFF • 2 forms: uncompress and compressed • JPG • Compressed image • Post Script (PS) • used in printer control • Coded in 7 bit of ASCII character set • Understood by a large class of printer • Large in size • Encapsulated Post Script (EPS) • PS similar but add additional information for previewing images. • GIF • For index images with color table and an array of image indices.
Mapping Methods • Texture mapping • Pattern (texture) determined the color of fragment • Map on smooth surface • Bump mapping • Distort the normal vector • Make some bump on surface • Environmental mapping • Image that have the appearance of ray trace
Texture Mapping • Some patterns • Regardless of pattern • 1D for stripe, curve etc • 2D use to map on surface • 3D map on solid box
Two-Dimensional Texture Mapping • Mapping involved among 3 or 4 different coordinate systems. • Screen coordinate at first, Final at world coordinate system • World coordinate: object is described here • Texture coordinate: describe texture • Parametric coordinate: for the relation of curve or surface • Texture process • Start out with 2D image may come from • Photo scanning • Form by application • Brought into the memory array • Smallest element called texel (texture element) • texel is represented by T(s,t) (texel coordinate) • where s and t are texture coordinate. • Often range between 0 and 1
Mapping approach • General form of mapping • Let (x,y,z,w) be object coordinate. • They can be expressed as a function of textel coordinate. • Texture also can express as a function of World coordinate (inverse function)
Texture maps on a parametric surface. Method of texture mapping Map texture together with parametric on to geometric coordinate Last project onto the screen coordinate
Map the texture coordinate to geometric coordinate • Texture to screen coordinate • We interested in mapping area to area • Aliasing problem may happen
Direct mapping between texel coordinate to parametric coordinate
Two-part mapping • Use for map on curve surface • 2 steps • Map texture on intermediate surface • Map intermediate surface to surface being rendered • Useable both parametric and geometric coordinate
Suppose that map on the cylinder surface What happen if the object is sphere? Some distortion happen at the pole. Why ? Texture mapping with a cylinder
Mapping texture on the intermediate object to the desire surface • 3 possible strategies • a. Place the texture at the finding point of intersection of normal from object edge • b. place the texture at the interaction point of normal intersect the intermediate surface • c. draw a line from the center of the object to edge
Texture Mapping in OpenGL OpenGL pipelines merge at rendering (rasterization) stage process: maps 3D points to pixels on the display. visibility is test (with the z-buffer) and is shaded if visible. Vertices are mapped to texture coordinates in object defined stage, values can then be obtained by interpolation like color to polygons
Creating a texture process • Define texel array GLubytemy_texels[512][512]; // monochrome image or GLubytemy_texels[512][512][3]; // rgb image • Assign image to texture memory glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, my_texels); • Enable texture glEnable(GL_TEXTURE_2D);
Defining texture to object. • t and s have value between 0 and 1 correspond to texel array (mytexels) • Mapping can happened at object definition stage in glBegin and glEnd loop glBegin(GL_QUAD); glTexCoord2f(0.0,0.0); glVertex2f(x1, y1); glTexCoord2f(1.0,0.0); glVertex2f(x2, y2); glTexCoord2f(1.0,1.0); glVertex2f(x3, y3); glTexCoord2f(0.0,1.0); glVertex2f(x4, y4); glEnd(); Correspond of texel to image coordinate. Opengl use interpolate to match the image. Map texture using glTexCoord
Mapping condition Texture map condition (a) 100% (b) 50% of texture Mapping of texture to polygons. (a and b) Mapping of a checkerboard texture to a triangle. (c) Mapping of a checkerboard texture to a trapezoid.
When (s,t) outside (0,1) • We can set for repeat or clamp when value is out of bound • For clamping use GL_CLAMP instead of GL_REPEAT glTexParameteri(GL_TEXTURE_WRAP_S, GL_REPEAT); // for s glTexParameteri(GL_TEXTURE_WRAP_T, GL_CLAMP); // clamp t
Problem : Alias • Texel is rarely get the center • Use point sampling • Closet texel is use for interpolate • Weighted average of a group of texel • Linear filtering • Problem may occur at the edge • Add more texel row and colum • (2m+1)x(2n+1)
Most of texel doesn’t math the pixel Mapping texels to pixels condition (a) Magnification. (b) Minification. In both cases, use the value of the nearest point sampling. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); More smooth use GL_LINEAR instead of GL_NEAREST
When texel is larger than pixel ? • Use mipmapping technique for minification • We can reduce size of texel to match the image by let OpenGL interpolate for a small one gluBuild2DMipmaps(GL_TEXTURE_2D,3,64,64,GL_RGB,GL_UNSIGNED_BYTE, my_texels); Or control parameter level of glTexImage2D() instead glTexImage2D(GL_TEXTURE_2D, level, components, width, height, border, format, type, tarray);
Texture and shading • 2 options • Multiply the shading and texture by control glTexEnvi(GL_TEX_ENV,GL_TEX_ENV_MODE, GL_MODULATE); • Decal the texture to object glTexEnvi(GL_TEX_ENV,GL_TEX_ENV_MODE, GL_DECAL);
Projection correction • No need for orthogonal projection if linear interpolation is use • For perspective projection • due to non linear depth scaling • a better interpolation is apply by use glHint(GL_PERSPECTIVE_CORRECTION, GL_NICEST);
Texture transformation • As vertices definition • Transformation such as scaling, rotating, move etc • Texture coordinate store in the form of 4D matrix call texture matrix • Initially matrix is identical • Manipulate by glMatrixMode() glMatrixMode(GL_TEXTURE);
Texture object • An OpenGL technique to deal with multitexture • Former : • Load texture every time texture is change with glTexture2D() • Inefficient • Using texture object • Load all textures that need to texture memory • Only change the texture handle to switch between texture
Environmental / Reflection Maps • appear on highly specular surface eg. mirror • use physically base rendering method such as ray tracer • basic idea • follow the r = 2(v.n)n-v until intersect the environment • shad the reflect to the object • approximate using step 2
Cubemapping • A subtechnique of environmental mapping • OpenGL support which is called by glTexImage2D(GL_CUBE_MAP_dir_axis, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, my_texels); dir : POSITIVE / NEGATIVE axis : X, Y or Z • The object will be surrounded by environt with cube map
Bump mapping • Purtube the normal vector if disturb the normal by displace it in the normal direction with d(u,v) and () New point can find with and its normal
Bump (cont) Partial derivative of and and Calculation needs two arrays which disturbs texture and
Compositing techniques • Opacity and blending • Image compositing • Image compositing in OpenGL • Antialiasing • Back to front and front to back rendering • Depth cue and fog
Multirendering and Accumulation buffer • Scene antialising • Bump Mapping and Embossing • Image Processing • Image Extensions • Other multipass method
Sampling and Aliasing • sampling theory • reconstruction • quantization