Presentation is loading. Please wait.

Presentation is loading. Please wait.

Hierarchical and Object-Oriented Graphics

Similar presentations


Presentation on theme: "Hierarchical and Object-Oriented Graphics"— Presentation transcript:

1 Hierarchical and Object-Oriented Graphics
Chapter 8

2 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

3 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

4 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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 CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

5 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

6 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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(...)’ CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

7 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

8 Chapter 8 -- Hierarchical and Object-Oriented Graphics
2. Hierarchical Models Suppose we wish to build an automobile that we can animate We can build it from the chassis, and 4 wheels CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

9 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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); CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

10 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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, ... CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

11 Chapter 8 -- Hierarchical and Object-Oriented Graphics
Tree Representation: DAG Representation: CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

12 Chapter 8 -- Hierarchical and Object-Oriented Graphics
3. A Robot Arm Robotics provides many opportunities for developing hierarchical models. Consider this arm It consists of 3 parts CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

13 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

14 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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(); } CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

15 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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) CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

16 Chapter 8 -- Hierarchical and Object-Oriented Graphics
4. Tree Traversal Here we have a box-like representation of a human figure. We can represent this figure as a tree CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

17 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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) CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

18 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

19 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

20 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

21 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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

22 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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; } CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

23 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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); } CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

24 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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. CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

25 Chapter 8 -- Hierarchical and Object-Oriented Graphics
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). CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

26 5. Use of Tree Data Structures
CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

27 Chapter 8 -- Hierarchical and Object-Oriented Graphics

28 Chapter 8 -- Hierarchical and Object-Oriented Graphics

29 Chapter 8 -- Hierarchical and Object-Oriented Graphics
6. Animation CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

30 Chapter 8 -- Hierarchical and Object-Oriented Graphics

31 Chapter 8 -- Hierarchical and Object-Oriented Graphics
7. Graphical Objects CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

32 Chapter 8 -- Hierarchical and Object-Oriented Graphics

33 Chapter 8 -- Hierarchical and Object-Oriented Graphics
7.1 Methods, Attributes, and Messages CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

34 Chapter 8 -- Hierarchical and Object-Oriented Graphics

35 Chapter 8 -- Hierarchical and Object-Oriented Graphics
7.2 A Cube Object CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

36 Chapter 8 -- Hierarchical and Object-Oriented Graphics

37 Chapter 8 -- Hierarchical and Object-Oriented Graphics
7.3 Objects and Hierarchy CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

38 Chapter 8 -- Hierarchical and Object-Oriented Graphics

39 Chapter 8 -- Hierarchical and Object-Oriented Graphics
7.4 Geometric Objects CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

40 Chapter 8 -- Hierarchical and Object-Oriented Graphics

41 Chapter 8 -- Hierarchical and Object-Oriented Graphics
8. Scene Graphs CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

42 Chapter 8 -- Hierarchical and Object-Oriented Graphics

43 Chapter 8 -- Hierarchical and Object-Oriented Graphics
9. Other Tree Structures CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

44 Chapter 8 -- Hierarchical and Object-Oriented Graphics

45 Chapter 8 -- Hierarchical and Object-Oriented Graphics
9.1 CSG Trees CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

46 Chapter 8 -- Hierarchical and Object-Oriented Graphics

47 Chapter 8 -- Hierarchical and Object-Oriented Graphics
9.2 BSP Trees CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

48 Chapter 8 -- Hierarchical and Object-Oriented Graphics

49 Chapter 8 -- Hierarchical and Object-Oriented Graphics
9.3 Quadtrees and Octrees CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

50 Chapter 8 -- Hierarchical and Object-Oriented Graphics

51 Chapter 8 -- Hierarchical and Object-Oriented Graphics
10. Graphics and the Web CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

52 Chapter 8 -- Hierarchical and Object-Oriented Graphics

53 Chapter 8 -- Hierarchical and Object-Oriented Graphics
10.1 Networks and Protocols CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

54 Chapter 8 -- Hierarchical and Object-Oriented Graphics

55 Chapter 8 -- Hierarchical and Object-Oriented Graphics
10.2 Hypermedia and HTML CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

56 Chapter 8 -- Hierarchical and Object-Oriented Graphics

57 Chapter 8 -- Hierarchical and Object-Oriented Graphics
10.3 Databases and VRML CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

58 Chapter 8 -- Hierarchical and Object-Oriented Graphics

59 Chapter 8 -- Hierarchical and Object-Oriented Graphics
10.4 JAVA and Applets CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

60 Chapter 8 -- Hierarchical and Object-Oriented Graphics

61 Chapter 8 -- Hierarchical and Object-Oriented Graphics
11. Summary CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

62 Chapter 8 -- Hierarchical and Object-Oriented Graphics

63 Chapter 8 -- Hierarchical and Object-Oriented Graphics
12. Suggested Readings CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics

64 Chapter 8 -- Hierarchical and Object-Oriented Graphics

65 Exercises -- Due next class
CS 480/680 Chapter 8 -- Hierarchical and Object-Oriented Graphics


Download ppt "Hierarchical and Object-Oriented Graphics"

Similar presentations


Ads by Google