|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hi everyone,
the scene below demonstrates a phenomenon I encountered when rendering
multiple (semi-)transparent, partially overlapping discs (and no, it's
not the common max_trace_level thing). It seems that when the distance
between the discs is below a certain (and, at least to me, surprisingly
high) threshold, the remote disc's color doesn't shine through the near
disc. Funny enough, when replacing the remote disc with a cylinder (the
closer cap of which should conicide with the former disc), everything
turns out fine.
So does anyone know how this comes about and how to avoid it
Thanx --
Torsten
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Oops -- forgot something...
--------<8--------
#declare d1 = 0.001;
#declare d2 = 0.0001;
camera {
location -10*z
}
disc {0 z 5
texture {
pigment {
color rgb <1, 0, 0>
}
finish {
ambient 1
diffuse 0
}
}
}
disc {0 z 3
texture {
pigment {
color rgbt <1, 1, 1, 0.9>
}
finish {
ambient 1
diffuse 0
}
}
translate <-3, 0, -d1>
}
disc {0 z 3
texture {
pigment {
color rgbt <1, 1, 1, 0.9>
}
finish {
ambient 1
diffuse 0
}
}
translate <3, 0, -d2>
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> the scene below demonstrates a phenomenon I encountered when rendering
> multiple (semi-)transparent, partially overlapping discs (and no, it's
> not the common max_trace_level thing). It seems that when the distance
> between the discs is below a certain (and, at least to me, surprisingly
> high) threshold, the remote disc's color doesn't shine through the near
> disc. Funny enough, when replacing the remote disc with a cylinder (the
> closer cap of which should conicide with the former disc), everything
> turns out fine.
>
> So does anyone know how this comes about and how to avoid it
> Thanx --
Yes, there is a threshold: When the ray leaves one disc pov ignores any
intersections that occur before it has travelled at least <insert value
here>. This is neccessary in order to avoid numerical artefacts, which
could otherwise cause pov to think the ray has hit the same disc again.
If this does not happen with solid primitives (like the cylinders you
mention), maybe there is a check whether the ray, after travelling the
threshold, is *inside* the object, which would then count as an
intersection. Or, maybe, what you see is just the opposite cap.
I do not know, why the threshold is as large as it is; this has baffled
me too at times. Maybe it is because some of the primitives use forth
powers. I seem to recall that tori with a small second radius were a
problem at some point.
How to avoid: Scale the scene so that such proximities do not occur.
Be sure to adjust the density of media, then: If you scale by a factor
f, all densities should be divided by f.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hi Mark,
> Yes, there is a threshold: When the ray leaves one disc pov ignores any
[...]
> intersection. Or, maybe, what you see is just the opposite cap.
ah, thanks, that was really elucidating! :-)
> I do not know, why the threshold is as large as it is; this has baffled
> me too at times. Maybe it is because some of the primitives use forth
> powers. I seem to recall that tori with a small second radius were a
> problem at some point.
It seems that the threshold differs from shape to shape; when replacing
the discs with polygons (see below), I could decrease the distance by
several orders of magnitude before the effect occured.
> How to avoid: Scale the scene so that such proximities do not occur.
Well, yes... still I am surprised that it should not be possible to have
objects less than 10^-3 units apart, since (I assume) many people will
probably model scenes with something like 1 unit = 1 meter in mind, with
10^-3 corresponding to 1 mm, a level of detail quite likely to occur in
real scenes.
Anyway, thanks for the hint -- will now figure out how to live with that
limitation...
Torsten
--------8<--------
#declare d1 = 0.0000001;
#declare d2 = 0.00000001;
camera {
location -10*z
}
polygon {4 x, y, -x, -y scale 5
texture {
pigment {
color rgb <1, 0, 0>
}
finish {
ambient 1
diffuse 1
}
}
}
polygon {4 x, y, -x, -y scale 3
texture {
pigment {
color rgbft <1, 1, 1, 0, 0.9>
}
finish {
ambient 1
diffuse 1
}
}
translate <-3, 0, -d1>
}
polygon {4 x, y, -x, -y scale 3
texture {
pigment {
color rgbft <1, 1, 1, 0, 0.9>
}
finish {
ambient 1
diffuse 1
}
}
translate <3, 0, -d2>
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|