|
|
Hi,
In the thread 'Maximum possible extents for POV-Ray scene coordinates?',
started 8 Jan 2003, the practical limits for coordinates were told to
be 1e-6 .. 1e+6. This doesn't apply to SIZES of objects: As a rule of
thumb,
a POV-unit should not cover more than one screen.
To show this, I've prepared a simple scene: a sphere with a diameter of
1 POV-unit, a 1x1x2 box, and a cylinder. The scenes below were rendered
with the official windows POV-Ray versions 3.1g and 3.5. Four images,
named MinSize_##_%%%%.jpg (##=POV-Ray version, %%%%=scale factor(s)),
are posted to povray.binaries.images with the same header. They show
visible geometric distortions at 1E-5, even if the 1-unit-diameter
sphere doesn't fill the whole screen. POV-Ray 3.5 has *GREAT* problems
with shadows even at a scale of 0.1 -- especially look at edges of the
box, intersections of box and cylinder, the area where the sphere touches
the box, and their shadows. Of course floating point calculations can't
be perfect, but why is 3.1g THREE ORDERS OF MAGNITUDE better than 3.5.?
I think this is a bug that should be corrected.
Sputnik
//=== Start of 'Small is NOT BEAUTIFUL' demo scene 1 =====
================
//+SP8 +EP8 +D +A0.1 +AM2 +R3 +FN +OMinSize_35_1_to_1E-11 +W1024 +H768
#macro Scene ( Row, Col, Size )
union {
box { -0.5, <1.5, 0.5, 0.5> }
cylinder { -y, y, 0.1 }
sphere { <0.7, 1, 0.2>, 0.5 }
texture {
pigment { color rgbt <1,1,1,0.4> }
finish { ambient .3 }
}
rotate <-40, 20, -5>
translate <Col*4-10.5, 6.9-Row*3.5, 220>
scale Size
}
#local SizeExp = floor(log(Size)/log(10)+1E-6);
#local SizeMant = Size/pow(10,SizeExp);
text {
ttf "timrom.ttf"
concat ( "Size=", str(SizeMant,3,1), "E", str(SizeExp,0,0) )
0.01, 0
texture { pigment { color rgb 1 } finish { ambient 1 } }
scale 0.55
translate <Col*4-11.5, 5.5-Row*3.5, 220>
}
#end//macro Scene
text {
ttf "timrom.ttf"
concat ( "POV-Ray", str(version,4,1) )
0.01, 0
texture { pigment { color rgb 1 } finish { ambient 1 } }
scale <0.6, 0.6, 1>
translate <-1.5, 5.2, 220>
}
Scene ( 1, 1, 1 )
Scene ( 1, 2, 0.1 )
Scene ( 1, 3, 0.01 )
Scene ( 1, 4, 0.001)
Scene ( 2, 1, 1E-4 )
Scene ( 2, 2, 1E-5 )
Scene ( 2, 3, 1E-6 )
Scene ( 2, 4, 1E-7 )
Scene ( 3, 1, 1E-8 )
Scene ( 3, 2, 1E-9 )
Scene ( 3, 3, 1E-10)
Scene ( 3, 4, 1E-11)
light_source { <-3,6,-1>*10000 rgb 1 }
camera { location 0 look_at z angle 4 }
global_settings { max_trace_level 10 }
//=== End of 'Small is NOT BEAUTIFUL' demo scene 1 ======
=================
//=== Start of 'Small is NOT BEAUTIFUL' demo scene 2 =====
================
//+SP8 +EP8 +D +A0.1 +AM2 +R3 +FN +OMinSize_35_1E-1 +W1024 +H768
union {
box { -0.5, <1.5, 0.5, 0.5> }
cylinder { -y, y, 0.1 }
sphere { <0.7, 1, 0.2>, 0.5 }
texture {
pigment { color rgbt <1,1,1,0.4> }
finish { ambient .3 diffuse .7 }
}
rotate <-40, 20, -5>
translate <-0.5, -0.3, 5>
scale 0.1 // only small artefacts: 0.1 (POV 3.5); 0.0001 (POV 3.1)
}
light_source { <-3,6,-1>*10000 rgb 1 }
camera { location 0 look_at z angle 40 }
global_settings { max_trace_level 10 }
//=== End of 'Small is NOT BEAUTIFUL' demo scene 2 ======
=================
--
-------------------------------------
e-mail: fr### [at] computermuseumfh-kielde
-------------------------------------
Post a reply to this message
|
|
|
|
I ran into a similar problem with some blobs I made. I was trying to make a
generic flower (daisy), which meant squishing sphere components to make the
petals. I ended up having to make the flower about 100 units across in
order to eliminate MOST (unfortunately not all) of the visual artifacts. I
also ended up making the petals thicker, because thinner petals had huge
artifacts even at very large scales. At a scale of even 5 units across,
large portions of the tips of the petals got cut off, etc.
For example, instead of scaling a sphere component by <32, 1.5, 10> to make
a thin petal, I had to scale by <32, 4, 12> to get a useable petal.
Frank wrote:
>Hi Thorsten,
>
>the pictures I've postet were rendered on a P2, 233 MHz, 32 MByte,
>running Windows 95. The POV_Ray-Versions were (according to the
>help menu):
> - official 3.1g.watcom.win32
> - official 3.5 icl.win32
>
>If new features of 3.5 should require such a high 'epsilon',
>I suggest to multiply internally all coordinate values by at least
>100. Currently screen-filling objects of unit size are unusable
>due to visible artefacts (esp. when they are transparent).
>
> Sputnik
>
>--
>-------------------------------------
>e-mail: fr### [at] computermuseumfh-kielde
>-------------------------------------
>
Post a reply to this message
|
|