// Last edited on DATE TIME by USER
// Processed by remove-cam-lights






  

  

  

  





  background{ color rgb < 0.75, 0.80, 0.85 > }

#declare branco = 
  texture {
    pigment { color rgb < 1.00, 1.00, 1.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare verde = 
  texture {
    pigment { color rgb < 0.00, 1.00, 0.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare azul = 
  texture {
    pigment { color rgb < 0.00, 0.00, 1.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare vermelho = 
  texture {
    pigment { color rgb < 1.00, 0.00, 0.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare bla = 
  texture {
    pigment { color rgb < 0.50, 0.20, 0.30 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare quadriculado =
  texture {
    pigment { checker color rgb < 1.00, 0.00, 0.00 > 
        color rgb < 1.00, 1.00, 1.00 >
    }
  }

#declare fundo =
  plane { z,0
 translate -5*z
 texture { quadriculado }
  }

#declare prata =
  texture {
    pigment { color rgb < 0.70, 0.70, 0.70 > }
    finish {  ambient 0.3
  diffuse 0.2
  specular 0.3 roughness 0.005 
  reflection 0.2 
    }
  }

#declare dourado =
  texture {
    pigment { color rgb < 1.00, 0.80, 0.00 > 
   alpha 0.7
 }
    finish {  ambient 0.3
  diffuse 0.2
  specular 0.3 roughness 0.005 
  reflection 0.2 
    }
  }

object {fundo}
#declare sbroble =
  blob {
    threshold .65
    sphere { <.5,0,0>, .8, 1 texture {azul} }
    sphere { <-.5,0,0>,.8, 1 texture {verde} }
    sphere { <0,0,1>,1.5, 1 texture {vermelho} }
    cylinder{<0,0,1>,<0,0,-2>,0.5,1 texture{azul}}
    sphere { <0,0,-2>,1.5, 1 texture {prata} }
    finish { phong 1 }
  }

#declare boxP1=<2,2,2>;
#declare boxP2=<-2,-2,-2>;

#macro getCylinder(p,q,r)
 cylinder{
  p,q,r
  texture{azul}
 } 
#end

#declare num = seed(123456);

#macro galho(p,vet,L,r)

 #if((r > 0.01) & ((p+L*vet).x < boxP1.x) & ((p+L*vet).y < boxP1.y) & ((p+L*vet).z < boxP1.z)
      & ((p+L*vet).x > boxP2.x) & ((p+L*vet).y > boxP2.y) & ((p+L*vet).z > boxP2.z))
  union{
   object{
    getCylinder(p,p+L*vet,r)
   }
   galho(p+L*vet,vnormalize((vet + <rand(num)-0.5,rand(num)-0.5,rand(num)-0.5>)),L * 0.9, r * 0.8)
   galho(p+L*vet,vnormalize((vet + <rand(num)-0.5,rand(num)-0.5,rand(num)-0.5>)),L * 0.9, r * 0.8)
   galho(p+L*vet,vnormalize((vet + <rand(num)-0.5,rand(num)-0.5,rand(num)-0.5>)),L * 0.9, r * 0.8)
  }
 #else
  object{
   sphere { 
    p, r
    texture {vermelho} 
   }
  }
 #end
#end


union{
 object{
  box{boxP1,boxP2
  texture{dourado} 
  }
 }
 object{
  galho(<0,0,-1.9>,<0,0,1>,1,0.2)
 }
}


// Original camera parameters:
// #local cam_ctr = <0,0,0>
// #local cam_vec = vrotate(<5.00,5.00,0.00>,20*z)
// #local cam_sky = z

#include "camlight.inc"
camlight(<0,0,0>,<10,10,10>,20.0,z,1.0)