Announcements. Written Assignment2 is out, due March 8 Graded Programming Assignment2 next Tuesday

Similar documents
Spatial Data Structures

Spatial Data Structures

Spatial Data Structures

Spatial Data Structures

Spatial Data Structures

Ray Tracing III. Wen-Chieh (Steve) Lin National Chiao-Tung University

Computer Graphics. Bing-Yu Chen National Taiwan University The University of Tokyo

Ray Tracing Acceleration Data Structures

Spatial Data Structures and Speed-Up Techniques. Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

Intersection Acceleration

Ray Tracing with Spatial Hierarchies. Jeff Mahovsky & Brian Wyvill CSC 305

Computer Graphics. Bing-Yu Chen National Taiwan University

Speeding Up Ray Tracing. Optimisations. Ray Tracing Acceleration

More Hidden Surface Removal

Accelerated Raytracing

Scene Management. Video Game Technologies 11498: MSc in Computer Science and Engineering 11156: MSc in Game Design and Development

Acceleration Data Structures

CPSC / Sonny Chan - University of Calgary. Collision Detection II

improving raytracing speed

Anti-aliased and accelerated ray tracing. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell

Hidden Surface Elimination: BSP trees

Speeding up your game

Ray Tracing. Cornell CS4620/5620 Fall 2012 Lecture Kavita Bala 1 (with previous instructors James/Marschner)

CS535 Fall Department of Computer Science Purdue University

Lecture 25 of 41. Spatial Sorting: Binary Space Partitioning Quadtrees & Octrees

Accelerating Ray Tracing

INFOGR Computer Graphics. J. Bikker - April-July Lecture 11: Acceleration. Welcome!

Anti-aliased and accelerated ray tracing. University of Texas at Austin CS384G - Computer Graphics

Acceleration Data Structures for Ray Tracing

Chapter 11 Global Illumination. Part 1 Ray Tracing. Reading: Angel s Interactive Computer Graphics (6 th ed.) Sections 11.1, 11.2, 11.

Homework 1: Implicit Surfaces, Collision Detection, & Volumetric Data Structures. Loop Subdivision. Loop Subdivision. Questions/Comments?

Parallel Physically Based Path-tracing and Shading Part 3 of 2. CIS565 Fall 2012 University of Pennsylvania by Yining Karl Li

Identifying those parts of a scene that are visible from a chosen viewing position, and only process (scan convert) those parts

Visible-Surface Detection Methods. Chapter? Intro. to Computer Graphics Spring 2008, Y. G. Shin

Ray Genealogy. Raytracing: Performance. Bounding Volumes. Bounding Volume. Acceleration Classification. Acceleration Classification

Spatial Data Structures and Speed-Up Techniques. Ulf Assarsson Department of Computer Science and Engineering Chalmers University of Technology

Acceleration Data Structures. Michael Doggett Department of Computer Science Lund university

Algorithms for GIS:! Quadtrees

9. Visible-Surface Detection Methods

Accelerating Geometric Queries. Computer Graphics CMU /15-662, Fall 2016

Spatial Data Structures and Acceleration Algorithms

Advanced 3D-Data Structures

CS 563 Advanced Topics in Computer Graphics Culling and Acceleration Techniques Part 1 by Mark Vessella

Topics. Ray Tracing II. Intersecting transformed objects. Transforming objects

Computer Graphics. - Ray-Tracing II - Hendrik Lensch. Computer Graphics WS07/08 Ray Tracing II

CSE528 Computer Graphics: Theory, Algorithms, and Applications

Computer Graphics. Lecture 9 Hidden Surface Removal. Taku Komura

Solid Modeling. Thomas Funkhouser Princeton University C0S 426, Fall Represent solid interiors of objects

Visibility: Z Buffering

Topics. Ray Tracing II. Transforming objects. Intersecting transformed objects

Computer Graphics. - Spatial Index Structures - Philipp Slusallek

Ray Tracing: Intersection

Spatial Data Structures. Steve Rotenberg CSE168: Rendering Algorithms UCSD, Spring 2017

Last Time: Acceleration Data Structures for Ray Tracing. Schedule. Today. Shadows & Light Sources. Shadows

Collision and Proximity Queries

Subdivision Of Triangular Terrain Mesh Breckon, Chenney, Hobbs, Hoppe, Watts

Collision Detection. These slides are mainly from Ming Lin s course notes at UNC Chapel Hill

