Hierarchical Graphics, Modeling, And...

Post on 14-May-2018

217 views 2 download

Transcript of Hierarchical Graphics, Modeling, And...

CS 352: Computer Graphics

Hierarchical

Graphics,

Modeling,

And Animation

Interactive Computer Graphics Chapter 9 - 2

Overview � 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

Interactive Computer Graphics Chapter 9 - 3

Modeling � 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

Interactive Computer Graphics Chapter 9 - 4

Representing objects � Objects represented as symbols

� Defined in model coordinates; transformed

into world coordinates (M = TRS) glMatrixMode(GL_MODELVIEW);

glLoadIdentity(); glTranslatef(…);

glRotatef(…); glScalef(…);

glutSolidCylinder(…);

Interactive Computer Graphics Chapter 9 - 5

Primitives � The basic sort of primitive is the

polygon

� Number of

polygons:

tradeoff between render time and

model accuracy

Interactive Computer Graphics Chapter 9 - 6

Interactive Computer Graphics Chapter 9 - 7

Spline Curves � Linear spline

� Cardinal spline

� B-spline

� Bezier curve

� NURBS (non-

uniform rational b-spline)

Interactive Computer Graphics Chapter 9 - 8

Mesh

Interactive Computer Graphics Chapter 9 - 9

Mesh deformations

Interactive Computer Graphics Chapter 9 - 10

Sweep � Sweep a shape over a path to form a generalized cylinder

Interactive Computer Graphics Chapter 9 - 11

Revolution � Revolve a shape around an axis to create an object with rotational symmetry

Interactive Computer Graphics Chapter 9 - 12

Extrusion � 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

Interactive Computer Graphics Chapter 9 - 13

Interactive Computer Graphics Chapter 9 - 14

Joining Primitives � Stitching, blending

Interactive Computer Graphics Chapter 9 - 15

Modifying Primitives

Interactive Computer Graphics Chapter 9 - 16

Subdivision Surfaces � Can set level of polygon subdivision

Interactive Computer Graphics Chapter 9 - 17

Interactive Computer Graphics Chapter 9 - 18

Interactive Computer Graphics Chapter 9 - 19

Interactive Computer Graphics Chapter 9 - 20

Skin and Bones � Skeleton with joined “bones”

� Can add “skin” on top of bones

� Automatic or

hand-tuned

skinning

Interactive Computer Graphics Chapter 9 - 21

Interactive Computer Graphics Chapter 9 - 22

Particles

Interactive Computer Graphics Chapter 9 - 23

Algorithmic Primitives

Algorithms for trees, mountains, grass, fur, lightning, fire, …

Interactive Computer Graphics Chapter 9 - 24

Interactive Computer Graphics Chapter 9 - 25

Geometric model file formats � .obj: Alias Wavefront

� .dxf: Autocad

� .vrml: Inventor

� Dozens more

� Can convert

between formats

� Converting to a

common format may lose info…

Interactive Computer Graphics Chapter 9 - 26

Hierarchical 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)

Interactive Computer Graphics Chapter 9 - 27

Interactive Computer Graphics Chapter 9 - 28

DAG models � Could use tree to represent object

� Actually, a DAG (directed acyclic graph) is better: can re-use objects

� Note that each arrow needs a separate modeling transform

� In object-oriented graphics, also need motion constraints with each arrow

Interactive Computer Graphics Chapter 9 - 29

Example: Robot � Traverse DAG using DFS (or BFS)

� Push and pop matrices along the way

(e.g. left-child right-sibling) (joint position parameters?)

Interactive Computer Graphics Chapter 9 - 30

Interactive Computer Graphics Chapter 9 - 31

Modeling Programs � Moray

� Shareware

� Limited functionality

� Easy

� Lightwave, Maya

� NOT shareware

� Very full-featured

� Difficult to learn and use

� Moray, Maya demos; Lightwave video

Interactive Computer Graphics Chapter 9 - 32

Animation � 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)

Interactive Computer Graphics Chapter 9 - 33

Inverse Kinematics � You can’t just invert the joint transformations

� Joint settings aren’t even necessarily unique for a

hand position!

� Inverse kinematics:

figure out from the hand position where the joints

should be set.

Interactive Computer Graphics Chapter 9 - 34

Using Inverse Kinematics � Specify joint constraints

and priorities

� Move end effector

(or object pose)

� Let the system figure

out joint positions

� [IK demo]

Interactive Computer Graphics Chapter 9 - 35

Keyframe 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]

Interactive Computer Graphics Chapter 9 - 36

Motion Capture � More realistic motion sequences

can be generated

by Motion Capture

� Attach joint

position indicators to real actors

� Record live action

Interactive Computer Graphics Chapter 9 - 37

