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
- Blender
- Open Source
- Modeling, surfacing, animation, rendering,
compositing, game engine - UI not so intuitive?
- Missing advanced features
- Lightwave
- NOT shareware
- Very full-featured
- Easier to use than othersbut still a huge
learning curve - Autodesk Maya
- Probably most often used by pros costs thousands
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)
38(No Transcript)
39Morphing
- Image/video morphing smoothly shifting from one
image to another - First popularized in a Michael Jackson video
- Method for video a combination of
- Identifying corresponding points in images over
time - 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
403D 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
41Combined approaches
42Example virtual puppetry
- Suppose you want to display virtual puppet shows
- How could you animate puppet movements?
- How could you control the animations externally?
43(No Transcript)
44(No Transcript)
45(No Transcript)
46Character Animation
- To make computer graphics(or cartoon drawings)
come alive
47Personality through Pose, Expression, Motion,
Timing
48(No Transcript)
49Object-oriented Graphics
- Higher in the programming hierarchy control
models with object-oriented programs - robot robbie
- robbie.smile()
- robbie.walk(270, 5, 3)
50Data 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
51CSG Tree
52Application 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.
53BSP-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?)
54BSP 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)
55Traversing 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?
56Building 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
dramaticallybut usually it doesnt grow too
badly
57BSP-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
58Application 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
59Quadtree
- 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!
60Quadtree Structure
61Octrees
- 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
62Quadtree 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?
63Applications of Octrees
- Contour finding in MRI data
- 3D scanning and rendering
- Efficient ray tracing
- Intersection, collision testing
64Research in Visibility
- Can we figure out in advance what will be visible
from each viewpoint?
65Viewer-centered representation
- Viewer-centered object representations
representation not of volume of space filled but
appearance from all viewpoints
66Occlusion in view space
- Occlusion in view space is subtraction
67Events
- Events boundaries in viewpoint space where
faces appear or disappear
68Aspect Graph
- Aspect graph a graph with a node for every
topologically distinct view of an object, with
edges connecting adjacent views
69Aspect graph varieties
- Aspect graphs can be constructed for
- 3D space
- 2D multiple axis rotations or planar motions
- 1D single-axis rotations
701D Aspect Graph for Rotation
711D Aspect Graph Results
- Useful for rotations without Z-buffer hardware!
- Not so useful for more viewer freedom, modern
graphics hardware
72Conservative 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
73Weak 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
74Conservative Visibility Preprocessing on a Grid
- Divide viewing space into a grid
- Compute a conservative display list for each cell
- Optionally store data in quadtree
75Conservative 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. (Runtime
performance improves with more preprocessing
time!)
76Perspective
- 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
77Summary
- 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