cse 167: introduction to computer graphics lecture 10: scene...

39
CSE 167: Introduction to Computer Graphics Introduction to Computer Graphics Lecture 10: Scene Graph Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2011

Upload: others

Post on 01-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSE 167: Introduction to Computer Graphics Lecture 10: Scene …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

Sample Class Hierarchy

Node

GeodeGroup

15

GeodeGroup

MatrixTransform Switch Sphere osgEarth

Page 16: CSE 167: Introduction to Computer Graphics Lecture 10: Scene …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

• 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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

� 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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

� 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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

� 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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

� 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 …ivl.calit2.net/wiki/images/b/b1/10_SceneGraph.pdf · 2011-10-26 · CSE 167: Introduction to Computer Graphics Lecture

Next Lecture

� Thursday, October 27: Midterm Exam

39