|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
I was playing with functions, trying to learn about isosurfaces, when I
found something that looked like a "black hole". But I noticed what
looked like some strange shadows or reflections on it, and I cleaned up
my code and have some questions on it.
Basically, it's the log function. In an image with the variable "close"
defined as false you can see the problems as black shapes in the hole.
With close set to true, the camera is moved right into the hole and the
sides are not smooth.
Is this just a limitation of the algorithm used to create isosurfaces?
Or am I doing something wrong?
Two more questions
Can the ?: (conditional) operator be used in a function?
Can vlength() be used in a function? (It kept complaining about the "<"
symbol on the vector I passed it).
Thanks. Code follows:
// Persistence of Vision Ray Tracer Scene Description File
// File: i_test.pov
// Vers: 3.5
// Desc: Testing Isoserfaces - trying to get what I want
// Date:
// Auth: Tom A.
//
#version 3.5;
#include "colors.inc"
global_settings {
assumed_gamma 1.0
}
// ----------------------------------------
#declare close = false;
camera {
direction 1.5*z
right x*image_width/image_height
#if( close)
location <1.0, 4, -1.0>look_at <0.0, 0.0, 0.0>
#else
location <0.0, 20.5, -53.50>look_at <0.0, 0.0, 0.0>
#end
} // camera
sky_sphere { pigment { Black } }
light_source { <0,200, 0> color White }
isosurface
{ function { (y- log( sqrt(x*x+z*z) )*5)
}
contained_by { box { -15, 15 } }
#if (close) // a sort of black whole type grid
texture{
pigment{ gradient z color_map{ [.02 White ] [.02 Clear ] } scale .25 }
finish{ ambient .4 }
}
texture{
pigment{ gradient x color_map{ [.02 White ] [.02 Clear ] } scale .25}
}
#else
pigment{ gradient y scale 7 }
#end
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> Basically, it's the log function. In an image with the variable "close"
> defined as false you can see the problems as black shapes in the hole.
>
> With close set to true, the camera is moved right into the hole and the
> sides are not smooth.
Without looking very closely at the code, I predict that you can solve the
problem by either reducing the "accuracy" or increasing the "max_gradient".
Check the documentation for each.
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
In article <3f985f2b$1@news.povray.org>,
"Tom A." <met### [at] yahoocom> wrote:
> I was playing with functions, trying to learn about isosurfaces, when I
> found something that looked like a "black hole". But I noticed what
> looked like some strange shadows or reflections on it, and I cleaned up
> my code and have some questions on it.
This sounds like typical artifacts of the isosurface intersection
solving algorithm. If so, it has nothing directly to do with the log()
function, it is caused by your function having too high of a gradient.
Using higher quality settings (mainly a higher max_gradient) will reduce
or eliminate these artifacts.
> Can the ?: (conditional) operator be used in a function?
No. The select() function gives the same functionality, however.
http://povray.org/documentation/view/137/#s06_01_03_06
> Can vlength() be used in a function? (It kept complaining about the "<"
> symbol on the vector I passed it).
No. Neither can any other vector functions. User defined functions have
no concept of "vectors". The only way you can get a vector value from
one is to use a transform, pigment, or spline function, and you can't
perform mathematical operations on vectors within a function.
A full listing of what you can use in functions is here:
http://povray.org/documentation/view/140/
--
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tagpovrayorg
http://tag.povray.org/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> This sounds like typical artifacts of the isosurface intersection
> solving algorithm. If so, it has nothing directly to do with the log()
> function, it is caused by your function having too high of a gradient.
> Using higher quality settings (mainly a higher max_gradient) will reduce
> or eliminate these artifacts.
The log function is here used in a range containing zero. The derivative
of log at zero is infinite, so the gradient is unbounded and no max_gradient
can suffice.
--
merge{#local i=-11;#while(i<11)#local
i=i+.1;sphere{<i*(i*i*(.05-i*i*(4e-7*i*i+3e-4))-3)10*sin(i)30>.5}#end
pigment{rgbt 1}interior{media{emission x}}hollow}// Mark Weyer
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Christopher James Huff wrote:
> In article <3f985f2b$1@news.povray.org>,
> "Tom A." <met### [at] yahoocom> wrote:
>
>
>>I was playing with functions, trying to learn about isosurfaces, when I
>>found something that looked like a "black hole". But I noticed what
>>looked like some strange shadows or reflections on it, and I cleaned up
>>my code and have some questions on it.
>
>
> This sounds like typical artifacts of the isosurface intersection
> solving algorithm. If so, it has nothing directly to do with the log()
> function, it is caused by your function having too high of a gradient.
> Using higher quality settings (mainly a higher max_gradient) will reduce
> or eliminate these artifacts.
Thank you, and the the others who answered my questions.
>
>
>
>>Can the ?: (conditional) operator be used in a function?
>
>
> No. The select() function gives the same functionality, however.
> http://povray.org/documentation/view/137/#s06_01_03_06
>
>
>
>>Can vlength() be used in a function? (It kept complaining about the "<"
>>symbol on the vector I passed it).
>
>
> No. Neither can any other vector functions. User defined functions have
> no concept of "vectors". The only way you can get a vector value from
> one is to use a transform, pigment, or spline function, and you can't
> perform mathematical operations on vectors within a function.
>
> A full listing of what you can use in functions is here:
> http://povray.org/documentation/view/140/
>
Tom A.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
In article <3F9### [at] informatikuni-freiburgde>,
Mark Weyer <wey### [at] informatikuni-freiburgde> wrote:
> The log function is here used in a range containing zero. The derivative
> of log at zero is infinite, so the gradient is unbounded and no max_gradient
> can suffice.
Right, but it reaches infinity at a line along the y axis, and the
surface quickly moves outside the container object. A high enough
max_gradient should get rid of most of the artifacts that show up. For
this isosurface, max_gradient 12 almost completely eliminated the
problems.
--
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tagpovrayorg
http://tag.povray.org/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|