|
|
In the scene below I get a bicubic patch object where many triangles are
missing. Scaling the patch bigger makes the problem disappear while scaling
the patch smaller makes the problem worse. Increasing u_steps and v_steps
also makes the problem worse, so the problem apparently is dependent on the
sizes of the individual triangles in the bicubic patch object.
In that regard it looks like the well-known problem with precision errors
that happen with very small objects. But the difference here is that the
bicubic patch object is really not very small, nor are the individual
triangles in it. So it might be a bug though I'm not entirely sure.
I get the problem in both POV-Ray 3.1 and in POV-Ray 3.5 beta 8.
My computer is a P150 with 16 MB RAM, Windows 95.
Warp has reproduced the problem, as can be seen in povray.general.
// start of scene
#declare M = 0.4; // 0.4=broken, 0.6=ok
camera {
location <0.9,0.3,-1.5>*M
angle 32
look_at 0
translate <-0.54,-0.36,0>*M
}
light_source {<0,1,-2>*10*M, color 1.2}
background {color rgb 1}
bicubic_patch {
type 1 u_steps 4 v_steps 4
< 0.2204, -0.0904, -1.0329>
< 0.2125, -0.1580, -1.0308>
< 0.1594, -0.1118, -1.0336>
< 0.1447, -0.1788, -1.0142>
< 0.1659, -0.0932, -1.0648>
< 0.1600, -0.1595, -1.0614>
< 0.1177, -0.1174, -1.0527>
< 0.1068, -0.1819, -1.0314>
< 0.0600, -0.0967, -1.1058>
< 0.0581, -0.1598, -1.1010>
< 0.0366, -0.1248, -1.0771>
< 0.0400, -0.1858, -1.0537>
< 0.0000, -0.0967, -1.1058>
< 0.0000, -0.1607, -1.1009>
< 0.0000, -0.1255, -1.0768>
< 0.0000, -0.1858, -1.0537>
texture {pigment {color rgb 1}}
scale M
}
// end of scene
Rune
--
3D images and anims, include files, tutorials and more:
Rune's World: http://rsj.mobilixnet.dk (updated Nov 5)
POV-Ray Users: http://rsj.mobilixnet.dk/povrayusers/
POV-Ray Webring: http://webring.povray.co.uk
Post a reply to this message
|
|
|
|
You are definetely right!
I wrote a Grass-Generator once, which randomly turbulized a bicubic-patch to
give me hundreds of different, though nicely bent grassblades to play with.
But once they get under sizes of 1x1 units, it gets more and more difficult to
predict
if they're actually there, or start desintegrating.
I do expect it to be a precision-problem, as bicubic-patches require
cubic-functions,
and on scale lower than 1, you easily run into the boundaries of POVs
precision.
The workaround I used was to take a size the patches could cope with, and scale
the
entire scenery larger. Other than that, I have no idea, how to get a
bicubic-patch that is actually
smaller.
A suggestion for this would be a dynamic float. I've heard of this in JAVA, and
its simply a float
which grows in bit-size to cope with the amount of precision required. If there
were a possibility
to implement this into POV (for limited objects which actually do require these
precisions), I think,
many difficulties tracing this object or that scenery would vanish.
On the other hand, implementing this in a satisfying manner is probably the
real problem.
Tim
Post a reply to this message
|
|
|
|
Tim Nikias <Tim### [at] gmxde> wrote:
: I do expect it to be a precision-problem, as bicubic-patches require
: cubic-functions,
: and on scale lower than 1, you easily run into the boundaries of POVs
: precision.
AFAIK there's no difference between scales smaller than 1 and bigger than
1 when dealing with floats. It just changes the sign of the exponent. The
precision of the mantissa doesn't change anywhere.
You have to go to scales smaller than something like 10^-30 in order to
reach serious precision limits.
--
#macro N(D)#if(D>99)cylinder{M()#local D=div(D,104);M().5,2pigment{rgb M()}}
N(D)#end#end#macro M()<mod(D,13)-6mod(div(D,13)8)-3,10>#end blob{
N(11117333955)N(4254934330)N(3900569407)N(7382340)N(3358)N(970)}// - Warp -
Post a reply to this message
|
|