POV-Ray : Newsgroups : povray.bugreports : Blobs: Error 1: Negative Values: Holes! / Error 2: Alpha Value Overwriting? Server Time
2 Jun 2024 03:36:16 EDT (-0400)
  Blobs: Error 1: Negative Values: Holes! / Error 2: Alpha Value Overwriting? (Message 9 to 18 of 48)  
<<< Previous 8 Messages Goto Latest 10 Messages Next 10 Messages >>>
From: Sven Littkowski
Subject: Re: Blobs: Error 1: Negative Values: Holes! / Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 03:03:58
Message: <567a556e$1@news.povray.org>
I tried to fill the blob with many additional cylinders, but that didn't
help, either. The blob had an original design of many cylinders arranged
on four sides, like a square, and no cylinder was inside. Now it is.
Still, those black edges remain.

------------------------------

#declare MyMidshipBlob = blob
{
 #declare MyWidth     = 1.75;
 #declare MyThickness = 0.01;
 #declare MyZ         = 0.20;
 threshold 0.5
 cylinder { < -0.2, 0.0, 0.0 > < 0.2, 0.0, 0.0 > 2.0, 1 scale < 0.12,
1.00, 1.0 > translate < 0.0, 0.0, -0.50 > }
 cylinder { < -0.2, 0.0, 0.5 > < 0.2, 0.0, 0.5 > 0.75, 1 scale < 0.5,
1.00, 1.0 > translate < 0.0, 0.0, -0.50 > }

 cylinder { < -0.2, 0.0, 0.0 > < 0.2, 0.0, 0.0 > 2.0, 1 scale < 0.10,
0.50, 0.5 > translate < 0.0, 0.0, -0.25 > }

 cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.00 > < MyWidth,
MyThickness+0.150,   MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.00 > < MyWidth,
MyThickness/2+0.120, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.00 > < MyWidth,
MyThickness/2+0.090, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.00 > < MyWidth,
MyThickness/2+0.060, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.00 > < MyWidth,
MyThickness/2+0.030, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.00 > < MyWidth,
0.00,                MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.00 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.00 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.00 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.00 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.00 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.00 > < MyWidth,
-MyThickness-0.150,   MyZ+0.00 > 0.25, 1 }

 cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.075 > < MyWidth,
MyThickness+0.150,   MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.075 > < MyWidth,
MyThickness/2+0.120, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.075 > < MyWidth,
MyThickness/2+0.090, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.075 > < MyWidth,
MyThickness/2+0.060, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.075 > < MyWidth,
MyThickness/2+0.030, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.075 > < MyWidth,
0.00,                MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.075 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.075 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.075 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.075 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.075 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.075 > < MyWidth,
-MyThickness-0.150,   MyZ+0.075 > 0.25, 1 }

 cylinder { < -MyWidth,  MyThickness  , MyZ+0.15 > < MyWidth,
MyThickness  , MyZ+0.15 > 0.5, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.15 > < MyWidth,
MyThickness/2+0.120, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.15 > < MyWidth,
MyThickness/2+0.090, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.15 > < MyWidth,
MyThickness/2+0.060, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.15 > < MyWidth,
MyThickness/2+0.030, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.15 > < MyWidth,
0.00,                MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.15 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.15 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.15 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.15 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.15 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness  , MyZ+0.15 > < MyWidth,
-MyThickness  , MyZ+0.15 > 0.5, 1 }

 cylinder { < -MyWidth,  MyThickness  , MyZ+0.30 > < MyWidth,
MyThickness  , MyZ+0.30 > 0.5, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.30 > < MyWidth,
MyThickness/2+0.120, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.30 > < MyWidth,
MyThickness/2+0.090, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.30 > < MyWidth,
MyThickness/2+0.060, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.30 > < MyWidth,
MyThickness/2+0.030, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.30 > < MyWidth,
0.00,                MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.30 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.30 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.30 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.30 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.30 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness  , MyZ+0.30 > < MyWidth,
-MyThickness  , MyZ+0.30 > 0.5, 1 }

 cylinder { < -MyWidth,  MyThickness  , MyZ+0.45 > < MyWidth,
MyThickness  , MyZ+0.45 > 0.5, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.45 > < MyWidth,
MyThickness/2+0.120, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.45 > < MyWidth,
MyThickness/2+0.090, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.45 > < MyWidth,
MyThickness/2+0.060, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.45 > < MyWidth,
MyThickness/2+0.030, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.45 > < MyWidth,
0.00,                MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.45 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.45 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.45 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.45 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.45 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness  , MyZ+0.45 > < MyWidth,
-MyThickness  , MyZ+0.45 > 0.5, 1 }

 cylinder { < -MyWidth,  MyThickness  , MyZ+0.60 > < MyWidth,
MyThickness  , MyZ+0.60 > 0.5, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.60 > < MyWidth,
MyThickness/2+0.120, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.60 > < MyWidth,
MyThickness/2+0.090, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.60 > < MyWidth,
MyThickness/2+0.060, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.60 > < MyWidth,
MyThickness/2+0.030, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.60 > < MyWidth,
0.00,                MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.60 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.60 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.60 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.60 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.60 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness  , MyZ+0.60 > < MyWidth,
-MyThickness  , MyZ+0.60 > 0.5, 1 }

 cylinder { < -MyWidth,  MyThickness  , MyZ+0.75 > < MyWidth,
MyThickness  , MyZ+0.75 > 0.5, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.75 > < MyWidth,
MyThickness/2+0.120, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.75 > < MyWidth,
MyThickness/2+0.090, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.75 > < MyWidth,
MyThickness/2+0.060, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.75 > < MyWidth,
MyThickness/2+0.030, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.75 > < MyWidth,
0.00,                MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.75 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.75 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.75 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.75 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.75 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness  , MyZ+0.75 > < MyWidth,
-MyThickness  , MyZ+0.75 > 0.5, 1 }

 cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.825 > < MyWidth,
MyThickness+0.150,   MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.825 > < MyWidth,
MyThickness/2+0.120, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.825 > < MyWidth,
MyThickness/2+0.090, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.825 > < MyWidth,
MyThickness/2+0.060, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.825 > < MyWidth,
MyThickness/2+0.030, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.825 > < MyWidth,
0.00,                MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.825 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.825 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.825 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.825 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.825 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.825 > < MyWidth,
-MyThickness-0.150,   MyZ+0.825 > 0.25, 1 }

 cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.90 > < MyWidth,
MyThickness+0.150,   MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.90 > < MyWidth,
MyThickness/2+0.120, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.90 > < MyWidth,
MyThickness/2+0.090, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.90 > < MyWidth,
MyThickness/2+0.060, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.90 > < MyWidth,
MyThickness/2+0.030, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth,  0.00,                MyZ+0.90 > < MyWidth,
0.00,                MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.90 > < MyWidth,
-MyThickness/2-0.030, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.90 > < MyWidth,
-MyThickness/2-0.060, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.90 > < MyWidth,
-MyThickness/2-0.090, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.90 > < MyWidth,
-MyThickness/2-0.120, MyZ+0.90 > 0.25, 1 }
 cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.90 > < MyWidth,
-MyThickness-0.150,   MyZ+0.90 > 0.25, 1 }

 sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.00, 1.00, 0.5 > translate <
 MyWidth-0.2, 0.0, MyZ-0.25 > }
 sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.00, 1.00, 0.5 > translate <
-MyWidth+0.2, 0.0, MyZ-0.25 > }
 sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.25, 1.75, 2.5 > translate <
 MyWidth-0.3, 0.0, MyZ+0.9 > }
 sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.25, 1.75, 2.5 > translate <
-MyWidth+0.3, 0.0, MyZ+0.9 > }

 sphere { < 0.0, 0.0, 1.5 > 0.5, -4 } // Heckeinschnitt
 sphere { <  0.35,  0.25, MyZ+0.08 > 0.275, -1.5 }
 sphere { <  0.35, -0.25, MyZ+0.08 > 0.275, -1.5 }
 sphere { < -0.35,  0.25, MyZ+0.08 > 0.275, -1.5 }
 sphere { < -0.35, -0.25, MyZ+0.08 > 0.275, -1.5 }
 sphere { <  0.85,  0.25, MyZ+0.06 > 0.225, -1.75 }
 sphere { <  0.85, -0.25, MyZ+0.06 > 0.225, -1.75 }
 sphere { < -0.85,  0.25, MyZ+0.06 > 0.225, -1.75 }
 sphere { < -0.85, -0.25, MyZ+0.06 > 0.225, -1.75 }
 sphere { <  1.10,  0.23, MyZ-0.04 > 0.175, -1.50 }
 sphere { <  1.10, -0.23, MyZ-0.04 > 0.175, -1.50 }
 sphere { < -1.10,  0.23, MyZ-0.04 > 0.175, -1.50 }
 sphere { < -1.10, -0.23, MyZ-0.04 > 0.175, -1.50 }

 sturm 1.0
 texture { AntennaRed }
 scale 450.0
 translate < 0.0, 0.0, 250.0 >
}


Post a reply to this message

From: clipka
Subject: Re: Blobs: Error 1: Negative Values: Holes! / Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 08:46:49
Message: <567aa5c9$1@news.povray.org>
Am 23.12.2015 um 08:00 schrieb Sven Littkowski:

> PS: not the shape of the round cupolas become boxish, but their textures
> on the edges. Even in this relatively plain test file code, if you look
> into their shadow areas, you will see this again.

Ah - now I guess I get your point. I've cropped a portion of the image
and increased the contrast to highlight what I /think/ you mean.

Those look like typical radiosity artifacts. What happens is this:

- What POV-Ray's radiosity algorithm tries to answer is the question how
much light any given point on given surface receives from other objects
(as opposed to dedicated light sources).

- Doing this for every point over and over again would require lots of
calculations; therefore, POV-Ray's radiosity algorithm takes advantage
of the fact that this indirect illumination typically changes only
gradually. Before the actual render, the algorithm therefore computes
the indirect illumination for "a few" chosen sample points on the
surface; that's the so-called "radiosity pretrace". In the actual
render, for each surface point the algorithm then just interpolates the
indirect illumination from any samples taken nearby.

- During the main render however, the algorithm will occasionally hit a
surface point for which it nas no nearby samples that would satisfy the
quality criteria defined in the scene's radiosity block. In that case,
the algorithm will take an additional sample during the main render.

- For pixels rendered earlier, this additional sample wasn't yet
available, so their radiosity interpolations were done without it.
Pixels rendered later, however, /will/ use the new sample in their
interpolation -- and may get a different result than if they didn't.

- If the new sample made a big difference, then where the regions of
"earlier" and "later" pixels meet there will be a noticeable border
between those two regions.

- Due to POV-Ray 3.7.0 using multiple threads, and each thread working
on different square regions of the image, such borders will be block-ish
in appearance, with the vertical borders always coinciding with the
32x32 pixel render job grid. In POV-Ray 3.6, which progressed line by
line through the image, the borders would instead always be horizontal.


There are three ways to get around the problem:

(A) Make POV-Ray compute more samples during the pretrace. Reduce
"pretrace_end" for this purpose.

(B) Make POV-Ray be more relaxed about the quality of samples during the
main render. Use "low_error_factor" for this purpose; a good traditional
value is 0.5. According to the docs this should be the default, but I'm
not sure right now whether it really is.

Both of the above reduce the ratio of samples gathered during the main
render vs. the samples gathered in total. In my experience, a ratio of
50% has always been enough to prevent artifacts. See the message pane
for post-render diagnostics of how well you did.

(C) Make sure any samples computed are as accurate as possible, in order
to reduce the chance that additional samples computed during the main
render will make too much of a difference. Increase "count" for this
purpose. Note however that there are situations where an increased count
doesn't help.


Post a reply to this message


Attachments:
Download 'untitled-3.png' (43 KB)

Preview of image 'untitled-3.png'
untitled-3.png


 

From: clipka
Subject: Re: Blobs: Error 1: Negative Values: Holes! / Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 08:58:12
Message: <567aa874$1@news.povray.org>
Am 23.12.2015 um 08:00 schrieb Sven Littkowski:
> Before I am making changes and additions to the scene files, I use
> always a test file where I am developing each feature. I am giving you
> now the code of that test file, it reproduces these non-textured or
> black edges though I am using a plain red pigment instead of the real
> textures (with large texture image files).

