POV-Ray : Newsgroups : povray.binaries.images : Early Earth: The Late Heavy Bombardment : Re: Early Earth: The Late Heavy Bombardment [experimental image #3] Server Time
4 May 2024 19:38:54 EDT (-0400)
  Re: Early Earth: The Late Heavy Bombardment [experimental image #3]  
From: Alain
Date: 15 Jul 2012 18:58:12
Message: <50034b04$1@news.povray.org>

> Am 15.07.2012 09:15, schrieb Thomas de Groot:
>> On 15-7-2012 2:03, Alain wrote:

>>>> Am 14.07.2012 14:12, schrieb Thomas de Groot:
>>>>> Next problem is to get rid of this sphere edge seen in cross
>>>>> section...
>>>>
>>>> ... and here your real problems begin. You'll need to somehow mimic an
>>>> ior gradient.
>>>
>>> Ugly cludge that can simulate an ior gradient:
>>> Use many shells of decreasing thickness each varying in ior by a small
>>> amount in the order of 0.002 or less.
>>> The outer shell have an ior in the order of 1.001 or maybe even less,
>>> then each other have a slightly larger ior.
>>> Each thinner shells must reside inside any previous ones. No merge as
>>> you need all those internal surfaces.
>>>
>>>
>>> Big increase in rendering time and needs a large max_trace_level.
>>
>> Hmm, yes, that might work. I leave that experiment for later though, as
>> I want to get on with my raytracing life ;-)
>>
>> Would this be something for POV-Ray 4.0?
>
> I'm not sure whether a dedicated feature would be able to significantly
> reduce that render time.

It would require sampling along the ray path, determine the direction of 
the ior gradient as well as it's value and deflect the ray accordingly. 
In fact, you'll need to construct a spline that will describe the path 
of each tracing ray through the object.
I don't think that it's unfeasible, but will be very computationaly 
intencive and thus slow as hell. If the ior can be assumed to only 
change relatively slowly, some interpolation and extrapolation may be 
possible between rays that may help speeding thing. You'll need to use a 
max_gradient just like in an isosurface.

With my cludge, you have the local normal and the ior is quantified into 
discreete steps. It can be applyed to an isosurface by changing the 
thressold. If applyed to a CSG object, the smaller versions need to have 
individual components scalled separately from the whole object. Some 
complexe primitives, like a julia_fractal or a some mesh, don't realy 
support the needed scalling without self intersecting. A torus need to 
have it's minor axis altered, but not it's major axis.
Heavy, potentialy memory hungry, SLOW, error prone, but should work.

With a sampling along the ray, you don't have any normal available to 
help you and the ior may change in rather strange ways...




Alain


Post a reply to this message

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