Viewing and Texture Mapping In OPENGL. VIEWING 1.One or more objects 2.A viewer with a projection surface 3.Projectors that go from the object(s) to.

Slides:



Advertisements
Similar presentations
TEXTURE MAPPING JEFF CHASTINE 1. TEXTURE MAPPING Applying an image (or a texture ) to geometry 2D images (rectangular) 3D images (volumetric – such as.
Advertisements

CSC345: Advanced Graphics & Virtual Environments
Texture Mapping April 9, The Limits of Geometric Modeling Although graphics cards can render over 10 million polygons per second, that number.
OpenGL Texture Mapping
University of New Mexico
OpenGL Texture Mapping Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Classical Viewing CS4395: Computer Graphics 1 Mohan Sridharan Based on slides created by Edward Angel.
Texture Mapping Mohan Sridharan Based on slides created by Edward Angel 1 CS4395: Computer Graphics.
OpenGL Texture Mapping April 16, Angel: Interactive Computer Graphics 3E © Addison-Wesley 2002 Basic Stragegy Three steps to applying a texture.
CS 4731: Computer Graphics Lecture 17: Texturing Emmanuel Agu.
Texture Mapping A way of adding surface details Two ways can achieve the goal:  Surface detail polygons: create extra polygons to model object details.
CSE Real Time Rendering Week 11, 12, 13. Texture Mapping Courtesy: Ed Angel 2.
Computer Graphics Texture Mapping Eriq Muhammad Adams
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Texture Mapping. Scope Buffers Buffers Various of graphics image Various of graphics image Texture mapping Texture mapping.
Texture Mapping Course: Computer Graphics Presented by Fan Chen
Computer Graphics Ben-Gurion University of the Negev Fall 2012.
Mapping method Texture Mapping Environmental mapping (sphere mapping) (cube mapping)
An Interactive Introduction to OpenGL Programming Ed Angel
Computer Graphics I, Fall 2010 Classical Viewing.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Viewing Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
1 Classical Viewing. 2 Objectives Introduce the classical views Compare and contrast image formation by computer with how images have been formed by architects,
Imaging and Raster Primitives Vicki Shreiner. 2 Jobs Andrew Giles Andrew Giles Chuck Fultz Chuck Fultz SIGGraph - SIGGraph.
Computer Graphics Bing-Yu Chen National Taiwan University.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Texture Mapping. 2 Motivation A typical modern graphics card can handle 10s of millions of polygons a second. How many individual blades of grass are.
OpenGL Texture Mapping. 2 Objectives Introduce the OpenGL texture functions and options.
Texture Mapping Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
CS 480/680 Computer Graphics OpenGL Texture Mapping Dr. Frederick C Harris, Jr. Fall 2011.
1 Texture Mapping. 2 Texture Aliasing MIPmaps Environment Mapping Bump Mapping Displacement Mapping Shadow Maps Solid Textures Antialiasing.
Texture Mapping Software College, Shandong University Instructor: Zhou Yuanfeng
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
CS5500 Computer Graphics March 12, 2007.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Classical Viewing Ed Angel Professor of Computer Science, Electrical and Computer Engineering,
1 Graphics CSCI 343, Fall 2015 Lecture 25 Texture Mapping.
Classical Viewing Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Texture Mapping and NURBS Week 7 David Breen Department of Computer Science Drexel University Based on material from Ed Angel, University of New Mexico.
Texture Mapping. For Further Reading Angel 7 th Ed: ­Chapter 7: 7.3 ~ 7.9 Beginning WebGL: ­Chapter 3 2.
Viewing Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
1 Chapter 7 Texture Mapping. 2 The Limits of Geometric Modeling Although graphics cards can render over 10 million polygons per second, that number is.
CS425 © 2003 Ray S. Babcock Pixels and Bitmaps ● OpenGL allows us to work directly with bits and groups of bits, or pixels, which flow down a parallel.
University of New Mexico
Buffers and texture mapping
Texture Mapping.
Computer Graphics Texture Mapping
Madhulika (18010), Assistant Professor, LPU.
Introduction to Computer Graphics with WebGL
CSC461: Lecture 18 Classical Viewing
OpenGL Texture Mapping
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
Classical Viewing Ed Angel
OpenGL Texture Mapping
Introduction to Computer Graphics with WebGL
Introduction to Computer Graphics with WebGL
Isaac Gang University of Mary Hardin-Baylor
Introduction to Computer Graphics with WebGL
Introduction to Computer Graphics with WebGL
3D Game Programming Texture Mapping
Viewing (Projections)
OpenGL Texture Mapping
Texture Mapping Ed Angel Professor Emeritus of Computer Science
University of New Mexico
Isaac Gang University of Mary Hardin-Baylor
OpenGL Texture Mapping
Texture Mapping Ed Angel Professor Emeritus of Computer Science
3D Game Programming Texture Mapping
OpenGL Texture Mapping
Presentation transcript:

Viewing and Texture Mapping In OPENGL

VIEWING

1.One or more objects 2.A viewer with a projection surface 3.Projectors that go from the object(s) to the projection surface

VIEWING

Perspective Projection

VIEWING Parallel Projection

VIEWING Both

VIEWING Orthographic Projection

E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Allow projection plane to move relative to object classify by how many angles of a corner of a projected cube are the same none: trimetric two: dimetric three: isometric  1  3  2 VIEWING Axonometric projections

VIEWING Axonometric projections

VIEWING Axonometric projections

12 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 VIEWING Types of Axonometric Projections

13 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Lines are scaled (foreshortened) but can find scaling factors Lines preserved but angles are not Projection of a circle in a plane not parallel to the projection plane is an ellipse Can see three principal faces of a box-like object Some optical illusions possible Parallel lines appear to diverge Does not look real because far objects are scaled the same as near objects Used in CAD applications VIEWING Axonometric projections - Advantages and Disadvantages

14 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Oblique Projection Arbitrary relationship between projectors and projection plane VIEWING

15 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Advantages and Disadvantages Can pick the angles to emphasize a particular face Architecture: plan oblique, elevation oblique Angles in faces parallel to projection plane are preserved while we can still see “around” side In physical world, cannot create with simple camera; possible with bellows camera or special lens (architectural) VIEWING

16 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Perspective Projection Projectors coverge at center of projection VIEWING

17 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Vanishing Points Parallel lines (not parallel to the projection plan) on the object converge at a single point in the projection (the vanishing point) Drawing simple perspectives by hand uses these vanishing point(s) vanishing point VIEWING

18 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Three-Point Perspective No principal face parallel to projection plane Three vanishing points for cube VIEWING

19 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Two-Point Perspective On principal direction parallel to projection plane Two vanishing points for cube VIEWING

20 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 One-Point Perspective One principal face parallel to projection plane One vanishing point for cube VIEWING

21 E. Angel and D. Shreiner : Interactive Computer Graphics 6E © Addison-Wesley 2012 Advantages and Disadvantages Objects further from viewer are projected smaller than the same sized objects closer to the viewer (diminution) Looks realistic Equal distances along a line are not projected into equal distances (nonuniform foreshortening) Angles preserved only in planes parallel to the projection plane More difficult to construct by hand than parallel projections (but not more difficult by computer) VIEWING

VIEWING IN OPENGL clipped out z=0 2

VIEWING IN OPENGL gluLookAt LookAt(eye, at, up)

VIEWING IN OPENGL gluLookAt LookAt(eye, at, up)

VIEWING IN OPENGL glfrustum Frustum(left,right,bottom,top,near,far)

VIEWING IN OPENGL DIFFERENCES Frustum(left,right,bottom,top,near,far)

VIEWING IN OPENGL gluPerspective Perpective(fovy, aspect, near, far) aspect = w/h front plane

VIEWING IN OPENGL gluPerspective Perpective(fovy, aspect, near, far)

Texture Mapping

TEXTURE MAPPING Texture Mapping Uses images to fill inside of polygons Environment (reflection mapping) Uses a picture of the environment for texture maps Allows simulation of highly specular surfaces Bump mapping Emulates altering normal vectors during the rendering process

TEXTURE MAPPING geometric model texture mapped

TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Is it simple? Although the idea is simple---map an image to a surface---there are 3 or 4 coordinate systems involved 2D image 3D surface TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 parametric coordinates texture coordinates world coordinates window coordinates TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Mapping Functions Basic problem is how to find the maps Consider mapping from texture coordinates to a point a surface Appear to need three functions x = x(s,t) y = y(s,t) z = z(s,t) But we really want to go the other way s t (x,y,z) TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Two-part mapping One solution to the mapping problem is to first map the texture to a simple intermediate surface Example: map to cylinder TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Cylindrical Mapping parametric cylinder x = r cos 2  u y = r sin 2  u z = v/h maps rectangle in u,v space to cylinder of radius r and height h in world coordinates s = u t = v maps from texture space TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Spherical Map We can use a parametric sphere x = r cos 2  u y = r sin 2  u cos 2  v z = r sin 2  u sin 2  v in a similar manner to the cylinder but have to decide where to put the distortion Spheres are used in environmental maps TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Box Mapping Easy to use with simple orthographic projection Also used in environment maps TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Second Mapping Map from intermediate object to actual object Normals from intermediate to actual Normals from actual to intermediate Vectors from center of intermediate intermediate actual TEXTURE MAPPING

E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Aliasing Point sampling of the texture can lead to aliasing errors point samples in u,v (or x,y,z) space point samples in texture space miss blue stripes TEXTURE MAPPING

42 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Area Averaging A better but slower option is to use area averaging Note that preimage of pixel is curved pixel preimage TEXTURE MAPPING

OpenGL Texture Mapping Ed Angel Professor Emeritus of Computer Science University of New Mexico 43 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012

44 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Objectives Introduce the OpenGL texture functions and options

45 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Basic Stragegy Three steps to applying a texture 1.specify the texture read or generate image assign to texture enable texturing 2.assign texture coordinates to vertices Proper mapping function is left to application 3.specify texture parameters wrapping, filtering

46 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Texture Mapping s t x y z image geometry display

47 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Texture Example The texture (below) is a 256 x 256 image that has been mapped to a rectangular polygon which is viewed in perspective

48 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Texture Mapping and the OpenGL Pipeline geometry pipeline vertices pixel pipeline image fragment processor Images and geometry flow through separate pipelines that join during fragment processing “complex” textures do not affect geometric complexity

49 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Define a texture image from an array of texels (texture elements) in CPU memory Glubyte my_texels[512][512]; Define as any other pixel map Scanned image Generate by application code Enable texture mapping glEnable(GL_TEXTURE_2D) OpenGL supports 1-4 dimensional texture maps Specifying a Texture Image

50 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Define Image as a Texture glTexImage2D( target, level, components, w, h, border, format, type, texels ); target: type of texture, e.g. GL_TEXTURE_2D level: used for mipmapping (discussed later) components: elements per texel w, h: width and height of texels in pixels border: used for smoothing (discussed later) format and type: describe texels texels: pointer to texel array glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, my_texels);

