POV-Ray : Newsgroups : povray.binaries.images : Method. Visible surface at a distance from light source. : Re: Method. Visible surface at a distance from light source. Server Time
6 May 2024 04:01:10 EDT (-0400)
  Re: Method. Visible surface at a distance from light source.  
From: William F Pokorny
Date: 15 Jan 2018 12:46:52
Message: <5a5ce90c$1@news.povray.org>
On 01/14/2018 02:01 PM, Bald Eagle wrote:
> William F Pokorny <ano### [at] anonymousorg> wrote:
> 
> That's a very cool idea!  :)
Thanks. And, I see I attached the image for distance 0.707 instead of 
the 0.8 I intended...

> Just to raise the bar a bit - is there any way that you can think of to simulate
> an interference pattern? 

If multiple lights are projected onto a surface you can get 
'interference effects' in POV-Ray. If you look at this code attachment:

http://news.povray.org/povray.binaries.images/attachment/%3C59c91c45%241%40news.povray.org%3E/utf-8

to the Calling the Doctor - nighttime - 16:9 thread:

http://news.povray.org/povray.binaries.images/thread/%3C59c067a6%40news.povray.org%3E/?mtop=417998

and just uncomment both lights you'll get an interference pattern from 
both 'sphere/pattern enclosed' lights as seen on a plane. It's a 
technique useful for creating image maps, height fields etc. Long 
doable, but oh so much easier with the new 3.8 user_defined{} feature of 
pigment{}.

With the technique I posted you can use more dual lights of differing 
color to, for example, answer questions like what surface regions are 
equidistant from two points in space.

Your following ideas - at least in some form - can work too I think 
depending on what you want to do.

> 
> But:  Couldn't you just enclose the entire scene into a union, and use an onion
> pattern?
> 
> Define a color map with a narrow band of white, and the rest is rgbt 1, and then
> scale it to highlight the desired distance.
> 
> I suppose you could also define a color map for the onion pattern going from 0
> to 1, and then scaling it to the maximum desired radius.  The color value at any
> point would then be the distance from wherever you translated the center of the
> onion pattern to.
> 

Such approaches are the easiest by changing the pigment over distance, 
having finishes of ambient 1 or emission 1 and taking care to 
view/access/write linearly stored 'distance' values.

Note. You can change effective color of a light source over distance 
using the positive/negative light method. For example update the two 
light sources in my example code to read:

#declare Light00 = light_source {
     <0.5,0.5,-0.5>, White
//  fade_distance VarDistPos
//  fade_power 1000
}
#declare Light01 = light_source {
     <0.5,0.5,-0.5>, Blue*-1
     fade_distance VarDistNeg
     fade_power 1
}

The result is yellow up to VarDistNeg, then fading to white the further 
you get from the dual light source position.  Also note that the 
intensity of the light 'seen' on the plane fades too as the angle of 
rays becomes less and less perpendicular to the plane surface.

> At the moment, I think the only way to indirectly find the total ray path length
> is the formula method suggested by Christoph, but that's only for direct
> lighting.  The ray path length for a light reflected from a mirror that hits an
> object and then travels to the camera (ok, it's the reverse of that for
> raytracing...) I think might presently be a challenging task.
> 

Agree.

Aside: I find myself wondering what happens with pos/neg light sources 
in media. Would both the positive and negative rays be sampled/scattered 
identically?

Bill P.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.