Title: CS 352: Computer Graphics
1CS 352 Computer Graphics
Hierarchical Graphics, Modeling, And Animation
2Overview
- Modeling
- Animation
- Data structures for interactive graphics
- CSG-tree
- BSP-tree
- Quadtrees and Octrees
- Visibility precomputation
- Many figures and examples in this set of lectures
are from The Art of 3D Computer Animation and
Imaging, by I. Kerlow
3Modeling
- The modeling problem
- Modeling primitives
- Polygon
- Sphere, ellipsoid, torus, superquadric
- NURBS, surfaces of revolutions, smoothed polygons
- Particles
- Skin bones
- Approaches to modeling complex shapes
- Tools such as extrude, revolve, loft, split,
stitch, blend - Constructive solid geometry (CSG)
- Hierarchy kinematic joints
- Inverse kinematics
- Keyframes
4Representing objects
- Objects represented as symbols
- Defined in model coordinates transformed into
world coordinates (M TRS) - glMatrixMode(GL_MODELVIEW)
- glLoadIdentity() glTranslatef()
- glRotatef() glScalef()
- glutSolidCylinder()
5Primitives
- The basic sort of primitive is the polygon
- Number of polygons tradeoff between render time
and model accuracy
6(No Transcript)
7SplineCurves
- Linear spline
- Cardinal spline
- B-spline
- Bezier curve
- NURBS (non-uniform rational b-spline)
8Mesh
9Mesh deformations
10Sweep
- Sweep a shape over a path to form a generalized
cylinder
11Revolution
- Revolve a shape around an axis to create an
object with rotational symmetry
12Extrusion
- Extrude grow a 2D shape in the third dimension
- Shape is created with a (1D)b-spline curves
- Hole was created by subtracting a cylinder
13(No Transcript)
14Joining Primitives
15Modifying Primitives
16Subdivision Surfaces
- Can set level of polygon subdivision
17(No Transcript)
18(No Transcript)
19(No Transcript)
20Skin and Bones
- Skeleton with joined bones
- Can add skin on top of bones
- Automatic or hand-tunedskinning
21(No Transcript)
22Particles
23Algorithmic Primitives
Algorithms for trees, mountains, grass, fur,
lightning, fire,
24(No Transcript)
25Geometric model file formats
- .obj Alias Wavefront
- .dxf Autocad
- .vrml Inventor
- Dozens more
- Can convert between formats
- Converting to a common format may lose info
26Hierarchical models
- When animation is desired, objects may have parts
that move with respect to each other - Object represented as hierarchy
- Often there are joints with motion constraints
- E.g. represent wheels of car as sub-objects with
rotational motion (car moves 2 pi r per rotation)
27(No Transcript)
28DAG models
- Could use tree torepresent object
- Actually, a DAG (directed acyclicgraph) is
better can re-use objects - Note that each arrow needs aseparate modeling
transform - In object-oriented graphics, alsoneed motion
constraints with eacharrow
29Example Robot
- Traverse DAG using DFS (or BFS)
- Push and pop matrices along the way (e.g.
left-child right-sibling) (joint position
parameters?)
30(No Transcript)
31Modeling Programs
- Moray
- Shareware
- Limited functionality
- Easy
- Lightwave, Maya
- NOT shareware
- Very full-featured
- Difficult to learn and use
- Moray, Maya demos Lightwave video
32Animation
- Suppose you want the robot to pick up a can of
oil to drink. How? - You could set the joint positions at each
moment in the animation (kinematics)
33Inverse Kinematics
- You cant just invert the joint transformations
- Joint settings arent even necessarily unique
for a hand position! - Inverse kinematics figure out from the hand
position where the joints should be set.
34Using Inverse Kinematics
- Specify joint constraintsand priorities
- Move end effector(or object pose)
- Let the system figureout joint positions
- IK demo
35Keyframe Animation
- In traditional key frame animation the animator
draws several important frames, and helpers do
the inbetweening or tweening - Computer animation is also key-frame based
- At key frames, animator positions objects and
lights, sets parameters, etc. - The system interpolates parameter values linearly
or along a curve - To get from one object pose to the next, inverse
kinematics determine joint motions - Keyframe animation demo
36Motion Capture
- More realistic motion sequences can be
generated by Motion Capture - Attach joint position indicatorsto real actors
- Record live action
37(No Transcript)
38Morphing
- Morphing smoothly shifting from one image to
another - First popularized in a Michael Jackson video
- Method a combination of
- Warping both images, gradually moving control
points from location in first image to location
in the second - Cross-fading from first image sequence to second
393D Morphing
- Define 3D before andafter shapes as e.g. NURBS
surfaces with same number ofcontrol points - Gradually move control points fromfirst setting
to second - Specify key poses e.g. smile, frown, 12 frames
of walking motion
40Combined approaches
41Example virtual puppetry
- Suppose you want to display virtual puppet shows
- How could you animate puppet movements?
- How could you control the animations externally?
42Character Animation
- To make computer graphics(or cartoon drawings)
come alive
43Personality through Pose, Expression, Motion,
Timing
44(No Transcript)
45Object-oriented Graphics
- Higher in the programming hierarchy control
models with object-oriented programs - robot robbie
- robbie.smile()
- robbie.walk(270, 5, 3)
46Data Structures for Modeling
- This part of chapter how some example
applications be done efficiently (i.e. topics
without a better home) - Tree-based subdivisions of space
- Example 1 how to represent complex objects made
up of union, intersection, difference of other
objects
47CSG Tree
48Application 2 HSR
- How to render in 3D with hidden surface removal
when you dont have a hardware depth-buffer? - Can you think of any other ways of removing
hidden surfaces quickly? - Principle a polygon cant be occluded by
another polygon that is behind it.
49BSP-tree
- The painters algorithm for hidden surface
removal works by drawing all faces, from back to
front - How to get a listing of the faces in
back-to-front order? - Put them into a binary tree and traverse the tree
(but in what order?)
50BSP Tree Figures
- Right is front of polygon left is back
- In and Out nodes show regions of space inside or
outside the object - (Or, just store split pieces of polygons at
leaves)
51Traversing a BSP tree
- Binary Space Partition tree a binary tree with a
polygon at each node - Children in left subtree are behind polygon
- Children in right subtree are in front of polygon
- Traversing a BSP-tree
- If null pointer, do nothing
- Else, draw far subtree, then polygon at current
node, then near subtree - Far and near are determined by location of viewer
- Runtime of traversal?
- Drawbacks?
52Building a BSP tree
- Inserting a polygon
- If tree is empty make it the root
- If polygon to be inserted intersects plane of
polygon of current node, split and insert half on
each side recursively. - Else insert on appropriate side recursively
- Problem the number of faces could grow
dramatically - Worst case (O(n2))but usually it doesnt grow
too badly in practice
53BSP-tree Summary
- Returns polygons not necessarily in sorted order,
but in an order that is correct for back-to-front
rendering - Widely used when Z-buffer hardware may not be
available (e.g. game engines) - Guarantees back-to-front rendering for alpha
blending - Works well (linear-time traversals) in the number
of split polygons - And we hope the number of polygons doesnt grow
too much through splitting
54Application 3 Handling Large Spatial Data Sets
- Example application image-based rendering
- Suppose you have many digital images of a scene,
with depth information for pixels - How to find efficiently the points that are in
front? - Other applications
- Speeding up ray-tracing with many objects
- Rendering contours of 3D volumetric data such as
MRI scans
55Quadtree
- Quadtree divide space into four quadrants. Mark
as Empty, Full, or Partially full. - Recursively subdivide partially full regions
- Saves much time, space over 2D pixel data!
56Quadtree Structure
57Octrees
- Generalize to cutting up a cube into 8 sub-cubes,
each of which may be E, F, or P (and subdivided) - Much more efficientthan a 3D array ofcells for
3Dvolumetric data
58Quadtree Algorithms
- How would you
- render a quadtree shape?
- find the intersection of a ray with a quadtree
shape? - Take the union of two quadtrees?
- Intersection?
- Find the neighbors of a cell?
59Applications of Octrees
- Contour finding in MRI data
- 3D scanning and rendering
- Efficient ray tracing
- Intersection, collision testing
60Research in Visibility
- Can we figure out in advance what will be visible
from each viewpoint?
61Viewer-centered representation
- Viewer-centered object representations
representation not of volume of space filled but
appearance from all viewpoints
62Occlusion in view space
- Occlusion in view space is subtraction
63Events
- Events boundaries in viewpoint space where
faces appear or disappear
64Aspect Graph
- Aspect graph a graph with a node for every
topologically distinct view of an object, with
edges connecting adjacent views
65Aspect graph varieties
- Aspect graphs can be constructed for
- 3D space
- 2D multiple axis rotations or planar motions
- 1D single-axis rotations
661D Aspect Graph for Rotation
671D Aspect Graph Results
- Useful for rotations without Z-buffer hardware!
- Not so useful for more viewer freedom, modern
graphics hardware
68Conservative Visibility Preprocessing
- Q. can we take advantage of z-buffer?
- Definition weak visibility. A polygon is weakly
visible from a region if any part of the polygon
is visible from any viewpoint in the region - Conservative visibility preprocessing computing
in advance a (super-)set of the polygons that are
weakly visible from some region - Rendering with Z-buffer yields correct image, but
its faster since fewer polygons are drawn
69Weak Visibility Subdivision
- Given an object and a wall, find the region of
space from which the wall occludes the object - Divide space into regions, where each edge
represents some object appearing or
disappearing
70Conservative Visibility Preprocessing on a Grid
- Divide viewing space into a 3D (or 2D) grid
- Compute a conservative display list for each cell
71Conservative visibility algorithm
- Initialize a display list for each grid cell
- Algorithm for each object, wall, and cell
- If the object is not weakly visible from the
cell, remove from cells display list - You can churn away at this computation as long as
you like, increasing runtimes, but you can stop
at any time with usable results. (Results improve
over time!)
72Perspective
- What good did this visibility research do for the
world? - It wasnt enough for me
- I left graphics research and went into digital
libraries - Left University of Pittsburgh and went to Wheaton
College
73Summary
- 3D modeling uses advanced primitives and ways of
cutting, joining them - Inverse kinematics determines joint position from
end effector motions - Keyframe animation involves important poses and
inbetweening - 3D morphing animates surface control points
- 3D spatial subdivision trees include CSG-trees,
BSP-trees, Quadtrees, and Octrees - Visibility preprocessing speeds walkthrough