Bezier Curve -- A bezier curve is a smooth curve defined by its control points.
It can be drawn using Paul de Casteljou's algorithm, which successively
draws control points at half the distance between each two control points.
CMY -- The CMYK colour model is a subtractive colour model that uses the
colours Cyan, Magenta, Yellow and the Key (black) to make other colours.
It is used in colour printers, mixing CMY together produces black, but it
looks more brown than black, hence the key.
BSP Tree -- Binary Space Partitioning Tree. Takes a polygon, which partitions
the 3D space into two, those things behind the polygon, and those in front of
it. It then repeats this process, recursively building a tree akin to a
binary search tree. It's used to work out drawing order.
Ray Tracing -- A ray is cast from the eye to see if it intersects with
any object. If an intersection occurs, a ray is cast to each light source
from the object, to see if the lightsource contributes to the colour entering
the eye, if it does, its contribution is added to the colour of the point.
This is applied recursively to reflected and refracted rays.
Deffuse Reflector -- A surface which causes incoming light to be reflected
in all directions, dependent only on the angle between the surface's normal
and the incoming light vector. This relationship is called Lambert's Law.
This leads to "colour bleeding".
Radiosity -- The rate at which energy leaves the surface, including
energy emitted by the surface, as well as energy reflected off other
surfaces. Allow the intensity of radiant energy arriving at the surface
to be computed, thereby allow the determination of the shading of the surface.
ViewPort -- The 2D window on the computer's windowing system.
Scene Graph -- Each node is an object, each edge has a transformation
(4x4 matrix) associated with it. Describes a scene as a graph of componants.
Bezier Patches -- Consists of 16 control points, and you interpolate over
2 variables instead of 1. A surface is a sequence of bezier curves.
Tesselation -- Polygonisation. Taking shapes and turning them into
polygon meshes.
Constructive Solid Geometry -- Applies logical ops like AND, OR, NOT, XOR
to intersections. eg: sphereA AND sphereB = convex lens.
Phong Illumination Model -- Most light is reflected close to the angle of
reflection, but some is reflected in other directions. Some objects
spread light out more than others. (contrast with deffuse model).
Attenuation (Lighting) -- Distant object appear dimmer than closer objects.
normal -- (b-a)x(c-b)
Bump Mapping -- Perturb the normal to the surface, without changing the actual
position of the surface. Works well when using phong shading or ray-tracing,
can fake it with textures for defuse. Doesn't change silhouette of an object.
Lambert's Law --The intensity of light reflected from a surface is proportional
to the cosin eof the angle between L (vector to light source) and N (normal at
point).
Cross Product -- A vector perpendicular (orthogonal) to both vectors. Cross
product of two orthogonal vectors is a unit vector.
Local and global illumination -- Local illumination (eg polygon rendering) only
considers direct light, light coming directly from light sources, fudges
indirect light using "ambient light". A global illumination modle (eg
raytracing, radiosity) take into account the rest of the scene.
Ambient illumination model -- Adds "background light", diffuse non-directional
light source, as a result o
f many different reflectiosn from the environment.
Diffuse illumination model -- Point light sources, light is emitted
equally in all directions from that single point. Works well for matte,
non-reflective surfaces. Doesn't depend on where person is standing, but
does depend on the the direction of the light source.
Lambert's Law -- The intensity of light reflected from a surface is
proportional to the cosin of hte angle between L (vector to the light source)
and N (normal at the point.
ambient, diffuse and specular reflection --
Z buffer -- Like a frame buffer but stores the closest z value seen so
far, so before a pixel is filled in, the z value is checked, if it's less,
we draw it, otherwise we don't do anything.
OpenGL matrices -- GL_MODELVIEW (viewing and modelling), GL_PROJECTION
(for defining the projection and view volumes) GL_VIEWPORT (for controlling
window to viewport mapping) GL_TEXTURE (for controlling texture mapping).
Projection Matrix -- A matrix that squishes things into the standard cube.
Introduces distortion and stretching, but the viewport transformation is
modified to undo this.
Flat, Gourard and Phong Shading -- Flat : Each polygon is coloured uniformly.
Gourard : Linear interpolation is used from each point. Slightly slower
than Flat (illumination eqn is applied at each point, and a few adds per
pixel). Doesn't look great because we made an incorrect implicit
assumption - polygons represent the surface being modelled and are not
an approximation to a curved surface, so instead use normal to find colours
of each corner. Doesn't work well with specular objects. Phong: Find normal
at each pixel, normalise it, and apply illumination eqn. Slow! Beautiful!
does specular very well. Doesn't fit very well into openGL pipeline.
Solid Texture -- Like carving a vase out of marble. Represent texture
as a fn of 3 dimentions f(r,s,t). Too slow for real-time calculations.
Environment Mapping -- Use texture map for simple reflections. To apply
environment map, work out vector from viewer, reflect,a nd see where it
hits the cube environment map. This is added to the brightness of the pixel.
Not as good as raytracing, does only one level of reflection, fast.
Aliasing -- representing high freq as low freq due to insufficient no. of
samples. Nyquist sampling thrm.
Anti-Aliasing -- Pre-filtering, post-filtering.
Pre-Filtering: - Pencil ray tracing
- use modified bresenham's algorithm
- polygon rendering and line sampleing
Post-Filtering:- Same calculation but more samples -> super-sampling
- adoptive supersampling (only do when needed)
- do it when there's a large change in intensity
- modifies the algorithm to take into account geometric
properties
- Jitter
Jitter -- Stochastic sampling - randomly perturbing the sample points to get
rid of further aliasing effects.
Accumulation buffer -- Used by openGL to do postfiltering. Like frame buffer
but allows addition and averaging of images. accPerspective(..) moves eyes
position slightly by so-called jitter amount. Can also be used for motion-blur
and depth-of-field.
Bilinear filtering -- Linearly interpolate: each intensity value is the
centre of a pixel and then take a weighted average of the surrounding 4 pixels.
Fixes the problem for far-away (magnification of texels).
MIPMap -- multim in parvum - "a lot in small space". Addresses minification
problem. Pre-filter a few different sizes of the texture map. Depending
on distance to the object, use a different MIPMap. Can interpolate between
different mipmap levels (called trilinear mipmapping).
Fractals -- Self-similarity: two types:
- Exact self-similarity: different levels have exactly the same
shape (eg Sierpinski triangle)
- Stocastic self-similarity: different levels look similar to one
another.
Types of fractals:
- Line fractals
- Iterated function systems
- Mandelbrot sets, Julia sets, Newton methods
- Terrain generation by midpoint displacement