|
|
Minimal code
==================
#version 3.7;
global_settings {assumed_gamma 1.0}
#declare rT =1;
#declare rB =1.5;
#declare rERROR =rT; //Bad
//#declare rERROR =rT+.00001; //Good
//#declare rERROR =rT-.00001; //Good
light_source { <100,1000,-1000>, <1,1,1>}
#declare r1=cylinder { <0,0,0>,<2,0,0>,rT
texture { pigment { color rgb<1,1,1>} }
}
#declare r2=cylinder { <0.5,0,0>,<1,0,0>,rB
texture { pigment { color rgb<0,1,1>} }
}
#declare r3=cylinder { <0.4,0,0>,<1.1,0,0>,rERROR
texture { pigment { color rgb<1,1,0>} }
}
#declare o1=difference
{
object{r1}
object{r2}
}
#declare o2=difference
{
object{r2}
object{r3}
}
#declare o3=difference
{
object{r1}
object{o2}
}
o3
camera {
orthographic
location <0,0,4> angle 90 look_at <0,0,0> // all front
location <5,5,5> angle 80 look_at <0,0,0> // бок
}
=================
for (rERROR +.00001 ) or (rERROR -.00001 ) render is correct.
Post a reply to this message
|
|
|
|
Am 15.07.2014 17:07, schrieb deep125:
> for (rERROR +.00001 ) or (rERROR -.00001 ) render is correct.
Correct in what sense? What are you expecting the scene to look like -
and, also of importance, /why/ are you expecting it to look that way?
The fact that you declare o1 but never use it indicates that you're not
/exactly/ sure what you're doing - so I'm not ashamed to say that I'm
not really sure what you're doing either.
Fact is that when you set rERROR=rT, you have two objects with
coincident surfaces (r1 and r3), which is known to always be a potential
source of trouble, and you're using them in nested differences, which
makes the issue all the more complicated.
I'm quite certain this is not an all-uppercase ERROR, but just another
instance of a well-known /limitation/ known as the "coincident surface
problem".
Post a reply to this message
|
|