| 
  | 
This is very simple, but it just worked so well.  It will render by itself, 
showing it's parameters, or you can #include it into your scene.
Pass in any real number to use as a random seed.
---
#include "functions.inc"
#macro IsoRoid(s)
 #declare R=seed(s);
 #declare SmallAmplitude=rand(R)/10+.1;
 #declare SmallFrequency=rand(R)*5+4;
 #declare BigAmplitude=rand(R)/3+0.5;
 #declare BigFrequency=rand(R)+1;
 union{
 isosurface{
    function {
     f_sphere(x, y, z, 1.6)
     - f_noise3d(x * SmallFrequency, y * SmallFrequency, z * SmallFrequency) 
* SmallAmplitude
     + f_noise3d(x * BigFrequency, y * BigFrequency, z * BigFrequency) * 
BigAmplitude
    }
 max_gradient 10
 contained_by { box { -3, 3 } }
 pigment{color rgb 1}
 scale rand(R)+.4
  }
#ifndef(White)
 text{ttf "Arial.ttf" concat("Small F",str(SmallFrequency,8,3)," 
A",str(SmallAmplitude,8,3)) 0.01,0
  scale .4
  translate <-2,-3,0>
  pigment{color rgb<0,1,0>}
  finish{ambient 1}
 }
 text{ttf "Arial.ttf" concat("Big F",str(BigFrequency,8,3)," 
A",str(BigAmplitude,8,3)) 0.01,0
  scale .4
  translate <-2,-3.5,0>
  pigment{color rgb<1,0,0>}
  finish{ambient 1}
 }
#end
}
 #end
#ifndef(White)
 #declare A=-3;
 #declare Ast=seed(1);
 #while (A<=3)
  #declare Place=<A*6,7,0>;
  object{IsoRoid(A) translate Place}
  #declare Place=<A*6,0,0>;
  object{IsoRoid(A+10) translate Place}
  #declare Place=<A*6,-7,0>;
  object{IsoRoid(A+20) translate Place}
  #declare A=A+1;
 #end
 light_source{<-1,1,-1>*100 color rgb 1}
 camera{
  location<0,0,-30> look_at<0,0,0>
  up y*.9
  right x*1.6
 }
#end
 Post a reply to this message 
 | 
  |