hierarchical and object oriented graphics n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Hierarchical and Object-Oriented Graphics PowerPoint Presentation
Download Presentation
Hierarchical and Object-Oriented Graphics

Loading in 2 Seconds...

play fullscreen
1 / 65

Hierarchical and Object-Oriented Graphics - PowerPoint PPT Presentation


  • 86 Views
  • Uploaded on

Hierarchical and Object-Oriented Graphics. Chapter 8. Introduction: In this chapter we explore multiple approaches to developing and working with models of geometric objects. We extend the use of transformations from Chapter 4 to include hierarchical relationships among the objects.

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 'Hierarchical and Object-Oriented Graphics' - aquila-mccarthy


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
slide2
Introduction:
    • In this chapter we explore multiple approaches to developing and working with models of geometric objects.
    • We extend the use of transformations from Chapter 4 to include hierarchical relationships among the objects.
    • The techniques that we develop are appropriate for applications, such as robotics and figure animation, where the dynamic behavior of the objects is characterized by relationships among the parts of the model.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide3
The notion of hierarchy is a powerful one and is an integral part of object oriented methodologies.
  • We extend our hierarchical model of objects to hierarchical models of whole scenes, including cameras, lights, and material properties.
  • Such models allow us to extend our graphics APIs to more objet-oriented systems and gives us insight in how to use graphics over networks and distributed environments, such as the Web.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

1 symbols and instances
1. Symbols and Instances
  • Our first concern is how to store a model that may include many sophisticated objects.
  • There are two immediate issues:
    • How do we define a complex object
    • How do we represent a collection of these objects.
  • We can take a non hierarchical approach to modeling regarding these objects as symbols, and modeling our world as a collection of symbols

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide5
Symbols are usually represented at a convenient size and orientation.
      • For example: a cylinder
      • In OpenGL we have to set up the appropriate transformation from the frame of the symbol to the world coordinate frame to apply it to the model-view matrix before we execute the code for the symbol.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide6
For example: the instance transformation
    • M = TRS
    • is a concatenation of a translation, a rotation, and a scale
    • And the OpenGL program often contains this code:
      • glMatrixMode(GL_MODELVIEW);
      • glLaodIdentity();
      • glTranslatef(...);
      • glRotatef(...);
      • glScalef(...);
      • glutSolidCylinder(...)’

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide7
We can also think of such a model in the form of a table
    • The table shows no relationship among the objects. However, it does contain everything we need to draw the objects.
    • We could do a lot of things with this data structure, but its flatness limits us.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

2 hierarchical models
2. Hierarchical Models
  • Suppose we wish to build an automobile that we can animate
  • We can build it from the chassis, and 4 wheels

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide9
Two frames of our animation could look like this:
    • We could calculate how far the wheel moved, and have code that looks like
      • calculate(speed, distance);
      • draw_right_front_wheel(speed, dist);
      • draw_left_front_wheel(speed, dist);
      • draw_right_rear_wheel(speed, dist);
      • draw_left_rear_wheel(speed, dist);
      • draw_chassis(speed, dist);

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide10
BUT this is the kind of code we do NOT want....
    • It is linear, and it shows none of the relationships between the 5 objects.
  • There are two types of relationships we wish to convey
    • First, we cannot separate the movement of the car from the movement of the wheels
      • If the car moves forward, the wheels must turn.
    • Second, we would like to note that all the wheels are identical and just located and oriented differently.
    • We typically do this with a graph.
      • Def: node, edge, root, leaf, ...

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide11
Tree Representation:
  • DAG Representation:

Chapter 8 -- Hierarchical and Object-Oriented Graphics

3 a robot arm
3. A Robot Arm
  • Robotics provides many opportunities for developing hierarchical models.
    • Consider this arm
    • It consists of 3 parts

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide13
The mechanism has 3 degrees of freedom, each of which can be described by a joint angle between the components
  • In our model, each joint angle determines how to position a component with respect to the component to which it is attached
    • q - rotation of the base
    • f - rotation of first arm
    • y - rotation of second arm piece.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide14
We could write it as follows:
    • display()
    • {
    • glRotatef(theta, 0.0, 1.0, 0.0);
    • base();
    • glTranslatef(0.0, h1, 0.0);
    • glRotatef(phi, 0.0, 0.0, 1.0);
    • lower_arm();
    • glTranslatef(0.0, h2, 0.0);
    • glRotatef(0.0, 0.0, 1.0);
    • upper_arm();
    • }

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide15
Note that we have described the positioning of the arm independently of the details of the individual parts.
    • We have also put it into a tree structure
    • This makes it possible to write separate programs to describe the components and animate the robot.
    • Drawing an object stored in a tree requires performing a tree traversal (you must visit every node)

Chapter 8 -- Hierarchical and Object-Oriented Graphics

