Computer Graphics (CS 543) Computer Graphics (CS 543) Lecture 7 (Part - - PowerPoint PPT Presentation

computer graphics cs 543 computer graphics cs 543 lecture
SMART_READER_LITE
LIVE PREVIEW

Computer Graphics (CS 543) Computer Graphics (CS 543) Lecture 7 (Part - - PowerPoint PPT Presentation

Computer Graphics (CS 543) Computer Graphics (CS 543) Lecture 7 (Part 3): Hierarchical 3D Models Prof Emmanuel Agu Computer Science Dept. Worcester Polytechnic Institute (WPI) I Instance Transformation t T f ti Start with unique object (a


slide-1
SLIDE 1

Computer Graphics (CS 543) Computer Graphics (CS 543) Lecture 7 (Part 3): Hierarchical 3D Models Prof Emmanuel Agu

Computer Science Dept. Worcester Polytechnic Institute (WPI)

slide-2
SLIDE 2

I t T f ti Instance Transformation

 Start with unique object (a symbol)  Start with unique object (a symbol)  Each appearance of object in model is an instance

l

 Must scale, orient, position  Defines instance transformation Symbol Instance

slide-3
SLIDE 3

S b l I t T bl Symbol‐Instance Table

Can store a model by assigning number to each Can store a model by assigning number to each symbol and storing parameters for instance transformation

slide-4
SLIDE 4

R l ti hi i C M d l Relationships in Car Model

 Symbol instance table does not show  Symbol‐instance table does not show

relationships between parts of model

 Consider model of car  Consider model of car

 Chassis (body) + 4 identical wheels  Two symbols

y

 Relationship: Rate of forward motion determined

by rotational speed of wheels

slide-5
SLIDE 5

St t i F ti C ll Structure using Function Calls

car(speed) car(speed) { chassis() ( ) wheel(right_front); wheel(left_front); wheel(right rear); g _ wheel(left_rear); }

 Fails to show relationships well  Look at problem using a graph

5

p g g p

slide-6
SLIDE 6

G h Graphs

 Set of nodes and edges (links)  Set of nodes and edges (links)  Edge connects a pair of nodes

d d d

 Directed or undirected

 Cycle: directed path that is a loop

loop

6

loop

slide-7
SLIDE 7

Tree

 Graph in which each node (except the root) has  Graph in which each node (except the root) has

exactly one parent node

 May have multiple children  May have multiple children  Leaf or terminal node: no children

root node root node leaf node

7

slide-8
SLIDE 8

T M d l f C Tree Model of Car

8

slide-9
SLIDE 9

Hi hi l T f Hierarchical Transforms

 Robot arm: Many small parts  Robot arm: Many small parts  Attributes (position, orientation, etc) depend on

each other each other

hammer

A Robot Hammer!

lower arm base

slide-10
SLIDE 10

Hi hi l T f Hierarchical Transforms

 Object dependency description using tree  Object dependency description using tree

structure

Base Root node Base Lower arm Root node Object position and orientation can be affected by its parent, grand-parent, grand-grand-parent d Upper arm … nodes Hammer Leaf node Hierarchical representation is known as Scene Graph

slide-11
SLIDE 11

T f ti Transformations

 Two ways to specify transformations:  Two ways to specify transformations:

 (1) Absolute transformation: each part of the object is

transformed independently relative to the origin transformed independently relative to the origin

Translate the base by (5,0,0); Translate the lower arm by (5,0,0); Translate the upper arm by (5,0,0); … y x z

slide-12
SLIDE 12

R l ti T f ti Relative Transformation

A better (and easier) way: A better (and easier) way:

(2) Relative transformation: Specify the transformation for each object relative to its parent for each object relative to its parent

Step 1: Translate base and p its descendants by (5,0,0);

slide-13
SLIDE 13

R l ti T f ti Relative Transformation

Step 2: Rotate the lower arm and all its descendants relative to the base’s local y axis by -90 degree y y g

y z y x z x

slide-14
SLIDE 14

R l ti T f ti Relative Transformation

 Represent relative transformation using scene  Represent relative transformation using scene

graph

Base T l t (5 0 0) Base Lower arm Rotate (-90) about its local y Translate (5,0,0) Upper arm Apply all the way Hammer pp y y down Apply all the way down

slide-15
SLIDE 15

Hi hi l T f U i O GL Hierarchical Transforms Using OpenGL

 Translate base and all its descendants by (5 0 0)  Translate base and all its descendants by (5,0,0)  Rotate lower arm and its descendants by ‐90 degree about

local y

ctm = LoadIdentity(); Base y(); … // setup your camera ctm = ctm * Translatef(5 0 0); Lower arm U ctm = ctm * Translatef(5,0,0); Draw_base(); Upper arm Hammer ctm = ctm * Rotatef(-90, 0, 1, 0); Draw_lower _arm(); Draw upper arm(); Hammer Draw_upper_arm(); Draw_hammer();

slide-16
SLIDE 16

Hi hi l M d li Hierarchical Modeling

P i CTM h d 1 l l

 Previous CTM had 1 level  Hierarchical modeling: extend CTM to stack with

multiple levels using linked list multiple levels using linked list

  1               1 3 2 1 Current top Of CTM stack     1

slide-17
SLIDE 17

P hM t i PushMatrix

 PushMatrix( ): Save current modelview matrix in stack

( )

 Positions 1 & 2 in linked list are same after PushMatrix  Further Rotate, Scale, Translate affect only top matrix

, , y p

    1 Before PushMatrix After PushMatrix     1 Current top Of CTM stack               1 3 2 Current top Of CTM stack               1 3 2       2 1   1   1           1 3 2

slide-18
SLIDE 18

P M t i PopMatrix

 PopMatrix( ): Delete position 1 matrix, position 2 matrix

p p p becomes top

      4 5 1 Before PopMatrix       2 1 C t t After PopMatrix Current top Of CTM stack             1 3 6 2 2           1 3 2 Current top Of CTM stack       2 1           1 3

slide-19
SLIDE 19

P M i d P hM i Ill i PopMatrix and PushMatrix Illustration

  • Note: Diagram uses old glTranslate,

glScale etc commands glScale, etc commands

  • We want same behavior though

Ref: Computer Graphics Ref: Computer Graphics Through OpenGL by Guha

slide-20
SLIDE 20

H id Fi Humanoid Figure

20

slide-21
SLIDE 21

B ildi th M d l Building the Model

 Can build model using simple shapes  Can build model using simple shapes  Access parts through functions

()

 torso()  left_upper_arm()

d b f d h

 Matrices describe position of node with respect

to its parent

l f l l h l f

 Mlla positions left lower leg with respect to left upper

arm

21

slide-22
SLIDE 22

T ith M t i Tree with Matrices

22

slide-23
SLIDE 23

T ith M t i Tree with Matrices

Set model-view matrix to Set model-view matrix to M and draw torso

23

slide-24
SLIDE 24

T ith M t i Tree with Matrices

Set model-view matrix to Set model-view matrix to MMh and draw head

24

slide-25
SLIDE 25

T ith M t i Tree with Matrices

Set model-view matrix to Set model-view matrix to MMlua and draw left-upper arm

25

slide-26
SLIDE 26

St k b d T l Stack‐based Traversal

 We can use stack Push Pop for this  We can use stack, Push, Pop for this  Rather than recomputing MMlua from scratch

  • r using an inverse matrix we can use the
  • r using an inverse matrix, we can use the

matrix stack to store M and other matrices as we traverse the tree we traverse the tree

26

slide-27
SLIDE 27

T l C d Traversal Code

figure() {

save present model-view matrix

figure() { PushMatrix() torso();

save present model view matrix update model-view matrix for head

Rotate (…); head(); PopMatrix();

recover original model-view matrix sa e it again

PopMatrix(); PushMatrix(); Translate(…); ( )

save it again update model-view matrix for left upper arm

Rotate(…); left_upper_arm(); PopMatrix();

for left upper arm recover and save original model-view matrix again

27

p (); PushMatrix();

model-view matrix again rest of code

slide-28
SLIDE 28

VRML VRML

 Scene graph introduced by SGI Open Inventor  Scene graph introduced by SGI Open Inventor  Want to have a scene graph that can be used

th W ld Wid W b

  • ver the World Wide Web

 Need links to other sites to support distributed

d t b data bases

 Virtual Reality Markup Language

 Based on Inventor data base  Implemented with OpenGL

28

slide-29
SLIDE 29

VRML W ld E l VRML World Example

slide-30
SLIDE 30

References

 Angel and Shreiner, Interactive Computer Graphics

(6th edition), Chapter 8