|
![](/i/fill.gif) |
I believe this is caused by the fact that specular highlights are an
approximation to the real life effect. They don't exist in reality, so there's
no "right" way to do it. Phong gives a better approximation, but I'm pretty sure
I've had a similar (but less severe) effect with phong.
BTW, the real world effect is caused by imperfect reflections.
--
Tek
http://www.evilsuperbrain.com
Warp <war### [at] tag povray org> wrote in message news:3ba61bf2@news.povray.org...
> When testing my glow macro I found another shadow line problem caused by
> the lighting model used in POV-Ray. This image illustrates the artifact:
>
>
--------------------------------------------------------------------------------
>
> I know why this happens, but I'm not sure how well it simulates reality.
> It is *NOT* a bug in povray; the lighting model just works this way.
>
> The normal vector of the surface points away from the light source at the
> shadowed area and thus the light source has no effect in that part.
> This works well for diffuse lighting. However, as can be seen from the
> image, it gives an odd result with specular lighting.
> I don't know how a real-life sphere would be illuminated in this case.
> Would there be a sharp shadow line or not?
>
> Note that making the light sources area light doesn't smooth the shadow
> line, and this is a true deficiency in povray. Povray performs area light
> calculations for shadow testing, but not for normal-is-away-from-light tests.
>
> Adding "no_shadow double_illuminate" to the sphere gives a result which
> at first glance looks good, but is not physically correct (and if we move
> the camera away we would see that the "dark side" of the sphere is illumiated
> by the light sources, which is obviously wrong):
>
>
--------------------------------------------------------------------------------
>
> This is the source code:
>
> ----------8<----------8<----------8<----------8<----------8<----------
> #macro Glow(GlowColor, Scale)
> sphere
> { 0, 1 hollow no_shadow
> pigment { rgbt 1 }
> interior
> { media
> { emission 1/Scale
> density
> { spherical density_map
> { [0 rgb 0][.5 rgb GlowColor*.5][1 rgb 1]
> }
> }
> samples 1,1 intervals 1 confidence .1 // quite fast settings
> method 3
> }
> }
> scale Scale
> }
> #end
>
> camera { location -z*10 look_at 0 angle 35 }
> sphere { -y*10,10 pigment { rgb 1 } finish { specular 1 } }
>
> light_source
> { <-1.5,1,0>, <1,.5,0>
> looks_like { Glow(<1,.5,0>, .5) }
> }
> light_source
> { <2,.5,0>, <0,.5,1>
> looks_like { Glow(<0,.5,1>, 1) }
> }
> ----------8<----------8<----------8<----------8<----------8<----------
>
> --
> #macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
> rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
> ],13),8)-3,10>#end blob{N(array[6]{11117333955,
> 7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
![](/i/fill.gif) |