1 / 31

Computer Graphics

Lecture 6 Rasterisation, Antialiasing, Texture Mapping,. Computer Graphics. Some Tutorial about the Project. I have already covered all the topics needed to finish the 1 st practical Today, I will briefly explain how to start working on it.

Télécharger la présentation

Computer Graphics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture 6 Rasterisation, Antialiasing, Texture Mapping, Computer Graphics

  2. Some Tutorial about the Project • I have already covered all the topics needed to finish the 1st practical • Today, I will briefly explain how to start working on it. • I have already provided you a program to import an obj file.

  3. Steps • Apply transformations to all vertices • Prepare the frame buffer and Z-buffer • For each triangle • Project it to the screen space • Find the 2D bounding box • For each pixel in the bounding box • Check if it is inside the triangle by computing its barycentric coordinates • If yes, use barycentric coordinates to compute the depth and colour at the pixel • If (depth < zbuf[pixel]) { • framebuffer[pixel] = colour • zbuf[pixel] = depth • } • Export the frame buffer data into a PPM file • Apply transformations to all vertices • Prepare the frame buffer and Z-buffer • For each triangle • Project it to the screen space • Find the 2D bounding box • For each pixel in the bounding box • Check if it is inside the triangle by computing its barycentric coordinates • If yes, use barycentric coordinates to compute the depth and colour at the pixel • If (depth < zbuf[pixel]) { • framebuffer[pixel] = colour • zbuf[pixel] = depth • }

  4. For each pixel in the bounding box • Check if it is inside the triangle by computing its barycentric coordinates • If yes, use barycentric coordinates to compute the depth and colour at the pixel z = αz1 + β z2 + γ z3 c = αc1 + β c2 + γ c3 • If (z < zbuf[pixel]) { framebuffer[pixel] = colour zbuf[pixel] = c }

  5. Computing the baricentric coordinates of the interior pixels (α,β,γ) : barycentric coordinates Only if 0<α,β,γ<1, (x,y) is inside the triangle Depth can be computed by αZ0 + βZ1 +γZ2 Can do the same thing for color, normals, textures • The triangle is composed of 3 points p0 (x0,y0), p1 (x1, y1), p2(x2,y2)‏

  6. Today • Anti-aliasing • Texture mapping • Common texture coordinates mapping • Texture coordinates

  7. Rasterisation • Converts the vertex information output by the geometry pipeline into pixel information needed by the video display • Anti-aliasing • Z-buffer • Texture mapping • Bump mapping • Transparent objects • Drawing lines

  8. Anti-aliasing • Aliasing: distortion artifacts produced when representing a high-resolution signal at a lower resolution. • Anti-aliasing : techniques to remove aliasing Aliased polygons (jagged edges)‏ Anti-aliased polygons

  9. Nyquist Limit • The signal frequency (fsignal) should be no greater than half the sample frequency (fsample) • fsignal <= 0.5 fsample • In the top, fsignal = 0.8 fsample -> cannot reconstruct the original signal • In the bottom fsignal =0.5 fsample -> the original signal can be reconstructed by slightly increasing the sampling rate

  10. Screen-based Anti-aliasing • Each pixel is subdivided (sub-sampled) into n regions, and each sub-pixel has a color; • Compute the average color value

  11. Accumulation Buffer (A-Buffer)‏ • Use a buffer that has the same resolution as the original image • To obtain a 2x2 sampling of a scene, 4 images are made by shifting the buffer horizontally/vertically for half a pixel • The results are accumulated and the final results are obtained by averaging • Various sampling schemes are available Pixel center Subsampled point

  12. Different Sampling Schemes

  13. Accumulation Buffer (A-Buffer)‏ • The lighting computation is usually done only once per vertex • Not doing the lighting computation at each sample point • The A-buffer’s focus is on the edge anti-aliasing • Also useful for rendering transparent objects, motion blur (will be covered later in the course) Edges

  14. Stochastic Sampling • A scene can be produced of objects that are arbitrarily small • A regular pattern of sampling will always exhibit some sort of aliasing • One approach to solve this is to randomly sample over the pixel • Jittering : subdivide into n regions of equal size and randomly sample inside each region

  15. The oversampling rate is 1 and 2 from left to right

  16. Today • Anti-aliasing • Texture mapping • Common texture coordinates mapping • Texture coordinates

  17. Texture Mapping : Why needed? • We don't want to represent all this detail with geometry

  18. Texture mapping. • Method of improving surface appearance by adding details on surface.

  19. y v v u u x Texture mapping. • Image is ‘pasted’ onto a polygon. • Image is called a Texture map, it’s pixels are often referred as a Texels and have coordinates (u,v)‏ • Texture coordinates aredefined for each vertex of the polygon and interpolated across the polygon.

  20. Photo-textures

  21. (0,1)‏ (0,0)‏ (1,0)‏ Texture Interpolation • Specify a texture coordinate (u,v) at each vertex • Can we just linearly interpolate the values in screen space?

  22. Interpolating the uv coordinates Again, we use baricentric coordinates u= α u1 + β u2 + γ u3 v = α v1 + β v2 + γ v3 u1 v1 u3 v3 u2 v2

  23. Interpolation - What Goes Wrong? • Linear interpolation in screen space: texture source what we get| what we want

  24. Why does it happen? • Uniform steps on the image plane does not correspond to uniform steps along the edge

  25. How do we deal with it? • Use hyperbolic interpolation • (u,v) cannot be linearly interpolated, but 1/w and (u/w, v/w) can • w is the last component after the canonical view transformation

  26. Texture Mapping Examples • Linear interpolation vs. Hyperbolic interpolation • Two triangles per square

  27. Computing the uv coordinates at the internal points • For three points of the triangle, get • Compute at the internal points of the triangle by interpolation • Compute wiby inverting 1/wi, and multiply them to (ui /wi, ,vi /wi) to compute (ui,vi)‏

  28. Common Texture Coordinate Mappings • Orthogonal • Cylindrical • Spherical

  29. Diffuse Texture Color Texture Mapping & Illumination • Texture mapping can be used to alter some or all of the constants in the illumination equation: • pixel color, diffuse color …. Phong’s Illumination Model Constant Diffuse Color Texture used as Label Texture used as Diffuse Color

  30. Readings • Chapter 5.1-2 of Real-Time Rendering Second edition • http://books.google.co.uk/books?id=mOKEfBTw4x0C&printsec=frontcover&source=gbs_v2_summary_r&cad=0#v=onepage&q=&f=false • “Hyperbolic Interpolation” IEEE Computer Graphics and Applications, vol12, no.4, 89-94, 1992 • Demoed Software http://www-ui.is.s.u-tokyo.ac.jp/~takeo/java/smoothteddy/index.html

More Related