Graphics Scene Structures and Rendering Techniques

 
Feb 23, 2017
IAT 355
1
IAT 355
Scene Graphs
Scene Graphs
g
A data structure that stores information
about a graphics scene
Each node has information that structures the
interpretation of child nodes
Feb 23, 2017
IAT 355
2
Computer Graphics
g
In Processing we use 
immediate mode
graphics
g
When we define a geometric object:
Call its drawing code
glPushMatrix()
glBegin( GL_TRIANGLES );
glVertex3f( 1.0, 2.0, 3.0 );    ...
glEnd();
glPopMatrix();
Feb 23, 2017
IAT 355
3
Immediate Mode
g
Graphics objects are not retained once
they are drawn
g
To redraw the scene, must reexecute the
code
g
Makes sense, because the screen needs
redrawing when new info arrives
Feb 23, 2017
IAT 355
4
OpenGL and Objects
g
OpenGL has a weak notion of objects
g
Eg. Consider a red cube
Model the cube with squares
Color is determined by OpenGL state (current
color, current lighting)
g
Not really an object
Feb 23, 2017
IAT 355
5
Imperative Programming
Model
g
Example: rotate the cube
Application sends cube data  to the graphics
subsystem
The graphics subsystem maintains state
Current rotation, translation...
The rotate function must know how the cube
us represented
Vertex list
Edge list
Feb 23, 2017
IAT 355
6
Object Oriented Graphics
g
In OO graphics, the representation is
stored with the model
g
The application sends updates to the cube
model, which stores state such as
transformation, color
g
The object contains functions that allow it
to transform itself
Feb 23, 2017
IAT 355
7
Java
g
The obvious means to do this is to store
objects in instances of classes
Methods do transformation and trigger
drawing calls
Feb 23, 2017
IAT 355
8
Cube object
g
Create an object that allows us to store
rotation, translation, color...
Cube myCube ;
myCube.color[0] = 1.0 ;
myCube.color[1] = 0.0 ; ...
myCube.matrix [0][0]  = 1.0 ; ....
Feb 23, 2017
IAT 355
9
Cube object functions
g
Also want common functions to act on the
cube’s data:
myCube.translate( tx, ty, tz );
myCube.rotate( r, 1.0, 0.0, 0.0 );
myCube.setColor( r, g, b);
g
Draw it!
myCube.render();
Feb 23, 2017
IAT 355
10
 
class cube {
public:
float color [3] ;
float matrix[4][4] ;
private:
//implementation
}
Feb 23, 2017
IAT 355
11
The Implementation
g
Can choose any old way of representing
the cube
Vertex list, polygons...
g
Private stuff accesses the public piece
g
Render method makes OpenGL calls
Feb 23, 2017
IAT 355
12
Other Objects
g
Other types of objects are:
3D Cameras
3D Lights
g
Also non-geometric things
Materials, colors
Matrices (storing geometric transformations)
Feb 23, 2017
IAT 355
13
Application
cube myCube ;
material
 
plastic ;
myCube.setMaterial( plastic );
camera frontView;
frontView.position( x, y, z );
Feb 23, 2017
IAT 355
14
Scene Descriptions
g
If you can represent all scene elements as
objects
Cameras
Lights
Material
Geometry
g
Put it all in a tree and traverse the tree
Render scene by traversal
Feb 23, 2017
IAT 355
15
Scene Graph
 
Feb 23, 2017
IAT 355
16
Scene Graph
glPushAttrib
glPushMatrix
glColor
glTranslate
glRotate
Object1
glTranslate
Object2
glPopMatrix
glPopAttrib
...
Feb 23, 2017
IAT 355
17
Scene Graph Traversal
g
Similar to preorder traversal of binary tree
Visit a node
“Activate” the node  -- pushMatrix/Attrib
Vist all children in child order
“UNActivate” node  -- popMatrix/Attrib
Feb 23, 2017
IAT 355
18
Separator nodes
g
Necessary to mark places where attribute
changes take place
Where the OpenGL push/pop live
g
Advantage:
You can write a universal traversal algorithm
Traversal order must be predictable
In OpenGL, state changes stick around
Setting color sticks until the next color change
Feb 23, 2017
IAT 355
19
Scene Graphs
g
There is a very important strategy:
Transform Code into a Data Structure
g
What was previously a bunch of OpenGL
calls is now:
Graph nodes of various kinds
Each node type has well-defined rules
Feb 23, 2017
IAT 355
20
Scene Graph Hierarchy
g
Changes to Parent nodes affect all children
Translate of a sub-tree moves all of its nodes
Specify this large-scale change in one place
The scene graph rules handle the rest
Feb 23, 2017
IAT 355
21
Slide Note
Embed
Share

