attributes of graphics primitives sang il park sejong university
TRANSCRIPT
Attributes of Graphics Primitives
Sang Il Park
Sejong University
OpenGL State variables:
• Color• Point attributes• Line attributes• Fill-Area attributes
• Color buffer Setting:
• Setting the color value:
Ex)
Color in OpenGL
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)
GLUT_RGBA GLUT_RGB GLUT_INDEX GLUT_SINGLEGLUT_DOUBLE
GLUT_RGBA GLUT_RGB GLUT_INDEX GLUT_SINGLEGLUT_DOUBLE
glColor* (values);glColor* (values);
glColor3f (0.0, 1.0, 0.5);glColor3i ( 0, 255, 128);glColor3f (0.0, 1.0, 0.5);glColor3i ( 0, 255, 128);
• Size:
• Color :
Point Attributes in OpenGL
glPointSize ( size );glPointSize ( size );
glColor* (values);glColor* (values);
• Width:
• Line-Style :
ex)
• Line-Style On/Off:
Line Attributes in OpenGL
glLineWidth ( width );glLineWidth ( width );
glLineStipple (repeatFactor, pattern); glLineStipple (repeatFactor, pattern);
glLineStipple (1, 0x00FF);glLineStipple (1, 0x0101);glLineStipple (1, 0x00FF);glLineStipple (1, 0x0101);
glEnable (GL_LINE_STIPPLE);glDisable (GL_LINE_STIPPLE);glEnable (GL_LINE_STIPPLE);glDisable (GL_LINE_STIPPLE);
• Line Caps:
• Connecting:
Other Line Attributes Not in OpenGL
Butt cap Round cap Projecting square cap
Miter join Round join Bevel join
• Pen and Brush Options:
Other Line Attributes Not in OpenGL
• Color buffer Setting:
• Setting the color value:
Ex)
Color in OpenGL
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)
GLUT_RGBA GLUT_RGB GLUT_INDEX GLUT_SINGLEGLUT_DOUBLE
GLUT_RGBA GLUT_RGB GLUT_INDEX GLUT_SINGLEGLUT_DOUBLE
glColor* (values);glColor* (values);
glColor3f (0.0, 1.0, 0.5);glColor3i ( 0, 255, 128);glColor3f (0.0, 1.0, 0.5);glColor3i ( 0, 255, 128);
Area Filling
• Scan line approach• Seed Fill Algorithm
Area Filling (Scan line Approach)
• For each scan line(1) Find intersections (the extrema of spans)
• Use Bresenham's line-scan algorithm(2) Sort intersections (increasing x order)(3) Fill in between pair of intersections
Area Filling (Scan line Approach)
• Take advantage of– Edge coherence: edges intersected by
scan line i are also intersected by scan line i+1
Area Filling (Scan line method)
basic idea− Start at a pixel interior to a polygon
− Fill the others using connectivity
Area Filling (Seed Fill Algorithm)
seed
4-connected 8-connected
Need a stack.
Why?
Seed Fill Algorithm (Cont’)
start position
Seed Fill Algorithm (Cont’)
Seed Fill Algorithm (Cont’)
interior-defined boundary-defined
flood fill algorithm boundary fill algorithm
8
6
4
2
0 2 4 6 8 10 0 2 4 6 8 10
8
6
4
2
Seed Fill Algorithm (Cont’)
0 1 2 3 4 5 6 7 8 91
2
3
4
5
6
7
0 1 2 3 4 5 6 7 8 9
1
2
3
4
5
6
7
hole
boundary pixel interior pixel seed pixel
The stack may contain duplicated or unnecessary information !!!
Boundary Filling
Flood Filling
: Start a point inside the figure, replace a specified interior color only.
Shani, U., “Filling Regions in Binary Raster Images:A Graph-Theoretic Approach”, Computer Graphics,14, (1981), 321-327
scan lineconversion
seedfilling
+
Scan Line Seed Fill
Boundary Filling
• Efficiency in space! – finish the scan line
containing the starting position
– process all lines below the start line
– process all lines above the start line
Problems of Filling Algorithm
• What happens if a vertex is shared by more than one polygon, e.g. three triangles?
• What happens if the polygon intersects itself?
• What happens for a “sliver”?
Solutions? Redefine what it means to be inside of a triangle Different routines for nasty little triangles
OpenGL Fill-Area Function
• Shade model:
• Wire-frame or point:
glShadeModel ( shadeModel );glShadeModel ( shadeModel );
GL_SMOOTHGL_FLATGL_SMOOTHGL_FLAT
glPolygonMode ( face, displayMode );glPolygonMode ( face, displayMode );
GL_FRONTGL_BACK
GL_FRONT_AND_BACK
GL_FRONTGL_BACK
GL_FRONT_AND_BACK
GL_LINEGL_POINTGL_FILL
GL_LINEGL_POINTGL_FILL
Aliasing in CG
Wh
ich
is th
e
bette
r?
Aliasing in CG
• Digital technology can only approximate analog signals through a process known as sampling
• The distortion of information due to low-frequency sampling (undersampling)
• Choosing an appropriate sampling rate depends on data size restraints, need for accuracy, the cost per sample…
• Errors caused by aliasing are called artefacts. Common aliasing artefacts in computer graphics include jagged profiles, disappearing or improperly rendered fine detail, and disintegrating textures.
The Nyquist Theorem
the sampling rate must be at least twice the frequency of the signal or aliasing occurs
Aliasing Effects
Artifacts - Jagged profiles
• Jagged silhouettes are probably the most familiar effect caused by aliasing.
• Jaggies are especially noticeable where there is a high contrast between the interior and the exterior of the silhouette
Artefacts - Improperly rendered detail
Artefacts - Disintegrating textures
• The checkers should become smaller as the distance from the viewer increases.
Antialiasing
• Antialiasing methods were developed to combat the effects of aliasing. The two major categories of antialiasing techniques are prefiltering and postfiltering.
32
Prefiltering
• Eliminate high frequencies before sampling (Foley & van Dam p. 630)– Convert I(x) to F(u)– Apply a low-pass filter
• A low-pass filter allows low frequencies through, but attenuates (or reduces) high frequencies
– Then sample. Result: no aliasing!
High Frequency
34
Prefiltering
35
Prefiltering
Basis for Prefiltering Algorithms
Catmull’s Algorithm
AB
A1A2
A3
• Find fragment areas
• Multiply by fragment colors
• Sum for final pixel color
Prefiltering Example
39
Prefiltering
• So what’s the problem?• Problem: most rendering algorithms generate
sampled function directly– e.g., Z-buffer, ray tracing
40
Supersampling
• The simplest way to reduce aliasing artifacts is supersampling – Increase the resolution of the samples– Average the results down
• Or sometimes, it is called “Postfiltering”.
41
Supersampling
• The process:1. Create virtual image at higher resolution than the
final image
2. Apply a low-pass filter
3. Resample filtered image
42
Supersampling: Limitations
• Q: What practical consideration hampers super-sampling?
• A: Storage goes up quadratically• Q: What theoretical problem does
supersampling suffer?• A: Doesn’t eliminate aliasing! Supersampling
simply shifts the Nyquist limit higher
43
Supersampling: Worst Case
• Q: Give a simple scene containing infinite frequencies
• A: A checkered ground plane receding into infinity
• See next slide…
44
45
Supersampling
• Despite these limitations, people still use super-sampling (why?)
• So how can we best perform it?
Sampling in the Postfiltering method
• Supersampling from a 4*3 image. • Sampling can be done randomly or
regularly. The method of perturbing the sample positions is known as "jittering."
47
Stochastic Sampling
• Stochastic: involving or containing a random variable
• Sampling theory tells us that with a regular sampling grid, frequencies higher than the Nyquist limit will alias
• Q: What about irregular sampling?• A: High frequencies appear as noise, not aliases• This turns out to bother our visual system less!
48
Stochastic Sampling
• An intuitive argument:– In stochastic sampling, every region of the image has
a finite probability of being sampled– Thus small features that fall between uniform sample
points tend to be detected by non-uniform samples
49
Stochastic Sampling
• Idea: randomizing distribution of samples scatters aliases into noise
• Problem: what type of random distribution to adopt?
• Reason: type of randomness used affects spectral characteristics of noise into which high frequencies are converted
50
Stochastic Sampling
• Problem: given a pixel, how to distribute points (samples) within it?
Grid Random Poisson Disc Jitter
51
Stochastic Sampling
• Poisson distribution: – Completely random– Add points at random until area is full.– Uniform distribution: some neighboring
samples close together, some distant
52
Stochastic Sampling
• Poisson disc distribution: – Poisson distribution, with minimum-
distance constraint between samples– Add points at random, removing
again if they are too close to any previous points
– Very even-looking distribution
53
Stochastic Sampling
• Jittered distribution– Start with regular grid of samples– Perturb each sample slightly in a
random direction– More “clumpy” or granular in appearance
Nonuniform Supersampling
Adaptive Sampling
Adaptive Sampling
Final Samples
Problem:• Many more blue
samples than white samples
• But final pixel actually more white than purple!
• Simple filtering will not handle this correctly
Filters
Antialiasing
http://www.siggraph.org/education/materials/HyperGraph/aliasing