CSCE 441: Computer Graphics: Hierarchical Models Jinxiang Chai.

Slides:



Advertisements
Similar presentations
Using GLU/GLUT Objects GLU/GLUT provides very simple object primitives glutWireCube glutWireCone gluCylinder glutWireTeapot.
Advertisements

Jinxiang Chai CSCE441: Computer Graphics Coordinate & Composite Transformations 0.
Hierarchical Modeling I Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Transformations Objectives Understand how transformations work in 2D and 3D Understand the concept of homogenous coordinate system Understand scene graphs.
Objectives Learn to build arbitrary transformation matrices from simple transformations Learn to build arbitrary transformation matrices from simple transformations.
Hierarchical Modeling II Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner Transformations III Week.
Graphical Objects and Scene Graphs CS4395: Computer Graphics 1 Mohan Sridharan Based on slides created by Edward Angel.
OpenGL (II). How to Draw a 3-D object on Screen?
2IV60 Computer Graphics 2D transformations
2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.
University of Texas at Austin CS 378 – Game Technology Don Fussell CS 378: Computer Game Technology 3D Engines and Scene Graphs Spring 2012.
Hierarchical Transformations Hierarchical Models Scene Graphs
Hierarchy, Modeling, and Scene Graphs Angel: Chapter 10 OpenGL Programming and Reference Guides, other sources. ppt from Angel, AW, etc. CSCI 6360/4360.
COMP 175: Computer Graphics March 10, 2015
Objectives Review some advanced topics, including Review some advanced topics, including Chapter 8: Implementation Chapter 8: Implementation Chapter 9:
Graphical Objects and Scene Graphs 1 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009.
TWO DIMENSIONAL GEOMETRIC TRANSFORMATIONS CA 302 Computer Graphics and Visual Programming Aydın Öztürk
Geometric Transformations Jehee Lee Seoul National University.
Transforms Hierarchical Modeling Scene Graphs Using hierarchical modeling techniques in 3D software design Transforms Local basis Matrix math review Matrices.
Demetriou/Loizidou – ACSC330 – Chapter 9 Hierarchical and Object-Oriented Modeling Dr. Giorgos A. Demetriou Dr. Stephania Loizidou Himona Computer Science.
Week 4 Lecture 1: Hierarchical Modeling Part 1 Based on Interactive Computer Graphics (Angel) - Chapter 10 1 Angel: Interactive Computer Graphics 5E ©
Hierarchical Modeling. Instance Transformation Start with a prototype object (a symbol) Each appearance of the object in the model is an instance – Must.
C O M P U T E R G R A P H I C S Guoying Zhao 1 / 40 C O M P U T E R G R A P H I C S Guoying Zhao 1 / 40 Computer Graphics Hierarchy I.
CS559: Computer Graphics Lecture 15: Hierarchical Modeling and Shading Li Zhang Spring 2008.
Jinxiang Chai CSCE441: Computer Graphics 3D Transformations 0.
Jinxiang Chai Composite Transformations and Forward Kinematics 0.
Jul 25, 2014IAT 3551 Scene Graphs.  A data structure that stores information about a graphics scene –Each node has information that structures the interpretation.
111/16/ :14 UML Instance Transformation x y z x y z x y z x y z SRT Model Coordinates.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
1 Hierarchical and Object-Oriented Graphics Construct complex models from a set of simple geometric objects Extend the use of transformations to include.
Transformations Tutorial
1/50 CS148: Introduction to Computer Graphics and Imaging Transforms CS148: Introduction to Computer Graphics and Imaging Transforms.
Computer Graphics I, Fall 2008 Hierarchical Modeling II.
Geometric Transformations Sang Il Park Sejong University Many slides come from Jehee Lee’s.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell Hierarchical Modeling.
Graphical Objects and Scene Graphs Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Hierarchical Modeling. 2 Objectives Build a tree-structured model of a humanoid figure. Examine various traversal strategies. Build a generalized tree-model.
Composing Transformations
Learning Objectives Affine transformations Affine transformations Translation Translation Rotation Rotation Scaling Scaling Reflection Reflection Shear.
CS559: Computer Graphics Lecture 12: OpenGL - Transformation Li Zhang Spring 2008.
CS559: Computer Graphics Lecture 13: Hierarchical Modeling and Curves Li Zhang Spring 2010.
1 Geometric Transformations-II Modelling Transforms By Dr.Ureerat Suksawatchon.
Computer Graphics I, Fall 2008 Hierarchical Modeling I.
Jinxiang Chai CSCE441: Computer Graphics Coordinate & Composite Transformations 0.
The Modelview Stack Lecture 9 Wed, Sep 12, The Modelview Stack OpenGL maintains a stack of matrices. The matrix on top of the stack is the current.
Hierarchical Models Chapter 9.
IAT 355 Scene Graphs Feb 23, 2017 IAT 355.
Summary of Properties of 3D Affine Transformations
Graphical Objects and Scene Graphs
Modeling and Hierarchy
Hierarchical Transformations Hierarchical Models Scene Graphs
Computer Graphics - Hierarchical Models-
Modeling and Hierarchy
Hierarchical and Object-Oriented Graphics
Introduction to Computer Graphics with WebGL
CSCE 441: Computer Graphics: Hierarchical Models
Hierarchical and Object-Oriented Graphics
Hierarchical Modeling I
The Modelview Matrix Lecture 8 Mon, Sep 10, 2007.
Transformations in OpenGL
Hierarchical Modeling & Constructive Solid Geometry
CSCE441: Computer Graphics Coordinate & Composite Transformations
Geometric Objects and Transformations (II)
Transformations III Week 3, Mon Jan 21
Transformations IV Week 3, Wed Jan 23
Dr. Chih-Kuo Yeh 葉智國 Computer Graphics Dr. Chih-Kuo Yeh 葉智國
Hierarchical Modeling
CSCE 441: Computer Graphics: Hierarchical Models
Presentation transcript:

CSCE 441: Computer Graphics: Hierarchical Models Jinxiang Chai

Image space 2 Normalized project space View space World spaceObject space Summary: 3D Geometry Pipeline

Complex Models

Outline Hierarchical Models Reading: HB 9-8&9-9, HB chapter 11, OpenGL Programming Guide, chapter 3, and course slides

Most graphics API supports a few primitives: - sphere - cube - cylinders These symbols are instanced using instance/model transformation: Symbols and Instances

Most graphics API supports a few primitives: - sphere - cube - cylinders These symbols are instanced using instance transformation: Symbols and Instances What’s the matrix for the instance transformation above?

Most graphics API supports a few primitives: - sphere - cube - cylinders These symbols are instanced using instance transformation: Symbols and Instances

In opengl, instance/model transformation is created by modifying the Model-view matrix: Sample Instance Trans. glMatrixMode(GL_MODELVIEW); glLoadIdentity(…);// set current matrix to the identity glTranslate(…); // translate glRotate(…); //rotate glScale(…);//scale house();

In opengl, instance transformation is created by modifying the Model-view matrix: Sample Instance Trans. Does the transform seem to be backward? glMatrixMode(GL_MODELVIEW); glLoadIdentity(…); glTranslate(…); glRotate(…); glScale(…); house();

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. Composite Transformation: Opengl Implementation glMatrixMode(GL_MODELVIEW); glLoadIdentity(…); M 4 ; M 3 ; M 2 ; M 1 ; …

Lamp What’s the current coordinate A ? 11

Lamp Suppose we know how to draw each bone in local reference frames

Lamp How can we draw the character under a particular pose

Lamp How can we draw the character under a particular pose base(); upper_arm(); middel_arm(); lower_arm();

Lamp What’s the current coordinate A ? 15

Lamp What’s the current coordinate A ? 16

Lamp What’s the current coordinate A ? 17

Lamp What’s the current coordinate A ? 18

Lamp Implementation The lamp can be displayed by computing a global matrix and computing it at each step lamp() { M_model = base(); M_model = upper_arm(); M_model = middel_arm(); M_model = lower_arm(); } Matrix M_model; Main() { … M_model=Identity() lamp(); }