Interactive Computer Graphics Chapter 9 - 38

Morphing � 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

Interactive Computer Graphics Chapter 9 - 39

3D Morphing � Define 3D before and after shapes as e.g.

NURBS surfaces with

same number of control points

� Gradually move control points from

first setting to second

� Specify key poses: e.g. smile, frown, 12 frames of walking motion

Interactive Computer Graphics Chapter 9 - 40

Combined approaches

Interactive Computer Graphics Chapter 9 - 41

Example: virtual puppetry � Suppose you want to display virtual puppet shows

� How could you animate puppet movements?

� How could you control the animations externally?

Interactive Computer Graphics Chapter 9 - 42

Character Animation � To make computer graphics (or cartoon drawings)

come alive…

Interactive Computer Graphics Chapter 9 - 43

Personality through Pose, Expression, Motion, Timing

Interactive Computer Graphics Chapter 9 - 44

Interactive Computer Graphics Chapter 9 - 45

Object-oriented Graphics � Higher in the programming hierarchy: control models with object-oriented programs

robot robbie;

robbie.smile();

robbie.walk(270, 5, 3);

Interactive Computer Graphics Chapter 9 - 46

Data 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

Interactive Computer Graphics Chapter 9 - 47

CSG Tree

Interactive Computer Graphics Chapter 9 - 48

Application 2: HSR � How to render in 3D with hidden surface removal when you don’t have a hardware

depth-buffer?

� Can you think of any other ways of removing

hidden surfaces quickly?

� Principle: a polygon can’t be occluded by another polygon that is behind it.

Interactive Computer Graphics Chapter 9 - 49

BSP-tree � The painter’s 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?)

Interactive Computer Graphics Chapter 9 - 50

BSP 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)

Interactive Computer Graphics Chapter 9 - 51

Traversing 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?

Interactive Computer Graphics Chapter 9 - 52

Building 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 doesn’t grow too badly in

practice…

Interactive Computer Graphics Chapter 9 - 53

BSP-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 doesn’t grow too much through splitting]

Interactive Computer Graphics Chapter 9 - 54

Application 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

Interactive Computer Graphics Chapter 9 - 55

Quadtree � 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!

Interactive Computer Graphics Chapter 9 - 56

Quadtree Structure

Interactive Computer Graphics Chapter 9 - 57

Octrees � Generalize to cutting up a cube into 8 sub-cubes, each of which may be E, F, or P (and

subdivided)

� Much more efficient

than a 3D array of

cells for 3D volumetric data

Interactive Computer Graphics Chapter 9 - 58

Quadtree 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?

Interactive Computer Graphics Chapter 9 - 59

Applications of Octrees � Contour finding in MRI data

� 3D scanning and rendering

� Efficient ray tracing

� Intersection, collision testing

Interactive Computer Graphics Chapter 9 - 60

Research in Visibility � Can we figure out in advance what will be visible from each viewpoint?

Interactive Computer Graphics Chapter 9 - 61

Viewer-centered representation

� Viewer-centered object representations: representation not of volume of space filled

but appearance from all viewpoints

Interactive Computer Graphics Chapter 9 - 62

Occlusion in view space

� Occlusion in view space is subtraction

Interactive Computer Graphics Chapter 9 - 63

Events � Events: boundaries in viewpoint space where faces appear or disappear

Interactive Computer Graphics Chapter 9 - 64

Aspect Graph � Aspect graph: a graph with a node for every topologically distinct view of an object, with

edges connecting adjacent views

Interactive Computer Graphics Chapter 9 - 65

Aspect graph varieties � Aspect graphs can be constructed for

� 3D: space

� 2D: multiple axis rotations or planar motions

� 1D: single-axis rotations

Interactive Computer Graphics Chapter 9 - 66

1D Aspect Graph for Rotation

Interactive Computer Graphics Chapter 9 - 67

1D Aspect Graph Results � Useful for rotations without Z-buffer hardware!

� Not so useful for more viewer freedom, modern graphics hardware

Interactive Computer Graphics Chapter 9 - 68

Conservative 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 it’s faster since fewer polygons are drawn

Interactive Computer Graphics Chapter 9 - 69

Weak 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

Interactive Computer Graphics Chapter 9 - 70

Conservative Visibility Preprocessing on a Grid � Divide viewing space into a 3D

(or 2D) grid

� Compute a

conservative

display list for each cell

Interactive Computer Graphics Chapter 9 - 71

Conservative 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 cell’s 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!)

Interactive Computer Graphics Chapter 9 - 72

Perspective � What good did this visibility research do for the world?

� It wasn’t enough for me

� I left graphics research and went into digital libraries

� Left University of Pittsburgh and went to Wheaton College

Interactive Computer Graphics Chapter 9 - 73

Summary � 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