CSE328 Fundamentals of Computer Graphics: Concepts, Theory, Algorithms, and Applications

COMP 175: Computer Graphics April 11, 2018

Geometric Algorithms. Geometric search: overview. 1D Range Search. 1D Range Search Implementations

Collision Detection based on Spatial Partitioning

Hidden surface removal. Computer Graphics

Simulation in Computer Graphics Space Subdivision. Matthias Teschner

Ray Tracing Acceleration. CS 4620 Lecture 20

CSE 167: Introduction to Computer Graphics Lecture #9: Visibility. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2018

Page 1. Area-Subdivision Algorithms z-buffer Algorithm List Priority Algorithms BSP (Binary Space Partitioning Tree) Scan-line Algorithms

TDA362/DIT223 Computer Graphics EXAM (Same exam for both CTH- and GU students)

MSBVH: An Efficient Acceleration Data Structure for Ray Traced Motion Blur

Computer Graphics (CS 543) Lecture 13b Ray Tracing (Part 1) Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

EDAN30 Photorealistic Computer Graphics. Seminar 2, Bounding Volume Hierarchy. Magnus Andersson, PhD student

Drawing the Visible Objects

Data Structures and Algorithms

Accelerating Ray-Tracing

Universiteit Leiden Computer Science

Lecture 2 - Acceleration Structures

CSE 167: Introduction to Computer Graphics Lecture #10: View Frustum Culling

Ray-tracing Acceleration. Acceleration Data Structures for Ray Tracing. Shadows. Shadows & Light Sources. Antialiasing Supersampling.

Spatial Data Structures and Acceleration Algorithms

The Traditional Graphics Pipeline

VIII. Visibility algorithms (II)

Point Cloud Filtering using Ray Casting by Eric Jensen 2012 The Basic Methodology

Advanced Ray Tracing

A Model to Evaluate Ray Tracing Hierarchies

Acceleration Structures. CS 6965 Fall 2011

Using Bounding Volume Hierarchies Efficient Collision Detection for Several Hundreds of Objects

