Cs 352 computer graphics
Download
1 / 73

cs 352: computer graphics - PowerPoint PPT Presentation


  • 321 Views
  • Updated On :

CS 352: Computer Graphics. Hierarchical Graphics, Modeling, And Animation. Overview. Modeling Animation Data structures for interactive graphics CSG-tree BSP-tree Quadtrees and Octrees Visibility precomputation

Related searches for cs 352: computer graphics

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'cs 352: computer graphics' - adamdaniel


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Cs 352 computer graphics l.jpg

CS 352: Computer Graphics

Hierarchical

Graphics,

Modeling,

And Animation


Overview l.jpg
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


Modeling l.jpg
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


Representing objects l.jpg
Representing objects

  • Objects represented as symbols

  • Defined in model coordinates; transformed into world coordinates (M = TRS)

    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity(); glTranslatef(…);

    glRotatef(…); glScalef(…);

    glutSolidCylinder(…);


Primitives l.jpg
Primitives

  • The basic sort of primitive is the polygon

  • Number of polygons: tradeoff between render time and model accuracy


Spline curves l.jpg
SplineCurves

  • Linear spline

  • Cardinal spline

  • B-spline

  • Bezier curve

  • NURBS (non-uniform rational b-spline)




Sweep l.jpg
Sweep

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


Revolution l.jpg
Revolution

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


Extrusion l.jpg
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


Joining primitives l.jpg
Joining Primitives

  • Stitching, blending



Subdivision surfaces l.jpg
Subdivision Surfaces

  • Can set level of polygon subdivision


Skin and bones l.jpg
Skin and Bones

  • Skeleton with joined “bones”

  • Can add “skin” on top of bones

  • Automatic or hand-tunedskinning



Algorithmic primitives l.jpg
Algorithmic Primitives

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


Geometric model file formats l.jpg
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…


Hierarchical models l.jpg
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)


Dag models l.jpg
DAG 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


Example robot l.jpg
Example: Robot

  • Traverse DAG using DFS (or BFS)

  • Push and pop matrices along the way (e.g. left-child right-sibling) (joint position parameters?)


Modeling programs l.jpg
Modeling Programs

  • Moray

    • Shareware

    • Limited functionality

    • Easy

  • Lightwave, Maya

    • NOT shareware

    • Very full-featured

    • Difficult to learn and use

  • Moray, Maya demos; Lightwave video


Animation l.jpg
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)


Inverse kinematics l.jpg
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.


Using inverse kinematics l.jpg
Using Inverse Kinematics

  • Specify joint constraintsand priorities

  • Move end effector(or object pose)

  • Let the system figureout joint positions

  • [IK demo]


Keyframe animation l.jpg
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]


Motion capture l.jpg
Motion Capture

  • More realistic motion sequences can be generated by Motion Capture

  • Attach joint position indicatorsto real actors

  • Record live action


Morphing l.jpg
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


3d morphing l.jpg
3D 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



Example virtual puppetry l.jpg
Example: virtual puppetry

  • Suppose you want to display virtual puppet shows

    • How could you animate puppet movements?

    • How could you control the animations externally?


Character animation l.jpg
Character Animation

  • To make computer graphics(or cartoon drawings) come alive…



Object oriented graphics l.jpg
Object-oriented Graphics

  • Higher in the programming hierarchy: control models with object-oriented programs

    robot robbie;

    robbie.smile();

    robbie.walk(270, 5, 3);


Data structures for modeling l.jpg
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



Application 2 hsr l.jpg
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.


Bsp tree l.jpg
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?)


Bsp tree figures l.jpg
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)


Traversing a bsp tree l.jpg
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?


Building a bsp tree l.jpg
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…


Bsp tree summary l.jpg
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]


Application 3 handling large spatial data sets l.jpg
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


Quadtree l.jpg
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!



Octrees l.jpg
Octrees

  • 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


Quadtree algorithms l.jpg
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?


Applications of octrees l.jpg
Applications of Octrees

  • Contour finding in MRI data

  • 3D scanning and rendering

  • Efficient ray tracing

  • Intersection, collision testing


Research in visibility l.jpg
Research in Visibility

  • Can we figure out in advance what will be visible from each viewpoint?


Viewer centered representation l.jpg
Viewer-centered representation

  • Viewer-centered object representations: representation not of volume of space filled but appearance from all viewpoints


Occlusion in view space l.jpg
Occlusion in view space

  • Occlusion in view space is subtraction


Events l.jpg
Events

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


Aspect graph l.jpg
Aspect Graph

  • Aspect graph: a graph with a node for every topologically distinct view of an object, with edges connecting adjacent views


Aspect graph varieties l.jpg
Aspect graph varieties

  • Aspect graphs can be constructed for

    • 3D: space

    • 2D: multiple axis rotations or planar motions

    • 1D: single-axis rotations



1d aspect graph results l.jpg
1D Aspect Graph Results

  • Useful for rotations without Z-buffer hardware!

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


Conservative visibility preprocessing l.jpg
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


Weak visibility subdivision l.jpg
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


Conservative visibility preprocessing on a grid l.jpg
Conservative Visibility Preprocessing on a Grid

  • Divide viewing space into a 3D (or 2D) grid

  • Compute a conservative display list for each cell


Conservative visibility algorithm l.jpg
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!)


Perspective l.jpg
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


Summary l.jpg
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


ad