You are on page 1of 32

Computer Graphics

Inf4/MSc

Computer Graphics
Lecture 5
Hidden Surface Removal and Rasterization

Taku Komura

1
Computer Graphics
Inf4/MSc

Hidden surface removal


• Drawing polygonal faces on screen
consumes CPU cycles
– Illumination
• We cannot see every surface in
scene
– We don’t want to waste time rendering
primitives which don’t contribute to
the final image.

2
Computer Graphics Visibility (hidden surface
Inf4/MSc
removal)
• A correct rendering requires correct visibility
calculations
• Correct visibility
– when multiple opaque polygons cover the same
screen space, only the closest one is visible
(remove the other hidden surfaces)

3
– wrong visibility correct visibility
Computer Graphics
Inf4/MSc

Visibility of primitives
• A scene primitive can be invisible for 3 reasons:
– Primitive lies outside field of view
– Primitive is back-facing
– Primitive is occluded by one or more objects nearer the
viewer

4
Computer Graphics
Inf4/MSc

Visible surface algorithms.


Definitions:

•Object space techniques: applied before vertices are mapped to pixels


•Back face culling, Painter’s algorithm, BSP trees

•Image space techniques: applied while the vertices are rasterized


•Z-buffering

5
Computer Graphics
Inf4/MSc

Back face culling.


• The vertices of polyhedra are oriented
in an anticlockwise manner when
viewed from outside – surface normal
N points out.
• Project a polygon.
– Test z component of surface
normal. If negative – cull, since
normal points away from viewer.


Or if N.V > 0 we are viewing the
back face so polygon is obscured.

6
Computer Graphics
Inf4/MSc

Painters algorithm (object space).


• Draw surfaces in back
to front order – nearer
polygons “paint” over
farther ones.
• Supports transparency.
• Key issue is order
determination.
• Doesn’t always work –
see image at right.

7
Computer Graphics
Inf4/MSc
BSP (Binary Space Partitioning) Tree.
•One of class of “list-priority” algorithms – returns
ordered list of polygon fragments for specified view 5
point (static pre-processing stage).

•Choose polygon arbitrarily 2

•Divide scene into front (relative to normal) and


back half-spaces. 3
1 4
•Split any polygon lying on both sides.

•Choose a polygon from each side – split scene


again.

•Recursively divide each side until each node View of scene from above
contains only 1 polygon.
Computer Graphics
Inf4/MSc
BSP Tree. 5
5a
5b
2
•Choose polygon arbitrarily
3
•Divide scene into front (relative to 1 4
normal) and back half-spaces.

•Split any polygon lying on both sides.

•Choose a polygon from each side – split


scene again. front back
3

•Recursively divide each side until each 4


node contains only 1 polygon. 1 5b
2
5a

Lecture 9 19/10/20079
Computer Graphics

BSP Tree.
Inf4/MSc

5a
2 5b
•Choose polygon arbitrarily

•Divide scene into front (relative to 1 3


4
normal) and back half-spaces.

•Split any polygon lying on both sides.

•Choose a polygon from each side –


split scene again. front back
3

•Recursively divide each side until each 2


front 4
node contains only 1 polygon. 5b
5a 1
Computer Graphics

BSP Tree.
Inf4/MSc

5
5a
2 5b
•Choose polygon arbitrarily
3
•Divide scene into front (relative to 1 4
normal) and back half-spaces.

•Split any polygon lying on both sides.

•Choose a polygon from each side – split


scene again. 3
front back

•Recursively divide each side until 2 4


front
each node contains only 1 polygon.
5a 1 5b
Computer Graphics
Inf4/MSc
Displaying a BSP tree.
• Once we have the regions – need priority list
• BSP tree can be traversed to yield a correct priority list for
an arbitrary viewpoint.
• Start at root polygon.
– If viewer is in front half-space, draw polygons behind root first,
then the root polygon, then polygons in front.
– If polygon is on edge – either can be used.
– Recursively descend the tree.
• If eye is in rear half-space for a polygon – then can back
face cull.
Lecture 9 19/10/2007
12
Computer Graphics
Inf4/MSc
BSP Tree.
• A lot of computation required at start.
– Try to split polygons along good dividing plane
– Intersecting polygon splitting may be costly
• Cheap to check visibility once tree is set up.
• Can be used to generate correct visibility
for arbitrary views.
Efficient when objects don’t change very
often in the scene.

