Texture Mapping Drawing Pictures on Polygons Texture Mapping
- Slides: 60
Texture Mapping Drawing Pictures on Polygons
Texture Mapping
Texture Mapping
Texture Coordinates (0, 1) (1, 1) (0, 0) (1, 0)
How Do We Use Textures? 1. Specify a texture from the input image. 2. Indicate how the texture is to be applied to each pixel. 3. Enable texture mapping. 4. Draw the scene, supplying both texture and geometric coordinates.
Sample code - setup • • • • • void myinit(void) { gl. Clear. Color (0. 0, 0. 0); gl. Enable(GL_DEPTH_TEST); gl. Depth. Func(GL_LEQUAL); make. Check. Image(); gl. Pixel. Storei(GL_UNPACK_ALIGNMENT, 1); gl. Tex. Image 2 D(GL_TEXTURE_2 D, 0, 3, check. Image. Width, check. Image. Height, 0, GL_RGB, GL_UNSIGNED_BYTE, &check. Image[0][0][0]); gl. Tex. Parameterf(GL_TEXTURE_2 D, GL_TEXTURE_WRAP_S, GL_CLAMP); gl. Tex. Parameterf(GL_TEXTURE_2 D, GL_TEXTURE_WRAP_T, GL_CLAMP); gl. Tex. Parameterf(GL_TEXTURE_2 D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); gl. Tex. Parameterf(GL_TEXTURE_2 D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); gl. Tex. Envf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); gl. Enable(GL_TEXTURE_2 D); gl. Shade. Model(GL_FLAT); }
Sample code - rendering • • • • void display(void) { gl. Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gl. Begin(GL_QUADS); gl. Tex. Coord 2 f(0. 0, 0. 0); gl. Vertex 3 f(-2. 0, -1. 0, 0. 0); gl. Tex. Coord 2 f(0. 0, 1. 0); gl. Vertex 3 f(-2. 0, 1. 0, 0. 0); gl. Tex. Coord 2 f(1. 0, 1. 0); gl. Vertex 3 f(0. 0, 1. 0, 0. 0); gl. Tex. Coord 2 f(1. 0, 0. 0); gl. Vertex 3 f(0. 0, -1. 0, 0. 0); gl. Tex. Coord 2 f(0. 0, 0. 0); gl. Vertex 3 f(1. 0, -1. 0, 0. 0); gl. Tex. Coord 2 f(0. 0, 1. 0); gl. Vertex 3 f(1. 0, 0. 0); gl. Tex. Coord 2 f(1. 0, 1. 0); gl. Vertex 3 f(2. 41421, 1. 0, -1. 41421); gl. Tex. Coord 2 f(1. 0, 0. 0); gl. Vertex 3 f(2. 41421, -1. 0, -1. 41421); gl. End(); gl. Flush(); }
Specifying a Texture
Specifying a Texture void gl. Tex. Image 2 D( GLenum GLint GLsizei GLint GLenum const GLvoid target, level, internal. Format, width, height, border, format, type, *pixels);
Specifying a Texture width and height specify the size of the texture. border indicates the width of the border which can be either 0 or 1 (to be explained soon). The dimensions of the texture MUST be: width = 2 n + 2 b ( where b is the ) height = 2 m + 2 b ( border width ).
Border
Multiple level of Detail • Mipmaps (SIGGRAPH 83) – many things in 1/2 a small place 1/2
Specifying a Texture level specifies the mipmapping level of the current texture. 0 - is the base level (highest resolution). n - is the nth level of resolution. When using mipmaps ALL levels from the highest resolution to a 1 x 1 map MUST be defined
Construct Mipmaps
Construct Mipmaps • Automatically construct a series of mipmaps and calls gl. Tex. Image*D() to load images • Not need powers of 2 about image dimensions
Filtering
Filtering • Why? Texture Polygon Magnification Texture Polygon Minification
Filtering
Filtering Mipmaps level
EWA • Elliptically weighted average filtering • The screen space partial derivatives of the texture coordinates define the axes of the ellipse(X, Y axes project to texture space) X Y
EWA Level = n. Levels – 1 + Log 2(minor. Length)
Mipmaps trilinear EWA
Wrapping Mode • Example: – gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_S, GL_CLAMP ) – gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_T, GL_REPEAT ) t s texture GL_REPEAT wrapping GL_CLAMP wrapping
Texture Functions • • You can specify how the texture-map colors are used to modify the pixel colors – gl. Tex. Envi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode); – mode values: • GL_REPLACE: replace pixel color with texture color • GL_DECAL: replace pixel color with texture color for GL_RGB texture • GL_BLEND: C = Cf(1 -Ct) + Cc. Ct, – Cf is the pixel color, Ct is the texture color, and Cc is some constant color • GL_MODULATE: C = Cf. Ct • More on Open. GL programming guide Example: Texture is applied after lighting, so how do you adjust the texture’s brightness? – Make the polygon white and light it normally – Use gl. Tex. Envi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE) – Then, texture color is multiplied by surface (fragment) color and appears lighted
Texture coordinates • We’ll discuss map shapes first. For a map shape that’s planar, we take an (x, y, z) value from the object and throw away (project) one of the components, which leaves us with a two-dimensional (planar) coordinate. We use the planar coordinate to look up the color in the texture map.
• A second shape used in texture mapping is a cylinder. An (x, y, z) value is converted to cylindrical coordinates of (r, theta, height). For texture mapping, we are only interested in theta and the height. To find the color in two-dimensional texture map, theta is converted into an s-coordinate and height is converted into a t-coordinate. This wraps the twodimensional texture map around the object. y s, t height
Spherical Mapping • Sphere with r=1
Mesh Parameterization Piponi and Borshukov, SIGGRAPH
Assign a parameter value Greiner and Hormann
Good parameterization? • Preserve geometry length, angle, area, . . . – Isometric parameterization • Keep the distortion as small as possible 3 D 2 D Greiner and Hormann
Applications • Texture mapping
Applications • Remesh 3 D mesh 2 D parameter space Resample from the 2 D parameter space Greiner and Hormann
Applications • Morphing Schreiner et al.
Parameterization Greiner and Hormann
Parameterization - projection method • The mesh vertices are projected to the intermediate surface to get the texture coordinates Greiner and Hormann, Lévy
Parameterization - linear energy method Greiner and Hormann
Parameterization - linear method Greiner and Hormann
Parameterization – texture stretch metric method • length-preserving (isometric) • angle-preserving (conformal) • area-preserving linear map 2 D texture domain γ=Γ=1 γ=Γ γΓ=1 surface in 3 D singular values: γ , Γ g G Sander et al.
Parameterization - unfold triangle method • Start from a seed triangle Sorkine et al.
Parameterization – virtual points …… …… Virtual Boundary ……
Parameterization – virtual points
Parameterization Positional constraints method 1 Lévy
Parameterization Positional constraints method 2 Kraevoy et al.
Parameterization – Positional constraints method 3
Parameterization – Positional constraints method 3 • Feature warping by using edge swap properly
Parameterization –Linear method implementation using iteration • First, place all boundary vertices on a convex 2 D polygon, ex. on the circle • Place the inner vertices on the center (0, 0) Y X 3 D polygon 2 D plane
Parameterization –Linear method implementation using iteration
• Parameterization –Linear method implementation using iteration Compute the inner vertices by following equations iteratively until convergence Y X 3 D polygon 2 D plane
Parameterization –Linear method implementation using iteration 3 D polygon 1 st iteration initial state 2 nd iteration
Parameterization –Linear method implementation using iteration • W. T. Tutte [1960] – barycentric map • M. Eck et al. [1995] – harmonic map • M. S. Floater [2003] – mean value coordinates
Y Parameterization –Linear method implementation X using linear solution AX=B, X=A-1 B
Linear System Library – Eigen • AX=B, the matrix A is a sparse matrix, so we can use the conjugate gradient stabilized solver • Eigen LIBRARY, Eigen: : Bi. CGSTAB • https: //eigen. tuxfamily. org/dox/class. Eigen_ 1_1 Bi. CGSTAB. html
Linear System Library – Eigen • • • int n = 10000; Vector. Xd x(n), b(n); Sparse. Matrix<double> A(n, n); /*. . . fill A and b. . . */ Bi. CGSTAB<Sparse. Matrix<double> > solver; solver. compute(A); x = solver. solve(b); std: : cout << "#iterations: " << solver. iterations() << std: : endl; std: : cout << "estimated error: " << solver. error() << std: : endl; /*. . . update b. . . */ x = solver. solve(b); // solve again
Linear System Library – Eigen • Filling a sparse matrix typedef Eigen: : Triplet<double> T; std: : vector<T> triplet. List; triplet. List. reserve(estimation_of_entries); for(. . . ) { //. . . triplet. List. push_back(T(i, j, v_ij)); } Sparse. Matrix. Type mat(rows, cols); mat. set. From. Triplets(triplet. List. begin(), triplet. List. end()); • Triplet<double> is a small structure to hold a non zero matrix element (i, j, value) • https: //eigen. tuxfamily. org/dox/group__Tut orial. Sparse. html
Parameterization-texture stretch metric [Texture Mapping Progressive Meshes, SIGGRAPH] length-preserving (isometric) angle-preserving (conformal) area-preserving linear map 2 D texture domain γ=Γ=1 γ=Γ γΓ=1 surface in 3 D singular values: γ , Γ g G Sander et al.
Parameterization Texture stretch implementation g 2 D texture domain G surface in 3 D
Parameterization Texture stretch implementation L 2(T) is the texture stretch metric (distortion of parameterization)
Parameterization Texture stretch implementation • For each vertex v, randomly select a direction D, move v along D within 1 -ring • If distortion(v) is large than the last iteration, restore v • Repeat this process until convergence
- What makes shapes similar
- Pictures and names of polygons
- Polygon classification
- visual texture is the illusion of an _________ texture.
- What is polynomial texture mapping (ptm)?
- Matlab texture mapping
- Texture mapping algorithm
- Texture map types
- 2d texture mapping
- Summed-area tables for texture mapping
- Texture mapping
- Texture mapping progressive meshes
- Universal pictures columbia pictures
- Columbia pictures universal pictures
- Objek gambar dari bentuk organik
- The weeping woman
- Invented textures
- The associative mapping is costlier than direct mapping.
- Forward mapping vs backward mapping
- Prinsip analisis dan desain
- Drawing conclusions pictures
- Food safety drawing pictures
- Arifa begum
- Face mapping drawing
- Isometric drawing shading
- Ansi standard drawing scales
- Spline shaft technical drawing
- Isometric orthographic perspective drawing
- Introduction of engineering drawing
- Technical drawing terms
- Kinds of isometric drawing
- Dr frost frequency tables
- What is a polygon
- Five sided shape
- Non congruent polygons
- Demi-regular tessellations
- Definition of similar polygons
- Two polygons are
- Similar polygons in real life
- Practice 8-2 similar polygons
- Determine whether each pair of polygons is similar
- Similar polygons
- Similar polygon definition
- Not polygon
- Reduce polygons
- Geometry chapter 8
- 12-1 prisms answers
- Example of polygon
- Polygons definition
- Concave and convex polygon
- Hierarchy of polygons
- Congruent polygons definition
- Similar polygons definition
- Lesson 11-4 areas of regular polygons
- Geometry section 11-4 areas of regular polygons answers
- Some polygons
- Unit 7 polygons and quadrilaterals
- Reflexive property of congruence
- Geometry area of regular polygons
- Dr frost angles in polygons
- Frequency polygons worksheet