51 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Based on parametric texture coordinates glTexCoord*() specified at each vertex s t 1, 1 0, 1 0, 01, 0 (s, t) = (0.2, 0.8) (0.4, 0.2) (0.8, 0.4) A BC a b c Texture SpaceObject Space Mapping a Texture

52 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Typical Code offset = 0; GLuint vPosition = glGetAttribLocation( program, "vPosition" ); glEnableVertexAttribArray( vPosition ); glVertexAttribPointer( vPosition, 4, GL_FLOAT, GL_FALSE, 0,BUFFER_OFFSET(offset) ); offset += sizeof(points); GLuint vTexCoord = glGetAttribLocation( program, "vTexCoord" ); glEnableVertexAttribArray( vTexCoord ); glVertexAttribPointer( vTexCoord, 2,GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(offset) );

53 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Interpolation OpenGL uses interpolation to find proper texels from specified texture coordinates Can be distortions good selection of tex coordinates poor selection of tex coordinates texture stretched over trapezoid showing effects of bilinear interpolation

54 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Texture Parameters OpenGL has a variety of parameters that determine how texture is applied Wrapping parameters determine what happens if s and t are outside the (0,1) range Filter modes allow us to use area averaging instead of point samples Mipmapping allows us to use textures at multiple resolutions Environment parameters determine how texture mapping interacts with shading

