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

#declare c0 = 0.00;
#declare c1 = 0.50;
#declare c2 = 1.00;

#include "metals.inc"
#include "metals.inc"

  

  

  

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

#declare raio = 2.000;

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

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

#declare cinza = 
  texture {
    pigment {color rgb < 0.80, 0.80, 0.80 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare marrom =
  texture {
    pigment {color rgb < 0.90, 0.65, 0.20 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 } 
  }

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

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

#declare verde = 
  texture {
    pigment { color rgb < 0.10, 0.85, 0.10 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare vermelho = 
  texture {
    pigment { color rgb < 0.85, 0.05, 0.10 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare vermelho_chique =
  texture {
    pigment { 
      bozo
      color_map {
 [0.5 color rgb < 0.85, 0.05, 0.10 > ]
 [0.7 color rgb < 0.10, 0.85, 0.10 > ]
      }
    }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare bolha =
blob {
  threshold 0.5
  
  sphere {<0,0,0> , 3 , 1 } 
  sphere {<0,3,0> , 5 , 1 }
  sphere {<3,-2.5,-0.5> , 4 , 1 }
  sphere {<1,-1,3>, 4, 1.5}
  texture {azul}
}

#declare sorriso =
blob {
  threshold 0.5
  
  sphere {<0,0,0> , 3 , 1 } 
  sphere {<0,3,0> , 5 , -1 }
  sphere {<0,-2,0>, 2 , -1 }
  rotate<-90,0,0>
  translate<3.5,0,1>
  texture {vermelho}
}

#declare boneco =
blob {
  threshold 0.5
  
  sphere {<0,0,0> , 4 , 1 } 
  sphere {<0,3,1> , 2 , 1 }
  sphere {<0,-3,1> , 2 , 1 }
  sphere {<0,3,-2> , 2 , 1 }
  sphere {<0,-3,-2> , 2 , 1 }
  sphere {<0,0,3.7>, 2 , 1 }
  texture {verde}
}

#declare factose =
blob {
  threshold 0.5
  
  sphere {<0,0,0> , 7 , 1 } 
  sphere {<0,4,1> , 2 , 1 }
  sphere {<0,-4,1> , 2 , 1 }
  sphere {<-1,4,-2> , 2 , 1 }
  sphere {<0,-4,-2> , 2 , 1 }
  texture {azul}
}

#declare buraco =
blob {
  threshold 0.5
  sphere {<0,0,0> ,8 , 1 } 
  sphere {<0,4,1> , 2.5 , 1 }
  sphere {<0,-4,1> , 2.5 , 1 }
  sphere {<-1,4,-2> , 2.5 , 1 }
  sphere {<0,-4,-2> , 2.5 , 1 }
  
  sphere {<0,3,1> , 2 , -0.8 }
  sphere {<0,-3,1> , 2 , -0.8 }
  sphere {<0,3,-2> , 2 , -0.8 }
  sphere {<0,-3,-2> , 2 , -0.8 }
  sphere {<0,0,3.7>, 2 , -0.8 }
  texture {azul}
}

union{
  object{
    buraco
    translate<0,4,0>
  }

  object{
    boneco
    rotate<90,00,0>
    translate<0,2.9,4.8>
  }
  translate<0,5,0>
}

union{
  union{
    difference{
      object{
        factose
        scale<0,2,2>
      }
      object{
        boneco
        translate<4,0,-5>
      }
    }

    object{
      bolha
      rotate<0,0,-25>
    }
    object{sorriso}
    sphere{
      <2.8,-2,4>, 0.5
      texture{branco}
    }
    sphere{
      <2.8,0.7,4>, 0.5
      texture{branco}
    }
    translate<0,-7,6>
  }

  union{
    object{
      bolha
      rotate<0,0,-20>
    }
    object{sorriso}
    sphere{
      <2.8,-2,4>, 0.5
      texture{branco}
    }
    sphere{
      <2.8,0.7,4>, 0.5
      texture{branco}
    }
    translate<0,-7,20>
  }

  object{
    boneco
    translate<-4,10,20>
  }
}

// Original camera parameters:
// #local cam_ctr = <0.00,-1.00,10.00>
// #local cam_vec = (<35.00,-10.00,20.00>-<0.00,-1.00,10.00>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<0.00,-1.00,10.00>,<10,10,10>,20.0,z,1.0)