4 tree traversal
4. Tree Traversal
  • Here we have a box-like representation of a human figure.
    • We can represent this figure as a tree

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide17
If we put the matrices with each node we can specify exactly how to draw the robot
  • The issue is how to traverse the tree...
    • Typically you do a pre-order traversal.
    • This can be done in two ways:
      • with code and a stack
      • recursively (implicit stack)

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide18
4.1 A Stack-Based Traversal
    • Consider the code necessary to draw the Robot.
      • This function might be called from the display callback
      • The Model-View matrix, M, in effect when the function is invoked determines the position of the robot relative to the rest of the scene.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide19
The function must manipulate the model-view matrix before each part of the robot is drawn.
  • In addition to the usual OpenGL functions for rotation, translation, and scaling, the functions glPushMatrix and glPopMatrix are particularly helpful for traversing our tree.
  • The first glPushMatrix duplicates the current model-view matrix
    • assuming that we have done a previous glMatrixMode(GL_MODELVIEW)
    • When we have finished with changes we can do a glPopMatrix to get back the original one saved
    • Note: we must do another glPushMatrix to leave a copy that we can later go back to.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide20
OpenGL also has the functions glPushAttrig and glPopAttrib that allow us to deal with attributes in a similar manner
  • OpenGL divides its state into groups, and allows a user to push any set of these groups on th attribute stack.
    • The user needs only to set the bits in a mask that is the parameter for glPushAttrib
    • Attribute groups include lighting, so we can push material properties and lights onto the stack.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

5 use of tree data structures
5. Use of Tree Data Structures
  • The second approach is to use a standard tree data structure to represent our hierarchy and then to render it with a traversal algorithm that is independent of the mode of traversal.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide22
At each node we must store the information necessary to draw the object:
    • a function that defines the object
    • the homogeneous coordinate matrix that positions the object relative to the parent.
    • Typedef struct treenode{
    • Glfloat m[16];
    • void (*f)();
    • struct treenode *sibling;
    • struct treenode *child;
    • }

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide23
Traversing the tree in a preorder traversal can be accomplished
    • void traverse (treenode * root)
    • {
    • if(root == NULL) return
    • glPushMatrix();
    • glMultMatrix(root->m);
    • root->f();
    • if(root->child!= NULL) traverse(root->child);
    • glPopMatrix();
    • if(root->sibling!= NULL) traverse(root->sibling);
    • }

Chapter 8 -- Hierarchical and Object-Oriented Graphics

6 animation
6. Animation
  • Our robot example is articulated
    • consists of rigid parts connected by joints
  • We can make such models change their positions in time - animate them - by altering a small set of parameters.
  • Hierarchical models allow us to reflect correctly the compound motions incorporating the physical relationships among parts of the model.

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide25
Of the many approaches to animation, a few basic techniques are of particular importance when we work with articulated figures.
    • Kinematics
      • describing the position of the parts of the model based on only their joint angles.
    • Inverse kinematics and inverse dynamics
      • given a desired state of the model, how can we adjust the angles so as to achieve this position?
    • key-frame animation
      • position the objects at a set of times.
    • Inbetweening
      • then fill in (interpolate).

Chapter 8 -- Hierarchical and Object-Oriented Graphics

5 use of tree data structures1
5. Use of Tree Data Structures

Chapter 8 -- Hierarchical and Object-Oriented Graphics

6 animation1
6. Animation

Chapter 8 -- Hierarchical and Object-Oriented Graphics

7 graphical objects
7. Graphical Objects

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide33
7.1 Methods, Attributes, and Messages

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide35
7.2 A Cube Object

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide37
7.3 Objects and Hierarchy

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide39
7.4 Geometric Objects

Chapter 8 -- Hierarchical and Object-Oriented Graphics

8 scene graphs
8. Scene Graphs

Chapter 8 -- Hierarchical and Object-Oriented Graphics

9 other tree structures
9. Other Tree Structures

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide45
9.1 CSG Trees

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide47
9.2 BSP Trees

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide49
9.3 Quadtrees and Octrees

Chapter 8 -- Hierarchical and Object-Oriented Graphics

10 graphics and the web
10. Graphics and the Web

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide53
10.1 Networks and Protocols

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide55
10.2 Hypermedia and HTML

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide57
10.3 Databases and VRML

Chapter 8 -- Hierarchical and Object-Oriented Graphics

slide59
10.4 JAVA and Applets

Chapter 8 -- Hierarchical and Object-Oriented Graphics

11 summary
11. Summary

Chapter 8 -- Hierarchical and Object-Oriented Graphics

12 suggested readings
12. Suggested Readings

Chapter 8 -- Hierarchical and Object-Oriented Graphics

exercises due next class
Exercises -- Due next class

Chapter 8 -- Hierarchical and Object-Oriented Graphics