POV-Ray : Newsgroups : povray.beta-test : isosurface MegaPov conversion to POV3.5 : Re: isosurface MegaPov conversion to POV3.5 Server Time
31 Jul 2024 04:24:40 EDT (-0400)
  Re: isosurface MegaPov conversion to POV3.5  
From: Dennis Milller
Date: 9 Sep 2001 20:56:23
Message: <3b9c0fb7$1@news.povray.org>
Merci Rene. This is a great help and will save me many hours of research.
Best,
Dennis
"smellenbergh" <sme### [at] skynetbe> wrote in message
news:1ezhnxz.1xl4pg916b2xyyN%smellenbergh@skynet.be...
>
> Here are some hints to convert syntax of MegaPov isosurface to 3.5
>
> * braces {} are required with functions
>   "function x+y"
> should be
>   "function {x+y}"
>
>
> * parameters of a declared function must be specified when called
>   #declare FUNC = function {x+y+z}
>   isosurface { function {FUNC} }
> should be
>   isosurface { function {FUNC(x,y,z)} }
>
>
> * using internal functions (See 7.7 functions.inc)
>   all internal functions are included in the functions.inc and start
> with
> "f_xxx". Parameters are set between ( ) braces and begin with the x,y,z
> parameters)
>    So, MegaPov's "sphere",<0.8>
> becomes
>   #include "functions.inc"
>   f_sphere(x,y,z,0.8)
> or, when declaring the function directly, without using the include
> file:
>   #declare MySphere = function { internal(61) }
>   isosurface{ function{ MySphere(x,y,z,0.8) } }
>
>
> * noise3d
>   in 3.5 noise3d is treated as an internal function: use the
> function.inc and
>   f_noise3d(x*4,y*4,z*4)/5
> Note that the noise uses pov's noise generator set in the global
> settings:
> global_settings{
>   noise_generator 1 file://old 3.1g plateaud noise
>   noise_generator 2 file://MegaPov 0.5 noise
>   noise_generator 3 file://New 3.5 perlin noise
> }
> ...or use
>   f_noise_generator(x,y,z, P0)
>     * P0 : Noise generator number
>
> *The func_ names have been renamed
>   func_0  >  f_ellipsoid
>   func_1  >  f_blob
>   func_2  >  f_flange_cover
>   func_2b  >  f_blob2
>   func_3  >  f_cross_ellipsoids
>   func_4  >  f_isect_ellipsoids
>   func_5  >  f_spikes
>   func_9  >  f_poly4
>   func_10  >  f_spikes_2d
>   func_11  >  f_quantum
>   func_12  >  f_helical_torus
>   func_13  >  f_comma
>   func_16  >  f_polytubes
> And the duplicate functions have been removed
>   helix1 / func_6  >  f_helix1
>   helix2 / func_7  >  f_helix2
>   spiral / func_8  >  f_spiral
>   mesh1 / func_14  >  f_mesh1
>
>
>
> * using function { pigments } in isosurfaces
>   the pigment must be declared. When calling it, the dot notation must
> be used: FUNC(x,y,z).x
> This allows to use the channels of the color vector in a controlled way
> Allowed are:
>   .x .u .red, .y .v .green, .z .t .blue, .filter, .transmit for the
> separate channels
>   .gray or .grey for the gray value of the color vector
>   .hf for the height_field value of the color vector (this was the
> method used in MegaPov)
>   #declare Granny = function{
>     pigment{
>       granite scale 3
>       color_map { [0 rgb 0] [1 rgb 1] }
>     }
>   }
>   isosurface{function{f_sphere(x,y,z,1)+Granny(x,y,z).hf*0.2}}
>
>
> * sign is no longer used in 3.5 isosurface
> to switch inside/outside, turn the whole function negative:
>   #declare Landscape = function { f_ridged_mf(x,y,z,1,2,10,1.1,2) }
>   isosurface{function{ Landscape(x,0,z)-y }
> becomes
>   isosurface{function{ -(Landscape(x,0,z)-y) }
>
>
> * sqr and cub no longer supported
>   use ^2 and ^3 ,or pow(A,2) and pow(A,3)
>
>
> * sqrt x^y and ln are used in the mathematical form in 3.5
>   Isosurface     MegaPov internal   3.5 internal
>   ----------     ---------------    ------------
>   sqrt(x)     =  sqrt(abs(x))       =sqrt(x)
>   x^y         =  abs(x)^y           =x^y
>   ln(x)       =  ln(abs(x))         =ln(x)
> So, these MegaPov functions might need to be written as they have been
> used internally in MegaPov to get the same results in 3.5
>
>
> * if(A,B,C)
>   has been replaced by select (A,C,B)
> MegaPov
>   isosurface {function {if(-x, abs(x)+abs(y)-0.5, sqrt(z^2+y^2)-0.5)}
> becomes in 3.5
>   isosurface{function{select(-x, sqrt(z^2+y^2)-0.5, abs(x)+abs(y)-0.5)}
>
>
> * method 1 and method 2
>   keywords no longer used in 3.5: a method 2-ish method is standard
>
>
> * eval
>   eval becomes evaluate and *requires* 3 parameters without the vector
> braces: evaluate A,B,0.99 which is the same as MegaPov's eval <A,B,0.99>
>
>
> I think these are the main changes, but I probably forgot some :-)
>
>

> --
> e-mail:sme### [at] skynetbe
>
> http://users.skynet.be/smellenbergh


Post a reply to this message

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