|
|
Hi,
I forgot to mention that when I rendered the file in both 3.1 and 3.5.11
with anti-aliasing turned off, the two images are almost (but not exactly)
identical. I don't think I need to upload those images, unless someone asks.
Bill
"Bill Brehm" <bbr### [at] netzeronet> wrote in message
news:3c739448@news.povray.org...
> Hi,
>
> I rendered the same image with 3.1 and 3.5.11. The image from 3.5 looks
like
> something is wrong with the anti-aliasing. Or has something changed that
I'm
> not aware of that affects the image?
>
> The file:
>
> //
> // Persistence Of Vision
> // Synthetic Fiducial for Matrox and
> //
>
> #version 3.1
> global_settings { assumed_gamma 2.2 }
> global_settings { ambient_light 0.1 }
>
> #include "colors.inc"
> #include "textures.inc"
>
> background { color SteelBlue }
>
> #declare Tiny = 0.001;
>
> // Lighting declarations
>
> #declare ledoffset = .125;
>
> #declare ringleds = 60;
> #declare ringlightdiameter = 5.5;
> #declare ringlightdiffuserthickness = 5/32;
> #declare ringlightthickness = 0.5;
> #declare ringlightheight = 0.25;
>
> #declare onaxisledsx = 8;
> #declare onaxisledsy = 8;
> #declare onaxissizex = 4.620998;
> #declare onaxissizey = 4.620998;
> #declare onaxisdiffuserthickness = 0.125;
>
> #declare Led = light_source{
> <0,0,0>
> color White * 0.05
> /*looks_like {
> union {
> sphere{ <0,0,0>, 0.09375}
> cylinder{ <0,0,0>, <0,-0.25,0> 0.09375}
> }
> pigment {color Red}
> }*/
> }
>
> #declare RingDiffuser = difference {
> cylinder {
> <0, 0, -ringlightthickness / 2>,
> <0, 0, ringlightthickness / 2>,
> ringlightdiameter / 2
> }
> cylinder {
> <0, 0, -ringlightthickness / 2 - 0.001>,
> <0, 0, ringlightthickness / 2 + 0.001>,
> (ringlightdiameter - ringlightdiffuserthickness) / 2
> }
> texture {
> Glass3
> pigment { rgbf <1, 1, 1, 0.5> }
> }
> }
>
> #declare RingLight = union {
> #local Count = 0;
> #while(Count < ringleds)
> object { Led rotate <0, 0, 90> translate <(ringlightdiameter/2 +
> ledoffset), 0, 0> rotate <0, 0, (360/ringleds * Count)>}
> #local Count = Count + 1;
> #end
>
> object {RingDiffuser}
> }
>
> #declare OnAxisDiffuser = box {
> <-onaxissizex / 2, -onaxissizey / 2, 0>,
> <onaxissizex / 2, onaxissizey / 2, -onaxisdiffuserthickness>
> texture {
> Glass3
> pigment { rgbf <1, 1, 1, 0.5> }
> }
> }
>
> #declare OnAxisLight = union {
> #local XCount = 0;
> #while(XCount < onaxisledsx)
> #local YCount = 0;
> #while(YCount < onaxisledsy)
> #local xposition = (XCount - (onaxisledsx - 1) / 2) * (onaxissizex /
> onaxisledsx);
> #local yposition = (YCount - (onaxisledsy - 1) / 2) * (onaxissizey /
> onaxisledsy);
> #local zposition = -ledoffset;
>
> object { Led rotate <90, 0, 0> translate <xposition, yposition,
> zposition> }
> #local YCount = YCount + 1;
> #end
> #local XCount = XCount + 1;
> #end
>
> object {OnAxisDiffuser}
> }
>
> // Size of Strip
> #declare StripL = 4.8;
> #declare StripW = 3.55;
>
> // Center of Strip is bottom center
> // Strip length is in Y axis in Z plane, ie at the position it would be
> loaded
>
> // Body is the Dark Green Plastic Bit
> #local StripBodyL = StripL;
> #local StripBodyW = StripW;
> #local StripBodyH = 1.000;
> #local StripMaskH = 0.050;
>
> #local StripBodyTexture =
> texture {
> pigment { color red 0.18 green 0.27 blue 0.30 }
> // finish { Phong_Glossy }
> }
>
> #local StripMaskTexture =
> texture {
> pigment { color red 0.18 green 0.27 blue 0.30 }
> finish { Phong_Glossy }
> }
>
> #local StripBody = box {
> <-StripBodyL/2, -StripBodyW/2, StripBodyH>,
> <StripBodyL/2, StripBodyW/2, 0>
> texture {
> StripBodyTexture
> }
> }
>
> #local StripMask = box {
> <-StripBodyL/2, -StripBodyW/2, 0>,
> <StripBodyL/2, StripBodyW/2, -StripMaskH>
> texture {
> StripMaskTexture
> }
> }
>
> // Fiducial constants [mm]
> #local StripFiducialThickness = 0.050;
>
> #local StripFiducialDiameter = 1.000;
> #local StripFiducialStreetWidth = 0.125 * StripFiducialDiameter;
> #local StripFiducialClearance = 0.400;
>
> #local StripFiducialTexture = texture {Gold_Metal}
>
> // Round crosshair fiducial declaration
>
> #local StripFiducial = difference {
> cylinder {
> <0, 0, 0>
> <0, 0, -StripFiducialThickness>
> StripFiducialDiameter / 2
> }
> box {
> <-StripFiducialDiameter / 2 - Tiny, StripFiducialStreetWidth /
> 2, -StripFiducialThickness - Tiny>
> <StripFiducialDiameter / 2 + Tiny, -StripFiducialStreetWidth / 2,
Tiny>
> }
> box {
> <StripFiducialStreetWidth / 2, -StripFiducialDiameter / 2 -
> Tiny, -StripFiducialThickness - Tiny>
> <-StripFiducialStreetWidth / 2, StripFiducialDiameter / 2 + Tiny,
Tiny>
> }
> texture {StripFiducialTexture}
> }
>
> // Camera declaration and instantiation
>
> /*#declare lens_dist = function(x, y, z, a, b) {
> (x + a * x * sqrt(x*x + y*y) + b * x^3 * sqrt(x*x + y*y) ) ^ 2 +
> (y + a * y * sqrt(x*x + y*y) + b * y^3 * sqrt(x*x + y*y) ) ^ 2
> } */
>
> #declare a_factor = 0.65;
> #declare b_factor = 0.1;
>
> #declare HFOV = 5.00;
> #declare VFOV = HFOV * 3 / 4;
>
> #declare cameraheight = 10.000;
>
> camera {
> orthographic
> location <0, 0, 0>
> right <HFOV, 0, 0>
> up <0, VFOV, 0>
> sky <0, 1, 0>
> direction <0, 0, cameraheight>
> look_at <0, 0, 1>
> translate <0, 0, -cameraheight>
> }
>
> #local ArrayMax = 121;
> #local XPos = array[ArrayMax]
> #local YPos = array[ArrayMax]
> #local Scale = array[ArrayMax]
> #local Rotate = array[ArrayMax]
> #local XPos[0] = 0.0; // force arrays to be floats
> #local YPos[0] = 0.0;
> #local Scale[0] = 0.0;
> #local Rotate[0] = 0.0;
>
> // Lighting and device instantiations
>
> // Note: lighting is defined in inches and the strip is defined in
> millimeters
>
> //object {RingLight translate (<0, 0, -(ringlightthickness / 2 +
> ringlightheight)>)}
> object {OnAxisLight translate (<0, 0, -20>)}
>
> //sphere {<0, 0, 0> 0.1 pigment {Red}}
>
> #local i = int(clock * ArrayMax + 0.5);
>
> #declare Strip = difference {
> union {
> object {StripBody }
> difference { // !!! fix this
> object {StripMask }
> cylinder {
> <0, 0, Tiny>
> <0, 0, -StripMaskH - Tiny>
> (StripFiducialDiameter + StripFiducialClearance) / 2
> //translate StripFiducialPosition
> }
> }
> object {StripFiducial scale <Scale[i], Scale[i], 1> rotate <0, 0,
> Rotate[i]> translate <XPos[i], YPos[i], 0>}
> }
> }
>
> object {Strip}
>
> The local ini file:
>
> ;Initial_Frame = 1
> ;Final_Frame = 121
> ;Subset_Start_Frame = 1
> ;Subset_End_Frame = 1
> ;Cyclic_Animation = True
> ;Quality = 2
>
> Antialias = on
> Sampling_Method = 2
> Antialias_Depth = 4
> ;Antialias_Threshold = 0.3
> Jitter = off
>
> Both renders were set to 640x480 AA 0.3.
>
> Thanks,
>
> Bill
>
>
>
>
>
>
>
>
>
Post a reply to this message
|
|
|
|
I discovered that the reason is that the anti-aliasing parameters are not
being read the same way in 3.1 and 3.5.11. Maybe it's a bug and maybe it's
intentional. I'll describe it.
For some special purposes, I had added entries in the quickres.ini file. The
first entry below is a standard and the second is what I set up.
[640x480, AA 0.3]
Width=640
Height=480
Antialias=On
Antialias_Threshold=0.3
[768x494, AA 0.3]
Width=768
Height=494
Antialias=On
Sampling_Method=2
Antialias_Depth=4
Antialias_Threshold=0.3
This "bug" was detected at 640x480, but was solved at 768x494. So I looked
deeper.
I have a povray.ini file in the same directory as the fiducial.pov source
file. It also specifies the additional anti-aliasing parameters. 3.1 reads
that file, but 3.5.11 does not. I renamed the file to fiducial.ini; neither
version read it. (This would be what I would prefer to work in both cases,
since I can have more than one .pov in a directory and not force them the
share the same povray.ini file. I don't like having to render the .ini
file.) I added the fiducial.pov name into the .ini file and rendered the
.ini file. 3.5.11 worked and 3.1 complained. I added Input_File_Name =
fiducial.pov into the .ini file, and rendered the .ini file and both
versions work. Of course the bad thing is I have to keep the .ini file open
in the editor and remember to switch from the .pov file to the .ini file
before pressing RUN. That's why I'd prefer that when rendering name.pov, the
renderer looked for name.ini to find any additional parameters.
At any rate, that's what happens. Is this a bug or it is an intentional "new
feature"?
Bill
"Anders K." <and### [at] prostard2gcom> wrote in message
news:3c759cc2$1@news.povray.org...
> > That's odd, because the object rendered in 3.1 with AA is placed exactly
> at
> > 0, 0 and the camera is looking at 0, 0 and the object is rendered quite
> > symetrically. Notice the cross at the center of the circle; the pixel
> colors
> > representing where the edge lies seem equally bright both left and
right,
> > and top and bottom.
>
> This is because the object is exactly centered at (320.5, 239.5), which is
> the center of pixel (320, 239). So it will look symmetrical, but it's
> centered around the wrong place.
>
> In fact, the 3.5 beta 11 image is also centered at (320.5, 239.5). Did you
> set #version to 3.1? That would disable the half-pixel bug fix.
>
> Anders
>
>
>
Post a reply to this message
|
|