POV-Ray : Newsgroups : povray.bugreports : Blobs: Error 1: Negative Values: Holes! / Error 2: Alpha Value Overwriting? Server Time
20 Oct 2021 15:46:48 EDT (-0400)
  Blobs: Error 1: Negative Values: Holes! / Error 2: Alpha Value Overwriting? (Message 11 to 20 of 48)  
<<< Previous 10 Messages Goto Latest 10 Messages Next 10 Messages >>>
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

From: Sven Littkowski
Subject: Re: Blobs: Error 1: Negative Values: Holes!/Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 13:05:04
Message: <567ae250$1@news.povray.org>
Wow! Respect! I don't know much about C or C++, but if I could find
someone who has the Windows compiler, shouldn't I then not be able to
compile a new EXE file? Or, William, can I ask you to do that? I am
willing to test that version right away, and give a feedback here with
text and images. It won't liquefy my laptop, so I am boldly offering to
use this new EXE.


Post a reply to this message

From: clipka
Subject: Re: Blobs: Error 1: Negative Values:Holes!/Error2:AlphaValueOverwriting?
Date: 23 Dec 2015 16:19:40
Message: <567b0fec$1@news.povray.org>
Am 23.12.2015 um 19:04 schrieb Sven Littkowski:
> Wow! Respect! I don't know much about C or C++, but if I could find
> someone who has the Windows compiler, shouldn't I then not be able to
> compile a new EXE file? Or, William, can I ask you to do that? I am
> willing to test that version right away, and give a feedback here with
> text and images. It won't liquefy my laptop, so I am boldly offering to
> use this new EXE.

As far as Windows is concerned (which I presume is what you are using),
the only build tool currently supported by the POV-Ray project is
Microsoft Visual Studio, with version VS 2010 being the primary
officially supported version at present, and VS 2015 being supported via
the VS 2010 project files by now. Versions in between have not been
extensively tested.

Microsoft provides a free edition of Visual Studio 2015 called Visual
Studio Community, which can be used within certain legal limitations
(building custom versions of POV-Ray should be fair game) and provides
everything you need to build POV-Ray straight out of the box.


Note however that when you modify the source code of POV-Ray, you do so
at your own risk.


Post a reply to this message

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

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