Top Banner
CSG and Raytracing CPSC 407
24

CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Mar 26, 2015

Download

Documents

Ella Figueroa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

CSG and Raytracing

CPSC 407

Page 2: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

What is CSG?

Computational Solid Geometry

Volume Representation

Very powerful modeling paradigm

Difficult to render CSG models

Page 3: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Volumes, Not Surfaces

CSG modeling tools allow a user to apply Boolean operations to volumes Union, Intersection, Difference Only works with volumes

Closed surfaces can be interpreted as volumes…

In 3D, a volume is bounded by a surface In 2D, the boundary is a curve

Page 4: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Volumes are Half-Spaces

We can think of volumes as half-spaces Each primitive divides space into a set of points

inside the volume, and a set of points outside The sets of points are infinitely dense

Now our Boolean operations are set operations on these sets of points

Page 5: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Simple 3D Half-Spaces

SphereCylinderConeTorusBox

Plane Plane is tricky - it splits space into two infinite half-spaces

Note that the cylinder and cone are capped. This is not necessary In fact, you can use an infinite cylinder and two planes to make a capped cylinder Infinite cylinders are easier to implement You can also get a box from 6 planes…

Page 6: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Boolean CSG Operations

Union Addition, A B

Intersection A B

Difference Subtraction, A – B, A not B Difference is not commutative

Page 7: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

A more complicated example

Difference of: Intersection of Sphere and Cube Union of 3 Cylinders

- =

Page 8: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Raytracing CSG Objects

Need a data structure to describe primitives and operations

Binary CSG Binary tree Leaf nodes are primitives Interior nodes are Boolean operations

Page 9: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Binary Tree Example

Page 10: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Ray Intervals

Define a ray as a set of points (r+td) r is eye point d is the direction of the ray t is the scalar distance along the ray

For now, assume that a primitive is convex A ray (r+td) intersects a convex primitive at most 2 times Let’s say the ray enters the primitive

at distance t1 and leaves at distance t2

Now we can define an interval [t1, t2] along the ray that is inside the primitive

Note: for planes, the interval is either [a,inf] or [inf,b]

Page 11: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

CSG Operations on Intervals

Assume we have intervals A = [a1,b1] and B = [a2,b2], and we want to combine them with a CSG operationThere are 5 cases to check for each operation:

No Overlap:

Partial Overlap:

Full Overlap:

Page 12: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

CSG Union on 2 Intervals

Remember, Union is A or B

In the no-overlap case, we return the two intervals

The rest of the cases produce one interval, [min(a1,a2), max(b1,b2)]

Page 13: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

CSG Intersection on 2 Intervals

Remember, Intersection is A and B

In the no-overlap case, we return no intervals

The rest of the cases produce one interval, [max(a1,a2), min(b1,b2)]

Page 14: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

CSG Difference on 2 Intervals

Remember, Difference is A and not B The order is important!

Here we have 5 cases:

Return { [a1,b1] }

Return { [0,0] }

Return { [a1,a2], [b2,b1] }

Return { [a1,a2] }

Return { [b2,b1] }

Page 15: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Lists of intervals

Complex volumes are not convex A ray may intersect the volume more than once Instead of a single interval, we get a set of them

We want to combine interval sets S1 and S2 with a Boolean CSG operation Brute force algorithm:

For each interval Ai in S1, apply the appropriate 2-interval operation with each interval Bj from S2

Return the list of new intervals

This algorithm is O(N2). O(NlogN) algorithms do exist I’m not certain the list of new intervals will be unique. You may have to

check if any overlap, and combine them.

Page 16: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Binary CSG Tree Traversal

Depth-first traversal of the tree At each primitive node, pass back

the list of intervals along the ray that intersect the primitive

At each Boolean node, combine the two child lists and pass back the new set of intervals

The intersection point is at (r+td), where t is the lower value of the first interval in the list returned from the root node of the tree

Page 17: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Materials and Normals for CSG

Need to determine normal at intersection point Need tertiary information with intervals

Either object pointers or normals themselves Note that normals are reversed for subtracted objects

Correct material properties at intersection point are debatable… Some people take material properties at intersection point Others prefer to define material properties for the entire CSG

object as a whole

Page 18: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Additional CSG Bits

It is possible to partially implement CSG without doing a full CSG tree This is how I did difference objects in my raytracer

Blob’s notes have a different CSG algorithm His algorithm looks like it might be more efficient, but

it requires a point inside/outside test Very difficult for arbitrary triangle meshes

Page 19: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

General Raytracing Bits

Page 20: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Common bugs

Wrong direction for eye rays Make sure they are going into the scene

Taking the wrong intersection point Ray intersects with a sphere twice, make sure you use the closer

intersection!

Incorrect direction for reflected rays Sending the reflected ray into the object

Total Internal Reflection in refraction Get a sqrt(< 0) in the formula for refracted ray direction In this case, ray reflects instead of refracting

Page 21: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Numerical Error

Self-Intersection due to Numerical Error Produces ‘surface dirt’ – black speckles on otherwise smooth objects

Throw away intersections close to intersection point Bad if you have very thin objects

Throw away any other intersections with current object Assumes objects are convex!!! (not so for CSG, torus)

Avoid by moving a small distance along the normal at the intersection point before casting secondary rays Bad for thin objects again, but probably the simplest method

Page 22: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Transforming Normals

I’m assuming you are implementing object transformations as described in Blob’s Notes

He explains how to transform the intersection point from object space to world space He doesn’t explain how to transform normals

Tutorial on my website: http://www.unknownroad.com/rtfm/graphics/rt_normals.html

Page 23: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

Shadow Cache

Assumption: the last object that was hit by a shadow feeler is likely to be the one hit the next time So test it first

For shadow feelers, it doesn’t matter if it’s the closest object (not so for reflection!)

Shadow feelers are usually a large part of the cost of rendering a scene, so this is a big speedup that is relatively simple to implement

Page 24: CSG and Raytracing CPSC 407. What is CSG? Computational Solid Geometry Volume Representation Very powerful modeling paradigm Difficult to render CSG models.

WWW Material

http://fuzzyphoton.tripod.com/index.htm

http://www.scs.leeds.ac.uk/cuddles/hyperbks/Raytracer/contents.htmhttp://www.scs.leeds.ac.uk/cuddles/hyperbks/Rendering/introduction.html

http://www.cs.wisc.edu/~schenney/courses/cs559-s2001/lectures/lecture-26-online.ppt