CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph
Transcript of CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph
![Page 1: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/1.jpg)
CSE 167:
Introduction to Computer GraphicsIntroduction to Computer Graphics
Lecture 10: Scene Graph
Jürgen P. Schulze, Ph.D.
University of California, San Diego
Fall Quarter 2011
![Page 2: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/2.jpg)
Announcements
� Midterm exam this Thursday, Oct 27
� Midterm tutorial today 3:45pm-5pm
� At Atkinson Hall, room 4004
� Homework assignment #4 due Friday, Oct 28, grading in lab 260 starts as usual at 1:30pmlab 260 starts as usual at 1:30pm
� Texturing topic will continue next weekToday: Scene Graph
2
![Page 3: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/3.jpg)
Lecture Overview
� Scene Graphs & Hierarchies
� Introduction
� Data structures
� Performance Optimization
� Level-of-detail techniques
� Occlusion Culling
� View Frustum Culling
3
![Page 4: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/4.jpg)
Rendering Pipeline
Modeling and viewing
transformation
Shading
Scene data
Shading
Projection
Rasterization,
visibility
Image4
![Page 5: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/5.jpg)
Graphics System Architecture
Interactive Applications
� Games, virtual reality, visualization
Rendering Engine, Scene Graph API
� Implement functionality commonly required in applications
� Back-ends for different low-level APIs� Back-ends for different low-level APIs
� No broadly accepted standards
� Examples: OpenSceneGraph, OpenSG, NVSG, Java3D, Ogre
Low-level graphics API
� Interface to graphics hardware
� Highly standardized: OpenGL, Direct3D
5
![Page 6: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/6.jpg)
Scene Graph APIs
� APIs focus on different clients/applications
� Java3D (https://java3d.dev.java.net/)
� Simple, easy to use, web-based applications
� OpenSceneGraph (www.openscenegraph.org)� Scientific visualization, virtual reality, GIS (geographic information systems)systems)
� NVSG (http://developer.nvidia.com/object/scenix-home.html)� Optimized for Nvidia graphics cards
� Up-to-date shader support (Cg 2.2)
� Ogre3D (http://www.ogre3d.org/)� Games, high-performance rendering
6
![Page 7: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/7.jpg)
Common Functionality
� Resource management
� Content I/O (geometry, textures, materials, animation sequences)
� Memory management
� High-level scene representation
� Graph data structure
� Rendering
� Optimized for efficiency (e.g., minimize OpenGL state changes)
7
![Page 8: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/8.jpg)
Lecture Overview
� Scene Graphs & Hierarchies
� Introduction
� Data structures
� Performance Optimization
� Level-of-detail techniques
� Occlusion Culling
� View Frustum Culling
8
![Page 9: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/9.jpg)
Scene Graphs
� Data structure for intuitive construction of 3D scenes
� So far, our GLUT-based projects store a linear list of objects
� This approach does not scale to large numbers of objects in complex, dynamic scenes
� Homework Assignment #1 – Exercise 3 (Animated Objects)
9
![Page 10: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/10.jpg)
Solar System
Star
Rotation
Planet 2Planet 1
World
Example from http://www.gamedev.net
10
Planet 2Planet 1
Moon DMoon CMoon BMoon A
RotationRotation
![Page 11: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/11.jpg)
Solar System with Wobble
Star
Rotation
World
New Node
11
Planet 2
Planet 1
Moon DMoon CMoon BMoon A
RotationRotation
Wobble
![Page 12: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/12.jpg)
Planets rotating at different speeds
Star
Rotation
World
Rotation
Separated
12
Planet 2
Planet 1
Moon DMoon CMoon BMoon A
RotationRotation
Wobble
![Page 13: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/13.jpg)
Data Structure
� Requirements
� Collection of separable geometry models
� Organized in groups
� Related via hierarchical transformations
� Use a tree structure� Use a tree structure
� Nodes have associated local coordinates
� Different types of nodes
� Geometry
� Transformations
� Lights
� many more
13
![Page 14: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/14.jpg)
Class Hierarchy
� Many designs possible
� Design driven by intended application� Games
� Optimized for speed
� Large-scale visualization� Optimized for memory requirements� Optimized for memory requirements
� Modeling system� Optimized for editing flexibility
14
![Page 15: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/15.jpg)
Sample Class Hierarchy
Node
GeodeGroup
15
GeodeGroup
MatrixTransform Switch Sphere osgEarth
![Page 16: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/16.jpg)
Class Hierarchy
Node
� Access to local-to-world coordinate transformation
Group
� Stores list of children
� Get, add, remove children� Get, add, remove children
Geode
� Geometry node, does not have children
16
![Page 17: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/17.jpg)
Class Hierarchy
MatrixTransform
� Stores additional transformation M
� Transformation applies to sub-tree below node
� Monitor-to-world transformation M0M1
World
M0
M1
Star
Planet
Moon A Moon B
17
![Page 18: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/18.jpg)
Class Hierarchy
Switch
� Stores list of children
� Only one child is visible at a time
� Used to step through children (“key frame” animation), or to show/hide a sub graphor to show/hide a sub graph
18
M1
Half Moon Full Moon
![Page 19: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/19.jpg)
Class Hierarchy
Sphere
� Pre-defined geometry with parameters, e.g., for tesselation level, solid/wireframe, etc.
osgEarth
� Special geometry node providing Google Earth-like � Special geometry node providing Google Earth-like functionality
19
Sphere at different tesselation levels
osgEarth
![Page 20: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/20.jpg)
Source Code for Solar Systemworld = new Group();
rotation0 = new MatrixTransform(…);
rotation1 = new MatrixTransform(…);
rotation2 = new MatrixTransform(…);
world.addChild(rotation0);
rotation0.addChild(rotation1);
rotation0.addChild(rotation2);
rotation0.addChild(new Planet(1));rotation0.addChild(new Planet(1));
rotation0.addChild(new Planet(2));
rotation1.addChild(new Moon(1));
rotation1.addChild(new Moon(2));
rotation2.addChild(new Moon(3));
rotation2.addChild(new Moon(4));
20
![Page 21: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/21.jpg)
Basic Rendering
Group::draw(Matrix4 C)
{
for all children
draw(C);
}
MatrixTransform::draw(Matrix4 C)
� Traverse the tree recursively
MatrixTransform::draw(Matrix4 C)
{
C_new = C*M; // M is a class member
for all children
draw(C_new);
}
Geode::draw(Matrix4 C)
{
setModelView(C);
render(myObject);
}
Initiate rendering withworld->draw(IDENTITY);
21
![Page 22: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/22.jpg)
Modifying the Scene
� Change tree structure
� Add, delete, rearrange nodes
� Change node parameters
� Transformation matrices
� Shape of geometry data
� Materials
Create new node subclasses� Create new node subclasses
� Animation, triggered by timer events
� Dynamic “helicopter-mounted” camera
� Light source
� Create application dependent nodes
� Video node
� Web browser node
� Video conferencing node
22
![Page 23: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/23.jpg)
Benefits of a Scene Graph
� Can speed up rendering by efficiently using low-level API
� Avoid state changes in rendering pipeline
� Render objects with similar properties in batches (geometry, shaders, materials)
� Change parameter once to affect all instances of an objectobject
� Abstraction from low level graphics API
� Easier to write code
� Can provide powerful visual objects with simple APIs
� Complex node types, e.g., planet visualization node
23
![Page 24: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/24.jpg)
Lecture Overview
� Scene Graphs & Hierarchies
� Introduction
� Data structures
� Performance Optimization
� Level-of-detail techniques
� Occlusion Culling
� View Frustum Culling
24
![Page 25: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/25.jpg)
Level-of-Detail Techniques
� Don’t draw objects smaller than a threshold
� Popping artifacts
� Replace objects by impostors
� Textured planes representing the objectsImpostor generation
Textured planes representing the objects
� Adapt triangle count to projected size
Impostor generation
Original vs. impostor
25 Size dependent mesh reduction
![Page 26: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/26.jpg)
Occlusion Culling
� Discard objects hidden behind other objects
� Cell-based occlusion culling� Divide scene into cells
� Determine potentially visible set (PVS) for each cell
� Discard all cells not in PVS
� Two main variants� Two main variants� Precomputation using binary space partitioning (BSP) trees
� Portal algorithms
� Specialized algorithms for different types of geometry� Indoor scenes
� Terrain
26
![Page 27: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/27.jpg)
View Frustum Culling
� Frustum defined by 6 planes
� Each plane divides space into “outside”, “inside”
� Check each object against each plane
� Outside, inside, intersecting� Outside, inside, intersecting
� If “outside” all planes
� Outside the frustum
� If “inside” all planes
� Inside the frustum
� Else partly inside and partly out
� EfficiencyView frustum
27
![Page 28: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/28.jpg)
Bounding Volumes
� Simple shape that completelyencloses an object
� Generally a box or sphere
� We use spheres� We use spheres� Easiest to work with
� Though hard to gettight fits
� Intersect boundingvolume with view frustum, instead of full geometry
28
![Page 29: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/29.jpg)
Distance to Plane
� A plane is described by a point p on the plane and a unit normal n
� Find the (perpendicular) distance from point x to the plane
•p
• x
rn
29
![Page 30: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/30.jpg)
• x
Distance to Plane
� The distance is the length of the projection of x-ponto n
dist = x − p( )u ruuuuuu
⋅rn
•p
• x
dist = x − p( )⋅
rn
rn
x− p
u ruuuu
30
![Page 31: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/31.jpg)
� The distance has a sign
� positive on the side of the plane the normal points to
� negative on the opposite side
� zero exactly on the plane
� Divides 3D space into two infinite half-spaces
Distance to Plane
� Divides 3D space into two infinite half-spaces
•p
dist(x) = x − p( )
u ruuuuuu
⋅rn
rn
Positive
Negative
31
![Page 32: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/32.jpg)
Distance to Plane
� Simplification
d is independent of x� d is independent of x
� d is distance from the origin to the plane
� We can represent a plane with just d and n
32
![Page 33: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/33.jpg)
Frustum With Signed Planes
� Normal of each plane points outside
� “outside” means positive distance
� “inside” means negative distance
33
![Page 34: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/34.jpg)
� For sphere with radius r and origin x, test the distance to the origin, and see if it is beyond the radius
� Three cases:
� dist(x)>r
� completely above
dist(x)<-r
Test Sphere and Plane
rn
Positive� dist(x)<-r
� completely below
� -r<dist(x)<r
� intersects
•
Positive
Negative
34
![Page 35: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/35.jpg)
Culling Summary
� Precompute the normal n and value d for each of the six planes.
� Given a sphere with center x and radius r
� For each plane:� if dist(x) > r: sphere is outside! (no need to continue loop)
add 1 to count if dist(x)<-r� add 1 to count if dist(x)<-r
� If we made it through the loop, check the count:� if the count is 6, the sphere is completely inside
� otherwise the sphere intersects the frustum
� (can use a flag instead of a count)
35
![Page 36: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/36.jpg)
� Want to be able to cull the whole group quickly
� But if the group is partly in and partly out, want to be able to cull individual objects
Culling Groups of Objects
36
![Page 37: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/37.jpg)
Hierarchical Bounding Volumes
� Given hierarchy of objects
� Bounding volume of each node encloses the bounding volumes of all its children
� Start by testing the outermost bounding volume
� If it is entirely outside, don’t draw the group at all� If it is entirely outside, don’t draw the group at all
� If it is entirely inside, draw the whole group
37
![Page 38: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/38.jpg)
� If the bounding volume is partly inside and partly outside
� Test each child’s bounding volume individually
� If the child is in, draw it; if it’s out cull it; if it’s partly in and partly out, recurse.
If recursion reaches a leaf node, draw it normally
Hierarchical Culling
� If recursion reaches a leaf node, draw it normally
38
![Page 39: CSE 167: Introduction to Computer Graphics Lecture 10: Scene Graph](https://reader030.fdocuments.in/reader030/viewer/2022021208/62062f2c8c2f7b17300537de/html5/thumbnails/39.jpg)
Next Lecture
� Thursday, October 27: Midterm Exam
39