Ray Tracing Reflections and Refractions

Ray Tracing Reflections and Refractions

Ray Tracing Reflections and Refractions COSC342 Lecture 18 9 May 2017 Reflection and Refraction I Reflection I Extremes of shiny surfaces I Can see objects in reflection I Easy to do with ray tracing I Refraction I Transparent objects I Light bends at the surface I Details get very complicated COSC342 Ray Tracing Reflections and Refractions 2 Reflection I Light reflected in surface I Cast a new ray for reflection I Reflected direction is n r = 2n(v · n) − v v r I r is the reflected ray I v the view direction I n the surface normal I (We assume unit vectors) I Why this formula? COSC342 Ray Tracing Reflections and Refractions 3 Reflection Formula Split rays into two parts: n I ujj parallel to n I u? perpendicular to n I u = ujj + u? Θ Θ For the view ray v r I vjj = cos θn = (v · n)n I v? = v − vjj = v − (v · n)n For the reflected ray: I rjj = vjj = (v · n)n I r? = −v? = (v · n)n − v v I r = rjj + r? = 2(v · n)n − v v v COSC342 Ray Tracing Reflections and Refractions 4 Ray Tracing Reflection Ray tracing the reflection I Cast a new ray from hit point I r is the direction n I What colour do you see? For a perfect mirror v r I Use the reflected ray For semi-reflective surfaces I Reflective co-efficient kr kr (reflection)+(1−kr )(surface) COSC342 Ray Tracing Reflections and Refractions 5 Implementing Reflection Recursive implementation is fairly simple colour render(ray, scene, fraction, depth) hit = intersect(ray, scene) if (depth == 0 || hit.kr * fraction < TINY) thisColour = hit.colour else thisColour = (1 - hit.kr) * hit.colour + hit.kr * render(reflection, scene, hit.kr*fraction, depth-1) return fraction * thisColour First call has fraction = 1 and some maximum `ray depth' COSC342 Ray Tracing Reflections and Refractions 6 Implementing Reflection Can avoid the recursion colour render(ray, scene, maxDepth) depth = 0 fraction = 1 colour = background while (depth < maxDepth && fraction > TINY) hit = intersect(ray, scene) colour = (1-fraction)*colour + fraction*hit.colour fraction *= hit.kr ray = reflect(ray) depth++ COSC342 Ray Tracing Reflections and Refractions 7 Refraction Light `bends' between materials I Material has a refractive index I Ratio of refractive indices determines the bending Snell's law: η1 sin θ1 = η2 sin θ2 −1 η1 θ2 = sin sin θ1 η2 Some common materials: I Vacuum: η = 1 I Air: η ≈ 1 I Water: η ≈ 1:333 I Window glass: η ≈ 1:52 COSC342 Ray Tracing Reflections and Refractions 8 Ray Tracing Refraction Much the same as reflection I Materials have kt n kt (refraction)+(1−kt )(surface) Θi I The refracted ray is i η η t = 1 (i + (n · i)n) − 1 η2 s η2 η2 1 − 1 (1 − (i · n)2)n η2 2 t I Why this formula? Θt COSC342 Ray Tracing Reflections and Refractions 9 Finding the Refracted Ray Incoming ray: I tjj is parallel to n, so I ijj = −(n · i)n q I i = (i + (n · i)n) 2 ? tjj = − 1 − kt?k n Refracted ray: q 2 = − 1 − sin θt n I t? is parallel to i? s 2 I Lengths are sines of angles, so η1 2 = − 1 − 2 sin θi n η1 η1 η2 t? = i? = (i + (n · i)n) s η2 η2 2 η1 2 = − 1 − 2 (1 − cos θi )n I We want unit vectors so η2 s 2 2 2 2 η 1 = ktk = kt?k + ktjjk 1 2 = − 1 − 2 (1 − (i · n) )n η2 COSC342 Ray Tracing Reflections and Refractions 10 Problems with Refraction Refraction makes some parts of ray tracing harder: I How do you determine lighting though a refracting object I What direction do you cast shadow rays? I Recursive algorithm is not efficient in some languages COSC342 Ray Tracing Reflections and Refractions 11 Total Internal Refraction I Angle of refraction: θ = sin−1 η1 sin θ 2 η2 1 η1 I What if sin θ > 1? η2 1 I Total internal refraction I Light reflects off the surface COSC342 Ray Tracing Reflections and Refractions 12 Ray Tracing Summary Types of ray: I Primary Ray { from camera to scene I Shadow Rays { from hit to light I Reflection Rays { bouncing off surface I Refraction Rays { bending through surface COSC342 Ray Tracing Reflections and Refractions 13.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us