CS488 - Introduction to Computer Graphics - Lecture 28
Modelling
Examples of Micromodelling
Human skin
Obviously the second strategy is better,
- but only if it works
- Select a model, work out a reflectance function, check that it agrees
with reality
Note two different definitions of `agrees with reality'.
Newly cut grass
- What does grass look like?
- Mowing, with the cutting mower, lines up the blades
- Blades absorb and reflect
- Absorbed light is green and goes all directions
- Reflected light goes mostly in one direction
- Draw the BRDF
- Calculate the BRDF
- or measure the BRDF
- or schematically estimate the BRDF
Parametrize the BRDF
if it's possible
Surface of CD
Close together linear scatterers
Calculate interference
Particle Systems
What are they?
- Collections of particles that taken together represent something
- plants like grasses
- hair or fur
- fire
- splashing water
- etc.
- Each particle has
- an initial state
- position
- velocity
- size
- colour and/or luminosity
- etc
- an update function
- changes the state
- can have random perturbations
- Dynamics has
- transient properties
- steady-state properties
How to use them for animation.
- Something starts emitting particles at time t0
- At each subsequent time step
- Existing particles are updated
- Dead particles are removed
- New particles are created
- All particles are rendered.
- Until all particles are dead (for animation).
- OR, until it reaches a state you like (for static object)
- then grab it as a model
How to use them for visualization.
- Example. For visualizing motion in a fluid
- Add particles upstream
- Let them be carried by the fluid
- Until the fluid flows out of the scene.
How to use them for ray-tracing.
Two ways
- Let the particle system get into a steady state, then freeze and put
into the scene.
- Accumulate the path of each particle, then use it as the shape of a
linear primitive
Fractal Terrain Generation
What is it?
- A way of getting not-too-regular, not-too-random terrain,
- without positioning every vertex yourself.
How is it done?
- Start with a polygon covering the terrain
- height at each vertex is average height + h(n) with n = 1
- h(n) is a random function with expectation zero
- Divide each edge in two by positioning a new vertex in its middle.
- new vertex height is average edge height + h(n = n+1)
- magnitude of h(n) probably decreases with n
- Add new edges.
- Iterate to 2 until it's good enough.
Tricks.
- Gets expensive fast. Do as few iterations as possible.
- Don't look directly down on it. Why?
- h(n) will need extensive tweaking. Don't get discouraged if you don't
get the results you want right away.
- You could do the first few iterations by hand to control the
large-scale result.
What is it good for?
- Mountains
- Rolling hills
- Sand dunes. You will want h(n) to depend on the direction of the
edge.
- etc.
Return to: