Download presentation
Presentation is loading. Please wait.
Published byΕυτύχιος Ράγκος Modified over 6 years ago
1
CSCE 441: Computer Graphics: Hierarchical Models
Jinxiang Chai
2
Summary: 3D Geometry Pipeline
Object space World space View space Normalized project space Image space 2
3
Complex Models
4
Outline Hierarchical Models
Reading: HB 9-8&9-9, HB chapter 11, OpenGL Programming Guide, chapter 3, and course slides
5
Symbols and Instances Most graphics API supports a few primitives:
- sphere - cube - cylinders These symbols are instanced using instance/model transformation:
6
What’s the matrix for the instance transformation above?
Symbols and Instances Most graphics API supports a few primitives: - sphere - cube - cylinders These symbols are instanced using instance transformation: What’s the matrix for the instance transformation above?
7
Symbols and Instances Most graphics API supports a few primitives:
- sphere - cube - cylinders These symbols are instanced using instance transformation:
8
Sample Instance Trans. In opengl, instance/model transformation is created by modifying the Model-view matrix: glMatrixMode(GL_MODELVIEW); glLoadIdentity(…);// set current matrix to the identity glTranslate(…); // translate glRotate(…); //rotate glScale(…);//scale house();
9
Sample Instance Trans. In opengl, instance transformation is created by modifying the Model-view matrix: glMatrixMode(GL_MODELVIEW); glLoadIdentity(…); glTranslate(…); glRotate(…); glScale(…); house(); Does the transform seem to be backward?
10
Composite Transformation: Opengl Implementation
Opengl postmultiplies transformation matrices as they are called Each subsequent transformation call concatenates the designated transformation matrix on the right of the composite matrix We must invoke the transformation in the opposite order from which they are applied. glMatrixMode(GL_MODELVIEW); glLoadIdentity(…); M4; M3; M2; M1; …
11
Lamp What’s the current coordinate A ? 11
12
Lamp Suppose we know how to draw each bone in local reference frames
13
Lamp How can we draw the character under a particular pose
14
Lamp What’s the current coordinate A ? 14
15
Lamp What’s the current coordinate A ? 15
16
Lamp What’s the current coordinate A ? 16
17
Lamp What’s the current coordinate A ? 17
18
Lamp Implementation The lamp can be displayed by computing a global matrix and computing it at each step lamp() { M_model = base(); upper_arm(); middel_arm(); lower_arm(); } Matrix M_model; Main() { … M_model=Identity() lamp(); } 18
19
Lamp Implementation The lamp can be displayed by computing a global matrix and computing it at each step lamp() { M_model = base(); upper_arm(); middel_arm(); lower_arm(); } Matrix M_model; Main() { … M_model=Identity() lamp(); } Can we make it more efficiently? 19
20
Better Implementation
Instead of recalculating the global matrix each time, we can just update it in place lamp() { M_model *= base(); upper_arm(); middel_arm(); lower_arm(); } Matrix M_model; Main() { … M_model=Identity() lamp(); } 20
21
Opengl Implementation
Opengl maintains a global state matrix called model-view matrix Main() { … glMatrixMode(GL_MODELVIEW); glLoadIdentity(); 2D_lamp(a,b,c,d,e,f) } 2D_lamp(x, y, θ0, θ1, θ2, θ3) { glTranslatef(x,y,0) glRotatef(θ0,0,0,1,); base(); glTranslatef(0,l0,0) glRotatef(θ1,0,0,1,); upper_arm(); glTranslatef(0,l1,0) glRotatef(θ2,0,0,1,); middel_arm(); glTranslatef(0,l2,0) glRotatef(θ3,0,0,1,); lower_arm(); } //set current matrix to identity
22
Hierarchical Modeling
Consider a model of a car – how many symbols? – how many instances?
23
Hierarchical Modeling
Consider a model of a car – 2 symbols : – 5 instances : 23
24
Hierarchical Modeling
Chasis system Consider a model of a car – 2 symbols : chassis + wheel – 5 instances : 1 chassis + 4 wheel World system front-left wheel system 24
25
Hierarchical Modeling
Consider a model of a car – 2 symbols : chassis + wheel – 5 instances : 1 chassis + 4 wheel We can represent our car as a tree to show the relationship between the parts - tree nodes store subparts - transition edges represent relationship between the parts
26
Hierarchical Modeling
Consider a model of a car – 2 symbols : chassis + wheel – 5 instances : 1 chassis + 4 wheel We can represent our car as a tree to show the relationship between the parts However, since all 4 wheels are instances of the same model, we’d like to only have that model appear once
27
Hierarchical Modeling
Hierarchical model can be composed of instances using trees or directed acyclic graphs (DAGs) - edges contains geometric transformations - nodes contains geometry of subparts
28
Hierarchical Modeling
Hierarchical model can be composed of instances using trees or directed acyclic graphs (DAGs) - edges contains geometric transformations - nodes contains geometry of subparts What might we draw the tree for the lamp?
29
Hierarchical Modeling
Hierarchical model can be composed of instances using trees or directed acyclic graphs (DAGs) - edges contains geometric transformations - nodes contains geometry
30
Hierarchical Modeling
Hierarchical model can be composed of instances using trees or directed acyclic graphs (DAGs) - edges contains geometric transformations - nodes contains geometry world base Upper arm middle arm lower arm 30
31
A More Complex Example: Human Figure
torso
32
A More Complex Example: Human Figure
torso 32
33
A More Complex Example: Human Figure
torso What’s the most efficient way to draw this figure?
34
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree? 34
35
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
36
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
37
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
38
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
39
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
40
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
41
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
42
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
43
A More Complex Example: Human Figure
torso What’s the most sensible way to traverse this tree?
44
Opengl Implementation: Human Figure
torso Mh Mlua Mlla 44
45
Opengl Implementation: Human Figure
torso Mh Mlua Mlla Is this correct? 45
46
Opengl Implementation: Human Figure
torso Mh Mh*Mlua should be Mlua Mh*Mlua*Mlla should be Mlua*Mlla Is this correct? No 46
47
Matrix Stack glMatrixMode(GL_MODELVIEW)
- Initially, each of the stacks contains one matrix, an identity matrix. - The top matrix in the stack is “current matrix” - The depth is at least 32 Mc … I
48
Push and Pop the Current Matrix
glPushMatrix() copy the current matrix at the top of the stack Mc Mc … Mc I … I
49
Push and Pop the Current Matrix
glPopMatrix() destroies the matrix at the top of stack Mtop Mtop-1 Mtop-1 … … I I
50
Opengl Implementation: Human Figure
51
Opengl Implementation: Human Figure
Mh Mlua Mlua Mlla 51
52
Articulated Models
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.