|
|
Wasn't it Alain who wrote:
>Mike Williams nous apporta ses lumieres en ce 2005-10-29 09:56:
>> Wasn't it Thomas de Groot who wrote:
>>
>>>Would more scaling down help? My model has currently a radius of 95,000 pov
>>>units, but also translated 95,000 units to keep the camera near the origin.
>>>It is possible to scale everything down more of course, without changing the
>>>aspect of the scene...
>>
>>
>> That was the first thing I tried when Bill posted the example scene.
>> It's easy to do, just reduce all those numbers by a factor of 1000 or
>> 100000. But the result stays exactly the same in this case.
>>
>> It look's like it's not the absolute size of the values that causes the
>> effect in this particular case, but the loss of precision.
>>
>You need 128 bit FPU! Now, they are 64 bits. In this case, double precision is
>just not enough, you
>need quadruple precision (or more!). It can be emulated, but it will take a LOT
>more time to do the
>maths, leading to proebitive render time.
>
However, the code that calculates the intersection of a ray with a box
is first order, rather than second order, so it can be performed
accurately with less precision.
It's possible to patch the hole in the cylinder with a box that's a
million miles square. I reckon that the difference between where the box
is and where the cylinder should be, is less than the precision errors
incurred in tracing the cylinder.
#include "colors.inc"
camera { location <0, 0.0001, 0>
up <0, 1, 0>
right <4/3, 0, 0>
//direction <0, 0, FoV_75>
look_at <-1000, 0, 0> }
#declare Ring = union {
light_source { <0, 0, 0> color White }
union {
cylinder { <0, 0, -500000>, <0, 0, 500000>, 90000000 open hollow }
box{<-500000,-90000001,-500000><500000,-90000000,500000>}
pigment { color SkyBlue }
finish { ambient 0.5 } } }
object { Ring translate <0, 90000000, 0> }
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|