![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Alrighty, Thanks to you guys, I shall test out the parameter
declarations (correct term?), and if that does not work, I will post my
code. Thanks a lot.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Holy Jumping Mother of God! It worked! Sorta, anyways. It rendered,
yes, but there was nothing there. My guess is because I messed up
somewhere along with placing the objects and camera.
in case anyone was interested still, this is the fixed code:
#declare AmbientLight= 0;
camera
{
location <0,.5,-7>
look_at <0,0,0>
}
light_source
{
<.5,11,-3>
color rgb 2
spotlight
radius 3
falloff 15
tightness 5
point_at <0,0,0>
area_light
<.5,0,0>,<0,.5,0>,5,5
adaptive 1
jitter
}
plane
{
y,0
hollow
texture
{
pigment
{
checker
color rgb <.8,.8,.8>
color rgb <0,0,.25>
}
}
}
#declare Sphere=function (x,y,z,R) {x*x+y*y+z*z}
isosurface
{
function{Sphere(2,2,2,4)}
threshold 0
contained_by {box {-5,5}}
texture
{
pigment
{
color rgb .6
}
}
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Matthew Pace" <mat### [at] lycos com> wrote in message
news:mat### [at] netplex aussie org...
> Holy Jumping Mother of God! It worked! Sorta, anyways. It rendered,
> yes, but there was nothing there. My guess is because I messed up
> somewhere along with placing the objects and camera.
>
> in case anyone was interested still, this is the fixed code:
> #declare Sphere=function (x,y,z,R) {x*x+y*y+z*z}
>
> isosurface
> {
> function{Sphere(2,2,2,4)}
> threshold 0
> contained_by {box {-5,5}}
> texture
> {
> pigment
> {
> color rgb .6
> }
> }
Close - you specify the R param, but then don't do anything with it.
Consequently, with a threshold of 0, you have a 0-width sphere (i.e. the only
points where your equation evaluates to =< 0 is at <0,0,0>).
Next, you correctly specify (x,y,z,R) as params to the function, but then pass
the constant (2,2,2,4), instead of (x,y,z,4). You want the isosurface to be
evaluated for all points of (x,y,z) within the contained_by box, not just for
<2,2,2>.
Also, and less importantly, you probably want {pow(x*x+y*y+z*z,0.5)-R}, since
otherwise you sphere is going to have a radius of the square-root of R, rather
than R (which is fine, but breaks the doctrine of least surprise ;)
Finally, once you sort these problems out, you're still going to have trouble
because you haven't specified a max_gradient, and the default (1.1 iirc) is too
low. So...
Try:
#declare FSphere=function (x,y,z,R) {pow(x*x+y*y+z*z,0.5) - R}
isosurface
{
function{FSphere(x,y,z,2)}
threshold 0
contained_by {box {-5,5}}
max_gradient 13
texture{
pigment{color rgb .6}
}
}
One final point - your texture is wrong. You should specify a perfect reflective
texture for all spheres on checked planes, otherwise you are breaking the terms
of the pov-licence.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Tom Melly wrote:
> [...]
>
> #declare FSphere=function (x,y,z,R) {pow(x*x+y*y+z*z,0.5) - R}
> isosurface
> {
> function{FSphere(x,y,z,2)}
> threshold 0
> contained_by {box {-5,5}}
> max_gradient 13
> texture{
> pigment{color rgb .6}
> }
> }
Actually you should use sqrt() instead of pow(,0.5).
And since the radius R is a render time constant it is not necessary for
it to be a parameter:
#declare R=2;
#declare FSphere=function {sqrt(x*x+y*y+z*z) - R}
isosurface
{
function{FSphere(x,y,z)}
...
}
And this is exctly how it is shown in the isosurface tutorial in the
documentation.
Christoph
--
POV-Ray tutorials, include files, Sim-POV,
HCR-Edit and more: http://www.tu-bs.de/~y0013390/
Last updated 25 Oct. 2003 _____./\/^>_*_<^\/\.______
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Christoph Hormann" <chr### [at] gmx de> wrote in message
news:afb### [at] triton imagico de...
> Actually you should use sqrt() instead of pow(,0.5).
True (but I'm too lazy to check the docs, and couldn't remember how the keyword
was spelt ;). Also, never a bad idea to remind a newbie that pow(n,0.5) and
sqrt(n) are the same thing...
>
> And since the radius R is a render time constant it is not necessary for
> it to be a parameter:
>
> #declare R=2;
>
Also true - still, I quite liked the example of passing x,y,z and another param.
I don't suppose there's any chance that pov will recognise that R is a constant
and perform an optimisation?*
* yeah, right, and monkeys will fly out of my butt.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Tom Melly <tom### [at] tomandlu co uk> wrote:
> Also, and less importantly, you probably want {pow(x*x+y*y+z*z,0.5)-R}, since
> otherwise you sphere is going to have a radius of the square-root of R, rather
> than R (which is fine, but breaks the doctrine of least surprise ;)
Why use a heavy solution to a simple problem?
If the R needs to be squared, then simply square it. This will probably
result in much faster renderings, the result being equal:
#declare FSphere = function(x,y,z,R) { x*x+y*y+z*z-R*R }
--
#macro M(A,N,D,L)plane{-z,-9pigment{mandel L*9translate N color_map{[0rgb x]
[1rgb 9]}scale<D,D*3D>*1e3}rotate y*A*8}#end M(-3<1.206434.28623>70,7)M(
-1<.7438.1795>1,20)M(1<.77595.13699>30,20)M(3<.75923.07145>80,99)// - Warp -
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Christoph Hormann <chr### [at] gmx de> wrote:
> Actually you should use sqrt() instead of pow(,0.5).
How about simply squaring the radius (R*R) instead of using the slow
sqrt() function?-)
--
#macro N(D)#if(D>99)cylinder{M()#local D=div(D,104);M().5,2pigment{rgb M()}}
N(D)#end#end#macro M()<mod(D,13)-6mod(div(D,13)8)-3,10>#end blob{
N(11117333955)N(4254934330)N(3900569407)N(7382340)N(3358)N(970)}// - Warp -
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Warp" <war### [at] tag povray org> wrote in message news:3fa7a09a@news.povray.org...
> Christoph Hormann <chr### [at] gmx de> wrote:
> > Actually you should use sqrt() instead of pow(,0.5).
>
> How about simply squaring the radius (R*R) instead of using the slow
> sqrt() function?-)
He's got a point.... in which case it would make sense to declare R as the
square of whatever value you want to use?
So, Chris's example becomes:
#declare R=2*2;
#declare FSphere=function {(x*x+y*y+z*z) - R}
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Tom Melly <tom### [at] tomandlu co uk> wrote:
> #declare R=2*2;
> #declare FSphere=function {(x*x+y*y+z*z) - R}
Having the radius as parameter has certain advantages, though.
For instance, the radius does not have to be constant thorough the
entire surface of the sphere... :)
Example:
#declare FSphere = function(x,y,z,R) { (x*x+y*y+z*z) - R*R }
isosurface
{ function { FSphere(x,y,z, 2-.5*f_noise3d(x*5,y*5,z*5)) }
...
}
--
plane{-x+y,-1pigment{bozo color_map{[0rgb x][1rgb x+y]}turbulence 1}}
sphere{0,2pigment{rgbt 1}interior{media{emission 1density{spherical
density_map{[0rgb 0][.5rgb<1,.5>][1rgb 1]}turbulence.9}}}scale
<1,1,3>hollow}text{ttf"timrom""Warp".1,0translate<-1,-.1,2>}// - Warp -
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Warp wrote:
>
> How about simply squaring the radius (R*R) instead of using the slow
> sqrt() function?-)
Because that function would have a non-constant gradient. With the (way
too large) container box{-5,5} you need quite a high max_gradient to
correctly render it -> it will be slower than with sqrt().
Of course using the internal function f_sphere() would be even faster.
Christoph
--
POV-Ray tutorials, include files, Sim-POV,
HCR-Edit and more: http://www.tu-bs.de/~y0013390/
Last updated 25 Oct. 2003 _____./\/^>_*_<^\/\.______
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |