Texture and other maps - texture maps mapping an image onto a surface. Need to find way to map from image onto surface, texture coordinates. Adds surface detail. - Bump mapping: alter the normals adds light dependant shadowing effects - Displacement mapping: alter the height of the surface (allows silhouette to be seen) - Environment map: quick way to fake environmental effects. Use normal of surface to index into image. - Shadow map: render from perspective of light. Store distance. If distance from light to surface is bigger than that stored in shadow map the surface is in shadow. - Deep shadow map: store 3D image from perspective of light. 3^rd dimension is the opacity at that distance. Use DSP to find out how much of the light a point can see Ray Tracing - shoot ray from eye through image plane find intersections with objects. Good for reflection, refraction. - Aliasing (Stochastic): shoot many rays through each pixel, pixel color depends on average of rays shot through that pixel. Radiometry - Irradiance: total incoming energy from all directions - Radiant Exitance (Radiosity): total energy leaving in all directions - Solid Angle: extension of angles from circle to sphere - Radiance: energy in a direction. Is constant along straight lines in free space (nothing to absorb it) - Light paths: a way to describe how light gets from light (L) to eye (E) ex LDSE is light bounces off a diffuse surface then a specular surface then hits the eye. Global Illumination - Radiosity: Assume all surfaces diffuse, disrcretize geometry into patches and figure out how much any patch can see (form factor) any other patch. Form linear system and solve for radiosity of patches Limitations: only uses diffuse, large linear system to solve, depends on a discretization of scene. - Photon Mapping: Shoot photons from light let them bounce around and store them in photon map to get rough idea of illumination due to light bouncing around. Then raytrace, when hit a diffuse surface shoot many rays, a ray returns value from photon map (find N nearest photons in photon map take their energy and divide by area). This final raytrace step is called final gather. Allows light to travel by all kinds of paths (since photons can bounce around anyway you like). Final gather is the bottleneck. Curves - parametric representation: as vary some parameter, a function outputs a location. - Tangent to a curve - how does position of curve change as parameter changes (tu = dx/du)_u. For a surface need for both directions (tu = dx/du and tv = dx/dv). The normal is the direction perpendicular to both tangends (tu x tv/|| tu x tv||) - Curves can be expressed as linear combo of basis functions. Example power basis - Hermite specify end points and end derivatives. Does NOT have convex hull property Basis function 1 1 when u = 0, 0 when u = 1 Basis function 3 0 when u = 0, 1 when u = 1 Basis function 2 has slope 1 when u = 0, slope 0 at u = 1 Basis function 4 has slope 0 when u = 0, slope 1 at u = 1 - Bezier: specify 4 points starts at first, heads towards second, ends up at fourth coming from 3^rd Does have convex hull property, can use DeCasteljau to evaluate trick for matching up many Bezier segments (mirror control points) invariant to affine transformations (transforming all points of curve is same as transforming control points of curve and redrawing) not invariant to perspective transformations (need NURBS for that) Splines - Natural Splines Interpolate data points no convex hull property global support c2 continuous - B-splines Don't interpolate data convex hull local support c2 continuous Basis built using hump functions - NURBS: use homogenous coordinates and are invariant under perspective projection Tesselation - Build polygons by sampling surface - Cracking - de Casteljau (subdivision): an example of tesselating a bezier curve Subdivision - Subdivision points are control for tensor product B-spline - Two steps: Subdivision step and Smoothing step - Catmull-Clark - Loop IK - de = (de/dq) dq - solved with pseudoinverse using Newton's method, or using gradient descent or conjugate gradient - jacobian is sparse - jacobian can be singular, usually not square - linearization - takes multiple steps to solve - IK has nonintuitive control constraint satisfaction doesn't give desired result sometimes paired with more constraints or objective fcn