Binary Space Partition Trees. Overview. Binary Space Partitioning Trees (Fuchs, Kedem and Naylor `80)

Ray Casting. Outline in Code. Outline. Finding Ray Direction. Heckbert s Business Card Ray Tracer. Foundations of Computer Graphics (Fall 2012)

Ray Intersection Acceleration

Bounding Volume Hierarchies. CS 6965 Fall 2011

Ray Casting. To Do. Outline. Outline in Code. Foundations of Computer Graphics (Spring 2012) Heckbert s Business Card Ray Tracer

Computing Visibility. Backface Culling for General Visibility. One More Trick with Planes. BSP Trees Ray Casting Depth Buffering Quiz

Ray Tracing. Computer Graphics CMU /15-662, Fall 2016

Questions from Last Week? Extra rays needed for these effects. Shadows Motivation

CS 431/636 Advanced Rendering Techniques

Accelerating Ray-Scene Intersection Calculations

Ray Tracing Acceleration. CS 4620 Lecture 22

Visibility and Occlusion Culling

LOD and Occlusion Christian Miller CS Fall 2011

Culling. Computer Graphics CSE 167 Lecture 12

Today. Acceleration Data Structures for Ray Tracing. Cool results from Assignment 2. Last Week: Questions? Schedule

Transcription:

Announcements Written Assignment2 is out, due March 8 Graded Programming Assignment2 next Tuesday 1

Spatial Data Structures Hierarchical Bounding Volumes Grids Octrees BSP Trees 11/7/02

Speeding Up Computations Ray Tracing Spend a lot of time doing ray object intersection tests Hidden Surface Removal painters algorithm Sorting polygons front to back Collision between objects Quickly determine if two objects collide Spatial data-structures n 2 computations 3

Spatial Data Structures We ll look at Hierarchical bounding volumes Grids Octrees K-d trees and BSP trees Good data structures can give speed up ray tracing by 10x or 100x 4

Bounding Volumes Wrap things that are hard to check for intersection in things that are easy to check Example: wrap a complicated polygonal mesh in a box Ray can t hit the real object unless it hits the box Adds some overhead, but generally pays for itself. Most common bounding volume types: sphere and box box can be axis-aligned or not You want a snug fit! But you don t want expensive intersection tests! Bad! 5 Good!

You want a snug fit! Bounding Volumes But you don t want expensive intersection tests! Use the ratio of the object volume to the enclosed volume as a measure of fit. Cost = n*b + m*i n - is the number of rays tested against the bounding volume B - is the cost of each test (Do not need to compute exact intersection!) m - is the number of rays which actually hit the bounding volume I - is the cost of intersecting the object within 6

You want a snug fit! Bounding Volumes But you don t want expensive intersection tests! Use the ratio of the object volume to the enclosed volume as a measure of fit. Cost = n*b + m*i n - is the number of rays tested against the bounding volume B - is the cost of each test (Do not need to compute exact intersection!) m - is the number of rays which actually hit the bounding volume I - is the cost of intersecting the object within 7

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones 8

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones 9

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones 10

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones 11

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones Check intersect root If not return no intersections 12

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones Check intersect root If intersect check intersect left sub-tree check intersect right sub-tree 13

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones Check intersect root If intersect check intersect left sub-tree check intersect right sub-tree 14

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones Check intersect root If intersect check intersect left sub-tree check intersect right sub-tree 15

Hierarchical Bounding Volumes Still need to check ray against every object --- O(n) Use tree data structure Larger bounding volumes contain smaller ones Check intersect root If intersect check intersect left sub-tree check intersect right sub-tree 16

Hierarchical Bounding Volumes Many ways to build a tree for the hierarchy Works well: Binary Roughly balanced Boxes of sibling trees not overlap too much 17

Hierarchical Bounding Volumes Sort the surfaces along the axis before dividing into two boxes Carefully choose axis each time Choose axis that minimizes sum of volumes 18

Hierarchical Bounding Volumes Sort the surfaces along the axis before dividing into two boxes Carefully choose axis each time Choose axis that minimizes sum of volumes 19

Hierarchical Bounding Volumes Works well if you use good (appropriate) bounding volumes and hierarchy Should give O(log n) rather than O(n) complexity (n=# of objects) Can have multiple classes of bounding volumes and pick the best for each enclosed object 20

Hierarchical bounding volumes Spatial Subdivision Grids Octrees K-d trees and BSP trees 21

3D Spatial Subdivision Bounding volumes enclose the objects (objectcentric) Instead could divide up the space the further an object is from the ray the less time we want to spend checking it Grids Octrees K-d trees and BSP trees 22

Grids Data structure: a 3-D array of cells (voxels) that tile space Each cell points to list of all surfaces intersecting that cell Intersection testing: Start tracing at cell where ray begins Step from cell to cell, searching for the first intersection point At each cell, test for intersection with all surfaces pointed to by that cell If there is an intersection, return the closest one 23

Grids Cells are traversed in an incremental fashion Hits of sets of parallel lines are very regular 24

More on Grids Be Careful! The fact that a ray passes through a cell and hits an object doesn t mean the ray hit that object in that cell Optimization: cache intersection point and ray id in mailbox associated with each object Step from cell to cell Get object intersecting cell Find closest intersection If found intersection --- done 25

More on Grids Grids are a poor choice when the world is nonhomogeneous (clumpy) many polygons clustered in a small space How many cells to use? too few many objects per cell slow too many many empty cells to step through slow Non-uniform spatial subdivision is better! 26

Octrees Quadtree is the 2-D generalization of binary tree node (cell) is a square recursively split into four equal sub-squares stop when leaves get simple enough 27

Octrees Quadtree is the 2-D generalization of binary tree node (cell) is a square recursively split into four equal sub-squares stop when leaves get simple enough Octree is the 3-D generalization of quadtree node (cell) is a cube, recursively split into eight equal sub-cubes for ray tracing: stop subdivision based on number of objects internal nodes store pointers to children, leaves store list of surfaces more expensive to traverse than a grid but an octree adapts to non-homogeneous scenes better trace(cell, ray) { // returns object hit or NONE if cell is leaf, return closest(objects_in_cell(cell)) for child cells pierced by ray, in order // 1 to 4 of these obj = trace(child, ray) if obj!=none return obj return NONE } 28

Which Data Structure is Best for Ray Tracing? Grids Easy to implement Require a lot of memory Poor results for inhomogeneous scenes Octrees Better on most scenes (more adaptive) Spatial subdivision expensive for animations Hierarchical bounding volumes Better for dynamic scenes Natural for hierarchical objects 29

k-d Trees and BSP Trees Relax the rules for quadtrees and octrees: k-dimensional (k-d) tree don t always split at midpoint split only one dimension at a time (i.e. x or y or z) binary space partitioning (BSP) tree permit splits with any line In 2-D space split with lines (most of our examples) 3-D space split with planes K-D space split with k-1 dimensional hyperplanes useful for Painter s algorithm (hidden surface removal) 30

Painters Algorithm Hidden Surface Elimination 31

Painters Algorithm Need to sort objects back to front Order depends on the view point Partition objects using BSP tree View independent 32

Building a BSP Tree Let s look at simple example with 3 line segments Arrowheads are to show left and right sides of lines. Using line 1 or 2 as root is easy. (examples from http://www.geocities.com/siliconvalley/2151/bsp.html) Line 3 Line 1 Line 2 3 2 1 a BSP tree using 2 as root Viewpoint 33

Drawing Objects Traverse the tree from the root If view point is on the left of the line --- traverse right sub-tree first Draw the root Traverse left sub-tree Line 3 Line 1 Line 2 3 2 1 a BSP tree using 2 as root Viewpoint 34

Building the Tree 2 Using line 3 for the root requires a split D Line 1 3 A Line 2a C 2a 2b Line 3 B Line 2b 1 Viewpoint 35

Triangles Use plane containing triangle T 1 to split the space If view point is on one side of the plane draw polygons on the other side first T 2 does not intersect plane of T 1 36

Triangles Use plane containing triangle T 1 to split the space If view point is on one side of the plane draw polygons on the other side first T 2 does not intersect plane of T 1 37

Triangles Split Triangle 38

Building a Good Tree - the tricky part A naïve partitioning of n polygons will yield O(n 3 ) polygons because of splitting! Algorithms exist to find partitionings that produce O(n 2 ). For example, try all remaining polygons and add the one which causes the fewest splits Fewer splits -> larger polygons -> better polygon fill efficiency Also, we want a balanced tree. 39

Build the tree Painter s Algorithm with BSP trees Involves splitting some polygons Slow, but done only once for static scene Correct traversal lets you draw in back-to-front or frontto-back order for any viewpoint Order is view-dependent Pre-compute tree once Do the sort on the fly Will not work for changing scenes 40

Drawing a BSP Tree Each polygon has a set of coefficients: Ax + By + Cz + D Plug the coordinates of the viewpoint in and see: >0 : front side <0 : back facing =0 : on plane of polygon Back-to-front draw: inorder traversal, do farther child first Front-to-back draw: inorder traversal, do near child first front_to_back(tree, viewpt) { if (tree == null) return; if (positive_side_of(root(tree), viewpt)) { front_to_back(positive_branch(tree, viewpt); display_polygon(root(tree)); front_to_back(negative_branch(tree, viewpt); } else { draw negative branch first } } 41

Drawing Back to Front Use Painter s Algorithm for hidden surface removal Line 1 Line 2a Steps: Draw objects on far side of line 3»Draw objects on far side of line 2a Draw line 1»Draw line 2a Draw line 3 Draw objects on near side of line 3»Draw line 2b 3 Line 3 Line 2b 2a 2b Viewpoint 1 42

Do backface culling Further Speedups Draw front to back, and Keep track of partially filled spans Only render parts that fall into spans that are still open Quit when the image is filled 43

Clipping Using Spatial Data Structures Clip the BSP tree against the portions of space that you can see! Accelerate Clipping The goal is to accept or reject whole sets of polygons Can use spatial data structure Much faster than clipping every polygon The O(n) task becomes O(log n) terrain fly-throughs gaming Hierarchical bounding volumes Octrees 44

Further Speedups Clip the BSP tree against the portions of space that you can see! Called portals Initial view volume is entire viewing frustum When you look through a doorway, intersect current volume with beam defined by doorway 45

Demos BSP Tree construction http://symbolcraft.com/graphics/bsp/index.html KD Tree construction http://www.cs.umd.edu/~brabec/quadtree/index.html 46

Real-time and Interactive Ray Tracing The OpenRT Real-Time Ray-Tracing Project http://www.openrt.de/index.php Interactive ray tracing via space subdivision http://www.cs.utah.edu/~reinhard/egwr/ Interactive ray tracing with good hardware http://www.cs.utah.edu/vissim/projects/raytracing/ 47

Announcements Written Assignment2 is out, due March 8 Graded Programming Assignment2 next Tuesday 48