Lamp Implementation The lamp can be displayed by computing a global matrix and computing it at each step lamp() { M_model = base(); M_model = upper_arm(); M_model = middel_arm(); M_model = lower_arm(); } Can we make it more efficiently? Matrix M_model; Main() { … M_model=Identity() lamp(); }

Better Implementation Instead of recalculating the global matrix each time, we can just update it in place Matrix M_model; Main() { … M_model=Identity() lamp(); } lamp() { M_model *= base(); M_model *= upper_arm(); M_model *= middel_arm(); M_model *= lower_arm(); }

Opengl Implementation Opengl maintains a global state matrix called model-view matrix 2D_lamp(x, y, θ 0, θ 1, θ 2, θ 3 ) { glTranslatef(x,y,0) glRotatef(θ 0,0,0,1, ); base(); glTranslatef(0,l 0,0) glRotatef(θ 1,0,0,1, ); upper_arm(); glTranslatef(0,l 1,0) glRotatef(θ 2,0,0,1, ); middel_arm(); glTranslatef(0,l 2,0) glRotatef(θ 3,0,0,1, ); lower_arm(); } Main() { … glMatrixMode(GL_MODELVIEW); glLoadIdentity(); 2D_lamp(a,b,c,d,e,f) … } //set current matrix to identity

More Complex Objects

Hierarchical Modeling Consider a model of a car – how many symbols/primitives? – how many instances?

Hierarchical Modeling Consider a model of a car – 2 primitives : – 5 instances :

Hierarchical Modeling Consider a model of a car – 2 primitives : chassis + wheel – 5 instances : 1 chassis + 4 wheel World system front-left wheel system Chasis system

Hierarchical Modeling Consider a model of a car – 2 primitives : 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 (i.e., instances) - transition edges represent relationship between the parts

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

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 (i.e., primitives) This allows us to decompose geometry representation of a complex object into a set of geometric primitives and the geometric transformations between the primitives.

Hierarchical Modeling What might we draw the tree for the lamp? Hierarchical model can be composed of instances using trees or directed acyclic graphs (DAGs) - edges contains geometric transformations - nodes contains geometry of subparts (i.e., primitives)

Hierarchical Modeling Hierarchical model can be composed of instances using trees or directed acyclic graphs (DAGs) - edges contains geometric transformations - nodes contains geometry

Hierarchical Modeling Hierarchical model can be composed of instances using trees or directed acyclic graphs (DAGs) - edges contains geometric transformations - nodes contains geometry lower arm base Upper arm world middle arm

Different geometric models for Lamp

More Complex Objects

A More Complex Example: Human Figure torso

A More Complex Example: Human Figure torso

A More Complex Example: Human Figure torso

A More Complex Example: Human Figure What’s the most efficient way to draw this figure? Suppose we know how to draw each primitive in local reference frames torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

A More Complex Example: Human Figure What’s the most sensible way to traverse this tree? torso

Opengl Implementation: Human Figure MhMh M lua M lla torso

Opengl Implementation: Human Figure MhMh M lua M lla torso Is this correct?

Opengl Implementation: Human Figure MhMh M h *M lua should be Mlua M h *M lua *M lla should be Mlua*Mlla I torso Is this correct? No

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 McMc … I

Push and Pop the Current Matrix glPushMatrix() copy the current matrix at the top of the stack McMc … McMc … McMc I I

Push and Pop the Current Matrix glPopMatrix() destroys the matrix at the top of stack M top-1 … M top M top-1 … I I

Opengl Implementation: Human Figure

I

I I

I MhMh

I

I I

I M lua

Opengl Implementation: Human Figure I M lua

Opengl Implementation: Human Figure I M lua M lua *M lla

Opengl Implementation: Human Figure I M lua

Opengl Implementation: Human Figure I

I MhMh M lua M lua M lla

Articulated Models You can draw these models as long as - you know how to draw each primitive in local reference frames - you know how to call transformation matrices to model the relationship between the primitives