This content delves into the world of computer graphics, focusing on scene graphs, immediate mode graphics, OpenGL objects, imperative and object-oriented programming models, and Java implementation. It explains the storage and manipulation of graphic scenes, drawing techniques, and different programming paradigms for rendering objects effectively.


Uploaded on Oct 01, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. IAT 355 Scene Graphs Feb 23, 2017 IAT 355 1

  2. Scene Graphs A data structure that stores information about a graphics scene Each node has information that structures the interpretation of child nodes Feb 23, 2017 IAT 355 2

  3. Computer Graphics In Processing we use immediate mode graphics When we define a geometric object: Call its drawing code glPushMatrix() glBegin( GL_TRIANGLES ); glVertex3f( 1.0, 2.0, 3.0 ); ... glEnd(); glPopMatrix(); Feb 23, 2017 IAT 355 3

  4. Immediate Mode Graphics objects are not retained once they are drawn To redraw the scene, must reexecute the code Makes sense, because the screen needs redrawing when new info arrives Feb 23, 2017 IAT 355 4

  5. OpenGL and Objects OpenGL has a weak notion of objects Eg. Consider a red cube Model the cube with squares Color is determined by OpenGL state (current color, current lighting) Not really an object Feb 23, 2017 IAT 355 5

  6. Imperative Programming Model Example: rotate the cube Application sends cube data to the graphics subsystem The graphics subsystem maintains state Current rotation, translation... The rotate function must know how the cube us represented Vertex list Edge list Feb 23, 2017 IAT 355 6

  7. Object Oriented Graphics In OO graphics, the representation is stored with the model The application sends updates to the cube model, which stores state such as transformation, color The object contains functions that allow it to transform itself Feb 23, 2017 IAT 355 7

  8. Java The obvious means to do this is to store objects in instances of classes Methods do transformation and trigger drawing calls Feb 23, 2017 IAT 355 8

  9. Cube object Create an object that allows us to store rotation, translation, color... Cube myCube ; myCube.color[0] = 1.0 ; myCube.color[1] = 0.0 ; ... myCube.matrix [0][0] = 1.0 ; .... Feb 23, 2017 IAT 355 9

  10. Cube object functions Also want common functions to act on the cube s data: myCube.translate( tx, ty, tz ); myCube.rotate( r, 1.0, 0.0, 0.0 ); myCube.setColor( r, g, b); Draw it! myCube.render(); Feb 23, 2017 IAT 355 10

  11. class cube { public: float color [3] ; float matrix[4][4] ; private: //implementation } Feb 23, 2017 IAT 355 11

  12. The Implementation Can choose any old way of representing the cube Vertex list, polygons... Private stuff accesses the public piece Render method makes OpenGL calls Feb 23, 2017 IAT 355 12

  13. Other Objects Other types of objects are: 3D Cameras 3D Lights Also non-geometric things Materials, colors Matrices (storing geometric transformations) Feb 23, 2017 IAT 355 13

  14. Application cube myCube ; material plastic ; myCube.setMaterial( plastic ); camera frontView; frontView.position( x, y, z ); Feb 23, 2017 IAT 355 14

  15. Scene Descriptions If you can represent all scene elements as objects Cameras Lights Material Geometry Put it all in a tree and traverse the tree Render scene by traversal Feb 23, 2017 IAT 355 15

  16. Scene Graph Feb 23, 2017 IAT 355 16

  17. Scene Graph glPushAttrib glPushMatrix glColor glTranslate glRotate Object1 glTranslate Object2 glPopMatrix glPopAttrib ... Feb 23, 2017 IAT 355 17

  18. Scene Graph Traversal Similar to preorder traversal of binary tree Visit a node Activate the node -- pushMatrix/Attrib Vist all children in child order UNActivate node -- popMatrix/Attrib Feb 23, 2017 IAT 355 18

  19. Separator nodes Necessary to mark places where attribute changes take place Where the OpenGL push/pop live Advantage: You can write a universal traversal algorithm Traversal order must be predictable In OpenGL, state changes stick around Setting color sticks until the next color change Feb 23, 2017 IAT 355 19

  20. Scene Graphs There is a very important strategy: Transform Code into a Data Structure What was previously a bunch of OpenGL calls is now: Graph nodes of various kinds Each node type has well-defined rules Feb 23, 2017 IAT 355 20

  21. Scene Graph Hierarchy Changes to Parent nodes affect all children Translate of a sub-tree moves all of its nodes Specify this large-scale change in one place The scene graph rules handle the rest Feb 23, 2017 IAT 355 21

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#