55 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Wrapping Mode Clamping: if s,t > 1 use 1, if s,t <0 use 0 Wrapping: use s,t modulo 1 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ) glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ) texture s t GL_CLAMP wrapping GL_REPEAT wrapping

56 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Magnification and Minification TexturePolygon MagnificationMinification PolygonTexture More than one texel can cover a pixel (minification) or more than one pixel can cover a texel (magnification) Can use point sampling (nearest texel) or linear filtering ( 2 x 2 filter) to obtain texture values

57 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Filter Modes Modes determined by glTexParameteri( target, type, mode ) glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MIN_FILTER, GL_LINEAR); Note that linear filtering requires a border of an extra texel for filtering at edges (border = 1)

58 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Mipmapped Textures Mipmapping allows for prefiltered texture maps of decreasing resolutions Lessens interpolation errors for smaller textured objects Declare mipmap level during texture definition glTexImage2D( GL_TEXTURE_*D, level, … )

59 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Example point sampling mipmapped point sampling mipmapped linear filtering linear filtering

60 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Texture Functions Controls how texture is applied glTexEnv{fi}[v]( GL_TEXTURE_ENV, prop, param ) GL_TEXTURE_ENV_MODE modes GL_MODULATE: modulates with computed shade GL_BLEND: blends with an environmental color GL_REPLACE: use only texture color GL(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); Set blend color with GL_TEXTURE_ENV_COLOR

61 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Using Texture Objects 1.specify textures in texture objects 2.set texture filter 3.set texture function 4.set texture wrap mode 5.set optional perspective correction hint 6.bind texture object 7.enable texturing 8.supply texture coordinates for vertex coordinates can also be generated

62 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 Other Texture Features Environment Maps Start with image of environment through a wide angle lens Can be either a real scanned image or an image created in OpenGL Use this texture to generate a spherical map Alternative is to use a cube map Multitexturing Apply a sequence of textures through cascaded texture units

Applying Textures Textures are applied during fragments shading by a sampler Samplers return a texture color from a texture object 63 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 in vec4 color; //color from rasterizer in vec2 texCoord; //texure coordinate from rasterizer uniform sampler2D texture; //texture object from application void main() { gl_FragColor = color * texture2D( texture, texCoord ); }

Vertex Shader Usually vertex shader will output texture coordinates to be rasterized Must do all other standard tasks too Compute vertex position Compute vertex color if needed 64 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 in vec4 vPosition; //vertex position in object coordinates in vec4 vColor; //vertex color from application in vec2 vTexCoord; //texture coordinate from application out vec4 color; //output color to be interpolated out vec2 texCoord; //output tex coordinate to be interpolated

Checkerboard Texture 65 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 GLubyte image[64][64][3]; // Create a 64 x 64 checkerboard pattern for ( int i = 0; i < 64; i++ ) { for ( int j = 0; j < 64; j++ ) { GLubyte c = (((i & 0x8) == 0) ^ ((j & 0x8) == 0)) * 255; image[i][j][0] = c; image[i][j][1] = c; image[i][j][2] = c;

Adding Texture Coordinates 66 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 void quad( int a, int b, int c, int d ) { quad_colors[Index] = colors[a]; points[Index] = vertices[a]; tex_coords[Index] = vec2( 0.0, 0.0 ); index++; quad_colors[Index] = colors[a]; points[Index] = vertices[b]; tex_coords[Index] = vec2( 0.0, 1.0 ); Index++; // other vertices }

Texture Object 67 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 GLuint textures[1]; glGenTextures( 1, textures ); glBindTexture( GL_TEXTURE_2D, textures[0] ); glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, TextureSize, TextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, image ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); glActiveTexture( GL_TEXTURE0 );

Linking with Shaders 68 E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 GLuint vTexCoord = glGetAttribLocation( program, "vTexCoord" ); glEnableVertexAttribArray( vTexCoord ); glVertexAttribPointer( vTexCoord, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(offset) ); // Set the value of the fragment shader texture sampler variable // ("texture") to the the appropriate texture unit. In this case, // zero, for GL_TEXTURE0 which was previously set by calling // glActiveTexture(). glUniform1i( glGetUniformLocation(program, "texture"), 0 );