Lecture 9 19/10/2007
13
Computer Graphics
Inf4/MSc
BSP performance measure
• Tree construction and traversal (object-space
ordering algorithm – good for relatively few static
primitives, precise)
• Overdraw: maximum
• Front-to-back traversal is more efficient
• Record which region has been filled in already
• Terminate when all regions of the screen is filled
in
• S. Chen and D. Gordon. “Front-to-Back Display of BSP Trees.” IEEE
Computer Graphics & Algorithms, pp 79–85. September 1991.
Lecture 9 19/10/2007
14
Computer Graphics
Inf4/MSc
Z-buffering : image space approach
Basic Z-buffer idea:
• rasterize every input polygon
• For every pixel in the polygon interior, calculate
its corresponding z value (by interpolation)
• Track depth values of closest polygon (smallest z)
so far
• Paint the pixel with the color of the polygon
whose z value is the closest to the eye.

15
Computer Graphics
Inf4/MSc

16
Computer Graphics
Inf4/MSc

17
Computer Graphics
Inf4/MSc

18
Computer Graphics
Inf4/MSc

19
Computer Graphics
Inf4/MSc

Implementation.
• Initialise frame buffer to background
colour.
• Initialise depth buffer to z = max. value for
far clipping plane
• For each triangle
– Calculate value for z for each pixel inside
– Update both frame and depth buffer

20
Computer Graphics
Inf4/MSc

Filling in Triangles
• Scan line algorithm
– Filling in the triangle by drawing horizontal
lines from top to bottom

• Barycentric coordinates
– Checking whether a pixel is inside / outside the
triangle
Computer Graphics
Inf4/MSc
Triangle Rasterization
• Consider a 2D triangle with vertices p0 , p1 , p2.
• Let p be any point in the plane. We can always
find a, b, c such that

• We will have if and only if p is


inside the triangle.
• We call the barycentric coordinates of p.

22
Computer Graphics
Inf4/MSc
Computing the baricentric
coordinates of the interior pixels
• The triangle is composed of 3 points p0 (x0,y0), p1 (x1, y1), p2(x2,y2)

• (α,β,γ) : 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
23
Computer Graphics
Inf4/MSc
Bounding box of the triangle
• First, identify a rectangular region on the
canvas that contains all of the pixels in the
triangle (excluding those that lie outside the
canvas).
• Calculate a tight bounding box for a triangle:
simply calculate pixel coordinates for each
vertex, and find the minimum/maximum for
each axis

24
Computer Graphics
Inf4/MSc
Scanning inside the triangle
• Once we've identified the bounding box,
we loop over each pixel in the box.
• For each pixel, we first compute the
corresponding (x, y) coordinates in the
canonical view volume
• Next we convert these into barycentric
coordinates for the triangle being drawn.
• Only if the barycentric coordinates
are within the range of [0,1], we
plot it (and compute the depth)
25
Computer Graphics
Inf4/MSc

Why is z-buffering so popular ?


Advantage
• Simple to implement in hardware.
– Memory for z-buffer is now not expensive
• Diversity of primitives – not just polygons.
• Unlimited scene complexity
• Don’t need to calculate object-object intersections.
Disadvantage
• Extra memory and bandwidth
• Waste time drawing hidden objects
Z-precision errors
• May have to use point sampling

26
Computer Graphics
Inf4/MSc

Z-buffer performance
• Brute-force image-space algorithm scores best for
complex scenes – easy to implement and is very
general.
• Storage overhead: O(1)
• Time to resolve visibility to screen precision: O(n)
– n: number of polygons

27
Computer Graphics
Inf4/MSc
Ex. Architectural scenes
Here there can be an enormous amount of occlusion

Lecture 9 19/10/2007
28
Computer Graphics
Inf4/MSc
Occlusion at various levels

Lecture 9 19/10/2007
29
Computer Graphics
Inf4/MSc
Portal Culling (object-space)
D F

C B E
Model scene as a graph:
• Nodes: Cells (or rooms) G
A
• Edges: Portals (or doors)

Graph gives us:


• Potentially visible set
A
1.Render the room
B
2.If portal to the next room is visible, render
the connected room in the portal region C D E
3.Repeat the process along the scene graph
19/10/2007
30
Computer Graphics
Inf4/MSc
Summary
•Z-buffer is easy to implement on hardware and is an
important tool

•We need to combine it with an object-based method


especially when there are too many polygons
BSP trees, portal culling
Computer Graphics
Inf4/MSc

References for hidden surface removal


• Foley et al. Chapter 15, all of it.
• Introductory text, Chapter 13, all of it
• Baricentric coordinates
www.cs.caltech.edu/courses/cs171/barycent
ric.pdf
• Or equivalents in other texts, look out for:
– (as well as the topics covered today)
– Depth sort – Newell, Newell & Sancha
– Scan-line algorithms 32

You might also like