Sorry, this isn't working -- some long line comments have been wrapped
in your post, and my attempt at reconstructing the file leaves me with a
surplus closing brace. This is just frustrating.

Please post the scene as an attachment, rather than as part of the
message text.

> 
> If you afterwards want, I will also give you my texture file and the
> texture images (though they are very large). But try first with this
> test file as it reproduces the error.
> 
> Meanwhile, I will try the STURM feature...
> 
> PS: not the shape of the round cupolas become boxish, but their textures
> on the edges. Even in this relatively plain test file code, if you look
> into their shadow areas, you will see this again. I used a resolution of
> 8,000x4,500, AA 0.3. I was wrong with typing ALPHA, I meant to type
> AMBIENT and EMISSION.
> 
> This test code still shows the following errors (I just tested):
> - non-textured or hollow ring-shape border errors (negative values)
> - boxish texture problems in cupola shadow areas on cupolas
> - no dark shadow on lower blob areas (the gray hull has them)
> 
> For showing of the hull windows problem, I will develop a second file.
> 
> -------------------------------------
> 
> #version 3.7;
> 
> #declare MyRadiosity = on;
> 
> global_settings
> {
>  #if(MyRadiosity)
>   radiosity
>   {
>    media on
>    pretrace_start 0.08
>    pretrace_end   0.015
>    count 400
>    error_bound 0.75
>    recursion_limit 1
>   }
>  #end
>  subsurface        {}
>  adc_bailout       0.0039
>  ambient_light     rgb < 1.000, 1.000, 1.000 >
>  assumed_gamma     1.000
>  irid_wavelength   rgb < 0.250, 0.180, 0.140 >
>  max_trace_level   5
>  number_of_waves   10
>  noise_generator   3
>  charset           ascii
> }
> 
> #declare LightDiameter =     10000.0;
> #declare LightDistanceX =  -500000.0; // X = Left - Right
> #declare LightDistanceY =  1000000.0; // Y = Up - Down
> #declare LightDistanceZ =  -100000.0; // Z = Front - Back
> #declare LightRotate =          36.0;
> #declare MyLight =             0.125;
> 
> camera
> {
>  location < -200.0, 200.0, -200.0 >
>  location < 0.0, 0.0, 50.0 >
>  location < -5.0, 5.0, -5.0 >
>  location < -850.0, 850.0, -850.0 >
>  look_at < 0.0, 0.0, -50.0 >
>  look_at < 0.0, 0.0, 0.0 >
>  right 1.77*x
> }
> 
> #declare MyLight = light_source { < LightDiameter, 0.0, 0.0 >  rgb <
> 0.98039, 0.94902, 0.89804 > * MyLight }
> 
> #declare MySun = union
> {
> #declare Count=0;
> #while (Count < 360)
>  object { MyLight  rotate < 0.0, Count, 0.0 > }
>  #declare Count=Count+LightRotate;
> #end
> }
> 
> object { MySun translate < LightDistanceX, LightDistanceY,
> LightDistanceZ > }
> 
> // --- TEXTURES
>
------------------------------------------------------------------------------------------------------
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>  #declare HullFinish = finish
> 
> {
>  brilliance   0.25
>  phong albedo 0.05
>  metallic     1.00
>  ambient      0.00
>  emission     0.00
> }
> 
> #declare AntennaRed = texture
> {
>  pigment   //  Brick Red
>  {
>   rgb < 0.74902, 0.34118, 0.22353 > /4
>  }
>  finish { HullFinish }
>  translate -0.5*(x+y)
>  rotate < 0.0, 90.0, 0.0 >
>  rotate < 90.0, 0.0, 0.0 >
>  scale 2500.0
>  translate < 0.0, 0.0, 100.0 >
> }
> 
> #declare HullGentleRed = texture
> {
>  pigment   //  Rose Red
>  {
>   rgb < 0.57, 0.31, 0.30 >
>  }
>  finish { HullFinish }
>  translate -0.5*(x+y)
>  rotate < 0.0, 90.0, 0.0 >
>  rotate < 90.0, 0.0, 0.0 >
>  scale 2500.0
>  translate < 0.0, 0.0, 100.0 >
> }
> 
> #declare HullGray25 = texture
> {
>  pigment   //  Gray 50%
>  {
>   rgb < 0.25, 0.25, 0.25 >
>  }
>  finish { HullFinish }
>  translate -0.5*(x+y)
>  rotate < 0.0, 90.0, 0.0 >
>  rotate < 90.0, 0.0, 0.0 >
>  scale 2500.0
>  translate < 0.0, 0.0, 100.0 >
> }
> 
> #declare HullGray50 = texture
> {
>  pigment   //  Gray 50%
>  {
>   rgb < 0.50, 0.50, 0.50 >
>  }
>  finish { HullFinish }
>  translate -0.5*(x+y)
>  rotate < 0.0, 90.0, 0.0 >
>  rotate < 90.0, 0.0, 0.0 >
>  scale 2500.0
>  translate < 0.0, 0.0, 100.0 >
> }
> 
> #declare HullGray75 = texture
> {
>  pigment   //  Gray 50%
>  {
>   rgb < 0.75, 0.75, 0.75 >
>  }
>  finish { HullFinish }
>  translate -0.5*(x+y)
>  rotate < 0.0, 90.0, 0.0 >
>  rotate < 90.0, 0.0, 0.0 >
>  scale 2500.0
>  translate < 0.0, 0.0, 100.0 >
> }
> 
> #declare HullGray95 = texture
> {
>  pigment   //  Gray 50%
>  {
>   rgb < 0.95, 0.95, 0.95 >
>  }
>  finish { HullFinish }
>  translate -0.5*(x+y)
>  rotate < 0.0, 90.0, 0.0 >
>  rotate < 90.0, 0.0, 0.0 >
>  scale 2500.0
>  translate < 0.0, 0.0, 100.0 >
> }
> 
> #declare LightsRed1 = texture // Unten
> {
>  pigment { rgb < 0.74902, 0.34118, 0.22353 > /4 }
>  finish
>  {
>   ambient        4.0
>   brilliance     0.25
>   phong albedo   1.15
>   phong_size     1.0
>   metallic       1.00
>   diffuse albedo 0.5
>   emission rgb < 0.74902, 0.34118, 0.22353 > *3.0
>  }
> }
> 
> #declare LightsRed2 = texture // Oben
> {
>  pigment { rgb < 0.74902, 0.34118, 0.22353 >  }
>  finish
>  {
> //  ambient        4.0
>   brilliance     0.25
>   phong albedo   1.15
>   phong_size     1.0
>   metallic       1.00
>   diffuse albedo 0.5
>   emission rgb < 0.74902, 0.2600, 0.22353 > *4.0
>  }
> }
> 
> #declare LightsRed = texture
> {
>  pigment { rgb < 0.74902, 0.34118, 0.22353 > /4 }
>  finish
>  {
>   brilliance     0.25
>   phong albedo   1.15
>   phong_size     1.0
>   metallic       1.00
>   diffuse albedo 0.5
>   emission rgb < 0.74902, 0.2600, 0.22353 > *4.0
>  }
> }
> 
> #declare MyAntennaLights = texture { LightsRed }
> 
> // --- ITEMS
>
------------------------------------------------------------------------------------------------------
> 
> #declare TextureHullWindowsSide        = texture { AntennaRed }
> #declare TextureHullRing               = texture { AntennaRed }
> #declare TextureInteriorSide           = texture { AntennaRed }
> #declare TextureDeepSide               = texture { AntennaRed }
> #declare TextureHullCupolaPaintingSide = texture { AntennaRed }
> #declare TextureDeepWindowsSide        = texture { AntennaRed }
> #declare TextureHullSide               = texture { AntennaRed }
> #declare TextureHullSphere             = texture { AntennaRed }
> #declare TextureHullTop                = texture { AntennaRed }
> #declare TextureInteriorWindowsSide    = texture { AntennaRed }
> #declare TextureHullFront              = texture { AntennaRed }
> #declare TextureInteriorSphere         = texture { AntennaRed }
> 
> #macro
>
HullCommandFrontCutout(MyAmount,MySize,MyWidth,MyBegin,MyHeightRange,MySeed,MyTexture)
> union
> {
>  #declare MyY=seed(1*MySeed);
>  #declare MyZ=seed(2*MySeed);
>  #declare MyHeight=seed(3*MySeed);
>  #declare MyCount=1;
>  #while (MyCount<=MyAmount)
>   #declare MyBoxY=rand(MyY);
>   #declare MyBoxZ=rand(MyZ);
>   #declare MyBoxHeight=rand(MyHeight);
>   box
>   {
>    < -MyWidth, (-MySize*MyBoxY), -1000.0 > < MyWidth, (MySize*MyBoxY),
> ((-MyBegin)-(50.0*MyBoxZ)) >
>    translate < 0.0, -(MyHeightRange*MyBoxHeight), 0.0 >
>   }
>   box
>   {
>    < -MyWidth, (-MySize*MyBoxY), -1000.0 > < MyWidth, (MySize*MyBoxY),
> ((-MyBegin)-(50.0*MyBoxZ)) >
>    translate < 0.0, (MyHeightRange*MyBoxHeight), 0.0 >
>   }
>   #declare MyCount=MyCount+1;
>  #end
>  texture { MyTexture }
> }
> #end
> 
> #declare HullCommandWhole = union
> {
>  cylinder // schmaler Außenring
>  {
>   < -12.5, 0.0, 0.0 > < 12.5, 0.20, 0.0 > 500.0
>   texture { TextureHullRing }
>  }
>  cylinder // dicker Innenzylinder
>  {
>   < -62.5, 0.0, 0.0 > < 62.5, 0.0, 0.0 > 450.0
>   texture { TextureHullWindowsSide }
>  }
>  difference
>  {
>   sphere // Verdickung
>   {
>    < 0.0, 0.0, 0.0 > 475.0
>    scale < 0.215, 1.0, 1.0 >
>    texture { TextureHullWindowsSide }
>   }
>   difference
>   {
>    sphere // Verdickung-Aushöhlung
>    {
>     < 0.0, 0.0, 0.0 > 475.0
>     scale < 0.215, 1.0, 1.0 >
>     scale 0.975
>    }
>    cylinder // nicht aushöhlen um WH-Generator herum
>    {
>     < -100.0, 0.0, -250.0 > < 100.0, 0.0, -250.0 > 115.0
>    }
>    texture { TextureInteriorSide }
>   }
>   HullCommandFrontCutout(55,25.0,99.999,265.0,300.0,15,TextureDeepSide)
> // Einschnitte vorne
>   cylinder
>   {
>    < -100.0, 0.0, -250.0 > < 100.0, 0.0, -250.0 > 90.0
>    texture { TextureDeepSide }
>   }
>   cylinder
>   {
>    < -62.5, 0.0, 0.0 > < 62.5, 0.0, 0.0 > 475.0
>    texture { TextureInteriorSide }
>   }
>  }
>  torus // von Vorne: links
>  {
>   450.0, 50.0
>   rotate < 0.0, 0.0, 90.0 >
>   texture { TextureHullRing }
>   translate < -12.5, 0.0, 0.0 >
>  }
>  torus // von Vorne: rechts
>  {
>   450.0, 50.0
>   rotate < 0.0, 0.0, 90.0 >
>   texture { TextureHullRing }
>   translate < 12.5, 0.0, 0.0 >
>  }
>  sphere // ganz vorne
>  {
>   < 0.0, 0.0, 0.0 > 60.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < -60.0, 250.0, -230.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // ganz vorne
>  {
>   < 0.0, 0.0, 0.0 > 60.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < 60.0, 250.0, -230.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // ganz vorne
>  {
>   < 0.0, 0.0, 0.0 > 60.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < -60.0, -250.0, -230.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // ganz vorne
>  {
>   < 0.0, 0.0, 0.0 > 60.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < 60.0, -250.0, -230.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #2
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 0.25, 1.0, 1.0 >
>   translate < -60.0, 310.0, -160.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #2
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 0.25, 1.0, 1.0 >
>   translate < 60.0, 310.0, -160.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #2
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 0.25, 1.0, 1.0 >
>   translate < -60.0, -310.0, -160.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #2
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 0.25, 1.0, 1.0 >
>   translate < 60.0, -310.0, -160.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #3 Rounder
>  {
>   < 0.0, 0.0, 0.0 > 50.0
>   scale < 0.6, 1.0, 1.0 >
>   translate < -50.0, 380.0, -70.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #3 Rounder
>  {
>   < 0.0, 0.0, 0.0 > 50.0
>   scale < 0.6, 1.0, 1.0 >
>   translate < 50.0, 380.0, -70.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #3 Rounder
>  {
>   < 0.0, 0.0, 0.0 > 50.0
>   scale < 0.6, 1.0, 1.0 >
>   translate < -50.0, -380.0, -70.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #3 Rounder
>  {
>   < 0.0, 0.0, 0.0 > 50.0
>   scale < 0.6, 1.0, 1.0 >
>   translate < 50.0, -380.0, -70.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #4 Deeper Rounder
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 0.4, 1.0, 1.0 >
>   translate < -70.0, 280.0, 120.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #4 Deeper Rounder
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 0.4, 1.0, 1.0 >
>   translate < 70.0, 280.0, 120.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #4 Deeper Rounder
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 0.4, 1.0, 1.0 >
>   translate < -70.0, -280.0, 120.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #4 Deeper Rounder
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 0.4, 1.0, 1.0 >
>   translate < 70.0, -280.0, 120.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #5 Inner Rounder
>  {
>   < 0.0, 0.0, 0.0 > 80.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < -90.0, 180.0, 30.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #5 Inner Rounder
>  {
>   < 0.0, 0.0, 0.0 > 80.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < 90.0, 180.0, 30.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #5 Inner Rounder
>  {
>   < 0.0, 0.0, 0.0 > 80.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < -90.0, -180.0, 30.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #5 Inner Rounder
>  {
>   < 0.0, 0.0, 0.0 > 80.0
>   scale < 0.3, 1.0, 1.0 >
>   translate < 90.0, -180.0, 30.0 >
>   texture { TextureHullCupolaPaintingSide translate < 0.0, 0.0, -100.0 > }
>  }
>  sphere // #6 Side Top
>  {
>   < 0.0, 0.0, 0.0 > 90.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < -160.0, 110.0, 350.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #6 Side Top
>  {
>   < 0.0, 0.0, 0.0 > 90.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < 160.0, 110.0, 350.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #6 Side Top
>  {
>   < 0.0, 0.0, 0.0 > 90.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < -160.0, -110.0, 350.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #6 Side Top
>  {
>   < 0.0, 0.0, 0.0 > 90.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < 160.0, -110.0, 350.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Medium Top
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < -390.0, 120.0, 360.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Medium Top
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < 390.0, 120.0, 360.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Medium Top
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < -390.0, -120.0, 360.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Medium Top
>  {
>   < 0.0, 0.0, 0.0 > 70.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < 390.0, -120.0, 360.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Small Top
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < -500.0, 130.0, 310.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Small Top
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < 500.0, 130.0, 310.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Small Top
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < -500.0, -130.0, 310.0 >
>   texture { TextureHullSide }
>  }
>  sphere // #7 Side Hangar Small Top
>  {
>   < 0.0, 0.0, 0.0 > 40.0
>   scale < 1.0, 1.0, 1.0 >
>   translate < 500.0, -130.0, 310.0 >
>   texture { TextureHullSide }
>  }
>  box // dunklere Front
>  {
>   < -62.501, -200.0, -300.0 > < -62.5, 200.0, -100.0 >
>   texture { TextureDeepWindowsSide }
>  }
>  box // dunklere Front
>  {
>   < 62.5, -200.0, -300.0 > < 62.015, 200.0, -100.0 >
>   texture { TextureDeepWindowsSide }
>  }
>  cylinder // Wormhole Generator Rounding
>  {
>   < 0.0, -110.0, 0.0 > < 0.0, 110.0, 0.0 > 62.5
>   scale < 1.0, 1.0, 2.0 >
>   translate < 0.0, 0.0, -140.0 >
>   texture { TextureHullWindowsSide }
>  }
> }
> 
> #declare HullCommandShape = union
> {
>  cylinder // schmaler Außenring
>  {
>   < -12.5, 0.0, 0.0 > < 12.5, 0.20, 0.0 > 500.0
>  }
>  cylinder // dicker Innenzylinder
>  {
>   < -62.5, 0.0, 0.0 > < 62.5, 0.0, 0.0 > 450.0
>  }
>  torus // von Vorne: links
>  {
>   450.0, 50.0
>   rotate < 0.0, 0.0, 90.0 >
>   translate < -12.5, 0.0, 0.0 >
>  }
>  torus // von Vorne: rechts
>  {
>   450.0, 50.0
>   rotate < 0.0, 0.0, 90.0 >
>   translate < 12.5, 0.0, 0.0 >
>  }
> }
> 
> #declare HullCommandOuterShell = difference
> {
>  object { HullCommandWhole texture { TextureHullSide } }
>  object { HullCommandShape scale < 0.975, 0.9975, 0.99 > texture {
> TextureInteriorSide } } // den Rumpf hohl machen ...
> TextureInteriorWindowsSide
>  box { < -100.0, -300.0, -600.0> < 100.0, 300.0, -300.0 > texture {
> TextureHullFront } } // frontale hohe Öffnung für Antennen
>  box { < -37.5, -600.0, -600.0> < 37.5, 600.0, -275.0 > texture {
> TextureHullFront } }   // schmalere frontale hohe Öffnung für Antennen
>  cylinder
>  {
>   < -100.0, 300.0, -500.0 > < 100.0, 300.0, -500.0 > 200.0  // obere und
> untere Abrundungen für frontale hohe Öffnung für Antennen
>   texture { TextureHullFront }
>  }
>  cylinder
>  {
>   < -100.0, -300.0, -500.0 > < 100.0, -300.0, -500.0 > 200.0  // obere
> und untere Abrundungen für frontale hohe Öffnung für Antennen
>   texture { TextureHullFront }
>  }
>  box // keine Rumpfschnitte vorne wo Verdickung
>  {
>   < -100.0, -200.0, -500.0 > < 100.0, 200.0, -300.0 >  // Wormhole
> Generator Gegend
>   texture { TextureHullFront }
>  }
> }
> 
> #declare HullCommandInnerShell = difference // innere Doppelwand
> {
>  object { HullCommandShape scale 0.90 texture { TextureInteriorSide } }
>  object { HullCommandShape scale < 0.880, 0.898, 0.898 > texture {
> TextureInteriorSide } }
>  box { < -100.0, -600.0, -600.0> < 100.0, 600.0, -280.0 > texture {
> TextureHullFront } } // Front-Einschnitt
>  scale < 1.0, 1.075, 1.05 >
> }
> 
> 
> #declare MyCommandBlob = difference  // Querrumpf
> {
>  blob
>  {
>   threshold 0.75
>   cylinder { <  -125.0,    0.0,   50.0 > <  125.0,    0.0,   50.0 >
> 2500.0, 0.7 texture { TextureHullWindowsSide } }
>   cylinder { <  -125.0,    0.0,  100.0 > <  125.0,    0.0,  100.0 >
> 600.0, 0.2 texture { TextureHullTop } } // Querrumpf
>   scale < 0.25, 1.0, 1.0 >
>  }
>  difference
>  {
>   cylinder { < -150.0, 0.0,  200.0 > <  150.0, 0.0,  200.0 > 370.0
> texture { TextureHullWindowsSide } }
>   cylinder { < -150.1, 0.0, -250.0 > <  150.1, 0.0, -250.0 > 110.0
> texture { TextureHullWindowsSide } }
>  }
> }
> 
> #declare MyMidshipBlob = blob
> {
>  #declare MyWidth     = 1.75;
>  #declare MyThickness = 0.01;
>  #declare MyZ         = 0.20;
>  threshold 0.5
>  cylinder { < -0.2, 0.0, 0.0 > < 0.2, 0.0, 0.0 > 2.0, 1 scale < 0.12,
> 1.00, 1.0 > translate < 0.0, 0.0, -0.50 > }
>  cylinder { < -0.2, 0.0, 0.5 > < 0.2, 0.0, 0.5 > 0.75, 1 scale < 0.5,
> 1.00, 1.0 > translate < 0.0, 0.0, -0.50 > }
> 
>  cylinder { < -0.2, 0.0, 0.0 > < 0.2, 0.0, 0.0 > 2.0, 1 scale < 0.10,
> 0.50, 0.5 > translate < 0.0, 0.0, -0.25 > }
> 
>  cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.00 > < MyWidth,
> MyThickness+0.150,   MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.00 > < MyWidth,
> MyThickness/2+0.120, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.00 > < MyWidth,
> MyThickness/2+0.090, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.00 > < MyWidth,
> MyThickness/2+0.060, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.00 > < MyWidth,
> MyThickness/2+0.030, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth,  0.00,                MyZ+0.00 > < MyWidth,
> 0.00,                MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.00 > < MyWidth,
> -MyThickness/2-0.030, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.00 > < MyWidth,
> -MyThickness/2-0.060, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.00 > < MyWidth,
> -MyThickness/2-0.090, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.00 > < MyWidth,
> -MyThickness/2-0.120, MyZ+0.00 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.00 > < MyWidth,
> -MyThickness-0.150,   MyZ+0.00 > 0.25, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.825 > < MyWidth,
> MyThickness+0.150,   MyZ+0.075 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.825 > < MyWidth,
> -MyThickness-0.150,   MyZ+0.075 > 0.25, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness  , MyZ+0.15 > < MyWidth,
> MyThickness  , MyZ+0.15 > 0.5, 1 }
>  cylinder { < -MyWidth, -MyThickness  , MyZ+0.15 > < MyWidth,
> -MyThickness  , MyZ+0.15 > 0.5, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness  , MyZ+0.30 > < MyWidth,
> MyThickness  , MyZ+0.30 > 0.5, 1 }
>  cylinder { < -MyWidth, -MyThickness  , MyZ+0.30 > < MyWidth,
> -MyThickness  , MyZ+0.30 > 0.5, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness  , MyZ+0.45 > < MyWidth,
> MyThickness  , MyZ+0.45 > 0.5, 1 }
>  cylinder { < -MyWidth, -MyThickness  , MyZ+0.45 > < MyWidth,
> -MyThickness  , MyZ+0.45 > 0.5, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness  , MyZ+0.60 > < MyWidth,
> MyThickness  , MyZ+0.60 > 0.5, 1 }
>  cylinder { < -MyWidth, -MyThickness  , MyZ+0.60 > < MyWidth,
> -MyThickness  , MyZ+0.60 > 0.5, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness  , MyZ+0.75 > < MyWidth,
> MyThickness  , MyZ+0.75 > 0.5, 1 }
>  cylinder { < -MyWidth, -MyThickness  , MyZ+0.75 > < MyWidth,
> -MyThickness  , MyZ+0.75 > 0.5, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.825 > < MyWidth,
> MyThickness+0.150,   MyZ+0.825 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.825 > < MyWidth,
> -MyThickness-0.150,   MyZ+0.825 > 0.25, 1 }
> 
>  cylinder { < -MyWidth,  MyThickness+0.150,   MyZ+0.90 > < MyWidth,
> MyThickness+0.150,   MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.120, MyZ+0.90 > < MyWidth,
> MyThickness/2+0.120, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.090, MyZ+0.90 > < MyWidth,
> MyThickness/2+0.090, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.060, MyZ+0.90 > < MyWidth,
> MyThickness/2+0.060, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth,  MyThickness/2+0.030, MyZ+0.90 > < MyWidth,
> MyThickness/2+0.030, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth,  0.00,                MyZ+0.90 > < MyWidth,
> 0.00,                MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.030, MyZ+0.90 > < MyWidth,
> -MyThickness/2-0.030, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.060, MyZ+0.90 > < MyWidth,
> -MyThickness/2-0.060, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.090, MyZ+0.90 > < MyWidth,
> -MyThickness/2-0.090, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness/2-0.120, MyZ+0.90 > < MyWidth,
> -MyThickness/2-0.120, MyZ+0.90 > 0.25, 1 }
>  cylinder { < -MyWidth, -MyThickness-0.150,   MyZ+0.90 > < MyWidth,
> -MyThickness-0.150,   MyZ+0.90 > 0.25, 1 }
> 
>  sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.00, 1.00, 0.5 > translate <
>  MyWidth-0.2, 0.0, MyZ-0.25 > }
>  sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.00, 1.00, 0.5 > translate <
> -MyWidth+0.2, 0.0, MyZ-0.25 > }
>  sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.25, 1.75, 2.5 > translate <
>  MyWidth-0.3, 0.0, MyZ+0.9 > }
>  sphere { < 0.0, 0.0, 0.0 > 0.5, 1 scale < 1.25, 1.75, 2.5 > translate <
> -MyWidth+0.3, 0.0, MyZ+0.9 > }
> 
>  sphere { < 0.0, 0.0, 1.5 > 0.5, -4 } // Heckeinschnitt
>  sphere { <  0.35,  0.25, MyZ+0.08 > 0.275, -1.5 }
>  sphere { <  0.35, -0.25, MyZ+0.08 > 0.275, -1.5 }
>  sphere { < -0.35,  0.25, MyZ+0.08 > 0.275, -1.5 }
>  sphere { < -0.35, -0.25, MyZ+0.08 > 0.275, -1.5 }
>  sphere { <  0.85,  0.25, MyZ+0.06 > 0.225, -1.75 }
>  sphere { <  0.85, -0.25, MyZ+0.06 > 0.225, -1.75 }
>  sphere { < -0.85,  0.25, MyZ+0.06 > 0.225, -1.75 }
>  sphere { < -0.85, -0.25, MyZ+0.06 > 0.225, -1.75 }
>  sphere { <  1.10,  0.23, MyZ-0.04 > 0.175, -1.50 }
>  sphere { <  1.10, -0.23, MyZ-0.04 > 0.175, -1.50 }
>  sphere { < -1.10,  0.23, MyZ-0.04 > 0.175, -1.50 }
>  sphere { < -1.10, -0.23, MyZ-0.04 > 0.175, -1.50 }
> 
>  texture { AntennaRed }
>  scale 450.0
>  translate < 0.0, 0.0, 250.0 >
> }
> 
> //cylinder { < -62.5, 0.0, 0.0 > < 62.5, 0.0, 0.0 > 500.0 pigment { rgbf
> < 1.0, 0.0, 0.0, 0.5 > } }
> 
> 
> 
> #declare MidshipHull = difference
> {
>  union
>  {
>   sphere { < 0.0, 0.0,  0.0 > 250.0 texture { TextureHullSphere }
> translate < -500, 0.0, 550.0 > }
>   sphere { < 0.0, 0.0,  0.0 > 250.0 texture { TextureHullSphere }
> translate <  500, 0.0, 550.0 > }
> //  sphere { <  000.0, 0.0,  900.0 > 400.0 scale < 1.0, 0.60, 1.0 >
> texture { TextureHullTop } } // Mining Port
>   object { MyCommandBlob } // Kommandorumpf
>   object { MyMidshipBlob } // Mittschiffsrumpf
>  }
>  object { HullCommandShape scale 0.99 texture {
> TextureInteriorWindowsSide } }
>  box { < -100.0, -600.0, -600.0> < 100.0, 600.0, -300.0 > texture {
> TextureHullFront } }
>  box { < -37.5, -600.0, -600.0> < 37.5, 600.0, -275.0 > texture {
> TextureHullFront } }
>  cylinder { < -1050.0, 0.0, 3000.0 > < -1050.0, 0.0, -1000.0 >  500.0
> texture { TextureHullSide } } // Hangar
>  cylinder { <  1050.0, 0.0, 3000.0 > <  1050.0, 0.0, -1000.0 >  500.0
> texture { TextureHullSide } } // Hangar
>  sphere { < 0.0, 0.0,  0.0 > 240.0 texture { TextureInteriorSphere }
> translate < -500, 0.0, 550.0 > } // Side Cupola
>  sphere { < 0.0, 0.0,  0.0 > 240.0 texture { TextureInteriorSphere }
> translate <  500, 0.0, 550.0 > } // Side Cupola
> }
> 
> 
> 
> 
> 
> 
> 
> object { HullCommandOuterShell }
> object { HullCommandInnerShell }
> object { MidshipHull }
> 
>


Post a reply to this message

From: clipka
Subject: Re: Blobs: Error 1: Negative Values: Holes! / Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 09:17:11
Message: <567aace7$1@news.povray.org>
Fortunately I happen to have found what I think was the last broken
comment, so here's some preliminary feedback:

Am 23.12.2015 um 08:00 schrieb Sven Littkowski:

> This test code still shows the following errors (I just tested):
...
> - no dark shadow on lower blob areas (the gray hull has them)

That's just plain normal radiosity. That portion of the ship receives
some indirect illumination from other parts of the ship that are
receiving direct light.

The inside of the hull is pitch black because the only other part of the
ship "visible" from there is the opposite inside of the hull, which
faces away from the light source and therefore does not receive any
direct light.

Note that if you specify "recustion_limit 2" and crank up the light's
brightness by a factor of 10, even the inside of the hull isn't pitch
black anymore, because then it'll also pick up "doubly indirect" light,
of which it gets a tiny bit (from its directly lit strip near the
opening, "bounced off" the opposite inside of the hull).


Post a reply to this message

From: clipka
Subject: Re: Blobs: Error 1: Negative Values: Holes! / Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 09:53:37
Message: <567ab571$1@news.povray.org>
Am 23.12.2015 um 08:00 schrieb Sven Littkowski:

> This test code still shows the following errors (I just tested):
> - non-textured or hollow ring-shape border errors (negative values)

Here's the news: It /is/ related to numerical precision, though
unfortunately not in the portion that is affected by the "sturm"
keyword. If you scale the whole scene down by a factor of 0.01, those
artifacts disappear entirely.

Also, POV-Ray 3.6 shows the same behaviour, so this is not a simple case
of just figuring out what was accidently changed and amending the new
code accordingly. Instead, it would require someone with a knack for
numerical precision issues to look really closely at the code for a
while, figure out where exactly stuff breaks, and come up with some
smart way of avoiding the issue.

Until then, I would recommend keeping blob sizes in the single-digit
range (after scaling).


> - boxish texture problems in cupola shadow areas on cupolas
> - no dark shadow on lower blob areas (the gray hull has them)

See my other posts.


Post a reply to this message

From: William F Pokorny
Subject: Re: Blobs: Error 1: Negative Values: Holes! /Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 10:29:08
Message: <567abdc4$1@news.povray.org>
On 12/23/2015 09:53 AM, clipka wrote:
> Am 23.12.2015 um 08:00 schrieb Sven Littkowski:
>
>> This test code still shows the following errors (I just tested):
>> - non-textured or hollow ring-shape border errors (negative values)
>
> Here's the news: It /is/ related to numerical precision, though
> unfortunately not in the portion that is affected by the "sturm"
> keyword. If you scale the whole scene down by a factor of 0.01, those
> artifacts disappear entirely.
>
> Also, POV-Ray 3.6 shows the same behaviour, so this is not a simple case
> of just figuring out what was accidently changed and amending the new
> code accordingly. Instead, it would require someone with a knack for
> numerical precision issues to look really closely at the code for a
> while, figure out where exactly stuff breaks, and come up with some
> smart way of avoiding the issue.
>
> Until then, I would recommend keeping blob sizes in the single-digit
> range (after scaling).
>
>
>> - boxish texture problems in cupola shadow areas on cupolas
>> - no dark shadow on lower blob areas (the gray hull has them)
>
> See my other posts.
>
Christoph,

For what it is worth, I was following the same numerical accuracy trail. 
Leaving things at Sven's current scale ad changing the following in 
blob.cpp from

/* Minimal intersection depth for a valid intersection. */
const DBL DEPTH_TOLERANCE = 1.0e-2;

to

/* Minimal intersection depth for a valid intersection. */
const DBL DEPTH_TOLERANCE = 1.0e-3;

was enough to clean up the solution.

I am not an expert at numerical algorithms but I look at these two 
settings in blob.cpp and I wonder if the values are not perhaps set for 
the old single precision days?

/* Minimal intersection depth for a valid intersection. */
const DBL DEPTH_TOLERANCE = 1.0e-6;      // previous value 1.0e-2

/* Tolerance for inside test. */
const DBL INSIDE_TOLERANCE = 1.0e-12;    // previous value 1.0e-6

I'd think values such as those updated above not unreasonable these 
days. The above runs OK on the few blobs I have. I don't understand 
enough of the algorithm to know if there are other implications for 
moving to much tighter tolerances.

Aside: AA was tending to hide the numerical artifacts which happen in 
quite a few places other than the most obvious in Sven's example. 
Thinking we have perhaps we've been living with some of these accuracy 
issues for a while with AA often cleaning things up to where we don't 
notice?

Bill P.


Post a reply to this message

From: clipka
Subject: Re: Blobs: Error 1: Negative Values: Holes!/Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 11:00:47
Message: <567ac52f$1@news.povray.org>
Am 23.12.2015 um 16:29 schrieb William F Pokorny:

> For what it is worth, I was following the same numerical accuracy trail.
> Leaving things at Sven's current scale ad changing the following in
> blob.cpp from
> 
> /* Minimal intersection depth for a valid intersection. */
> const DBL DEPTH_TOLERANCE = 1.0e-2;
> 
> to
> 
> /* Minimal intersection depth for a valid intersection. */
> const DBL DEPTH_TOLERANCE = 1.0e-3;
> 
> was enough to clean up the solution.
> 
> I am not an expert at numerical algorithms but I look at these two
> settings in blob.cpp and I wonder if the values are not perhaps set for
> the old single precision days?

Maybe. Maybe not.

> /* Minimal intersection depth for a valid intersection. */
> const DBL DEPTH_TOLERANCE = 1.0e-6;      // previous value 1.0e-2
> 
> /* Tolerance for inside test. */
> const DBL INSIDE_TOLERANCE = 1.0e-12;    // previous value 1.0e-6
> 
> I'd think values such as those updated above not unreasonable these
> days. The above runs OK on the few blobs I have. I don't understand
> enough of the algorithm to know if there are other implications for
> moving to much tighter tolerances.

That's the problem: I don't know anyone familiar enough with the
algorithm to say for sure whether stuff will work or whether it'll break.

Also, if we do touch these things, rather than a fixed "epsilon" for the
precision stuff I think we should instead make the tolerances dependent
on the absolute values involved; to all of my knowledge that's a cleaner
way to handle these things.


> Aside: AA was tending to hide the numerical artifacts which happen in
> quite a few places other than the most obvious in Sven's example.
> Thinking we have perhaps we've been living with some of these accuracy
> issues for a while with AA often cleaning things up to where we don't
> notice?

I doubt that. These artifacts obviously aren't stray random speckle
artifacts. AA blurs them out a bit, but there would still be enough of a
pattern remaining to be noticed.


Post a reply to this message

From: Sven Littkowski
Subject: Re: Blobs: Error 1: Negative Values: Holes! /Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 12:46:36
Message: <567addfc$1@news.povray.org>
Thanks, good explanation.

I changed pretrace_end from 0.015 to 0.010.

I increased count from 400 to 1500.
And I added low_error_factor 0.5.
After some experimenting with each of these three measurements and
combinations of them, the entire radiosity block looks now like this:

 #if(MyRadiosity)
  radiosity
  {
   media on
   pretrace_start 0.08
   pretrace_end   0.001
   count 400
   error_bound 0.75
   recursion_limit 1
  }
 #end

pretrace_end 0.001 did the job.   :-D


Post a reply to this message

From: Sven Littkowski
Subject: Re: Blobs: Error 1: Negative Values: Holes! /Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 12:56:52
Message: <567ae064@news.povray.org>
Your wish is my command. See the attachment.

The problems begin with QUALITY 4 and above. Up to QUALITY 3 there are
no problems.


Post a reply to this message


Attachments:
Download '-clipka.pov.txt' (13 KB)

From: Sven Littkowski
Subject: Re: Blobs: Error 1: Negative Values: Holes! /Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 13:00:08
Message: <567ae128$1@news.povray.org>
Thanks. I send an answer already to the previous posting of yours
(above). :-)

Is it possible to recalculate all blob values so I get the same size
without scaling, rounded edges inclusive as seen in the blob?

Thanks.


Post a reply to this message

<<< Previous 8 Messages Goto Latest 10 Messages Next 10 Messages >>>

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