| 
  | 
Simply an isoabstract (with a touch of good old RSOCP).
Because source is small, here it is:
#version 3.7;
global_settings {
        assumed_gamma 2.2
        noise_generator 3
}
#include "stdinc.inc"
camera {
        location  <0,2.5,-4.5>
        direction 1.5*z
        right     -x*image_width/image_height
        look_at   <0.5,-0.4,0>
}
#declare p1 = function {pattern {bumps rotate 60 scale 1.2}}
#declare p2 = function {pattern {crackle metric 1}}
#declare f1 = function (x,y,z) {(sin(p1(x,y,z)*24*pi)+1)*0.5}
#declare f2 = function (x,y,z) {(sin(p2(x,y,z)*24*pi)+1)*0.5*(1-p2(x,y,z))}
#declare t1 =
texture {
        pigment {color rgb <0,0,1>}
        finish {ambient 0 reflection {0.6 metallic 0.5}}
}
#declare t2 =
texture {
        pigment {color rgb <0,1,1>}
        finish {emission 1}
}
#declare s = function {f1 (x*1.5,y*1.5,z*1.5)-0.001}
isosurface {
        function {s (x,y,z)}
        contained_by {sphere {<0,0,0>,2.2}}
        max_gradient 100
        texture {
                onion
                texture_map {
                        [0 t2]
                        [1 t1]
                }
                scale 1.15
        }
        scale 0.5
}
#declare t3 =
texture {
        pigment {color rgb <2,0,0>}
        finish {ambient 0 reflection {0.6 metallic 0.5}}
}
#declare t4 =
texture {
        pigment {color rgb <1,1,0>}
        finish {emission 3}
}
#declare p = function {y+1+f2 (x,y,z)}
isosurface {
        function {p (x*0.8,y*0.8,z*0.8)}
        contained_by {box {<-1000,-200,-1000>,<1000,-1,1000>}}
        max_gradient 100
        texture {
                gradient y
                texture_map {
                        [0 t4]
                        [1 t3]
                }
                translate y*-0.249
        }
        translate y*0.6
}
// end of file
Norbert Kern
 Post a reply to this message 
 
Attachments: 
Download 'just for fun.jpg' (1180 KB)
 
  
Preview of image 'just for fun.jpg'
   
   
 | 
  | 
 | 
  | 
Very exciting! :-)
I still try to understand how it works in detail. ^^
Btw, my Povray told me:
|  Shutdown Warning: The maximum gradient found was 57.876, but
|  max_gradient of the isosurface was set to 100.000. Adjust
|  max_gradient to get a faster rendering of the isosurface.
> isosurface {
>         function {s (x,y,z)}
>         contained_by {sphere {<0,0,0>,2.2}}
>         max_gradient 100
> […]
I don't know how much faster the rendering would be with a lower
max_gradient.
Lars R.
 Post a reply to this message 
 | 
  | 
 | 
  | 
Le 14-04-22 12:24, Lars R. a écrit :
> Very exciting! :-)
>
> I still try to understand how it works in detail. ^^
>
>
> Btw, my Povray told me:
>
> |  Shutdown Warning: The maximum gradient found was 57.876, but
> |  max_gradient of the isosurface was set to 100.000. Adjust
> |  max_gradient to get a faster rendering of the isosurface.
>
>> isosurface {
>>          function {s (x,y,z)}
>>          contained_by {sphere {<0,0,0>,2.2}}
>>          max_gradient 100
>> […]
>
>
> I don't know how much faster the rendering would be with a lower
> max_gradient.
>
> Lars R.
>
Just try rendering using max_gradient 57.
You may also try replacing max_gradient as follow:
#declare Min_Factor = 0.6;
evaluate 57/Min_Factor, sqrt(1/Min_Factor), 0.7
Note: The documentation give the following formula for the second 
parameter, or overevaluation factor:
sqrt(found max_gradient/(found max_gradient * min_factor))
Whitch is the same as sqrt(1/min_factor)
Using evaluate is often faster than using max_gradient.
Alain
 Post a reply to this message 
 | 
  |