// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_bola = texture{ pigment{ color rgb < 0, 0.5, 0 > } finish{ diffuse 0.8 ambient 0.4 } } #declare tx_box = texture{ pigment{ color rgb < 0, 0, 1 > } finish{ diffuse 1 ambient 0.1 } } #declare tx_boxdefeito = texture{ pigment{ color rgb < 0, 0, 0 > } finish{ diffuse 1 ambient 0.1 } } #declare tx_moldura = pigment { wood turbulence 0.05 scale <0.2, 0.2, 1> color_map { [0.1 rgb <0.42, 0.26, 0.15>] [0.9 rgb <0.52, 0.37, 0.26>] } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } #declare valores = array[10] #declare valores[0] = (1 - clock)*1+clock*15; #declare valores[1] = (1 - clock)*7+clock*8; #declare valores[2] = (1 - clock)*1023+clock*1024; #declare valores[3] = (1 - clock)*508+clock*512; #declare valores[4] = (1 - clock)*7+clock*12; #declare valores[5] = (1 - clock)*62+clock*65; #declare valores[6] = (1 - clock)*125+clock*128; #declare valores[7] = (1 - clock)*30+clock*34; #declare valores[8] = (1 - clock)*4+clock*8; #declare valores[9] = (1 - clock)*1+clock*2; #declare roleta = seed(115); #declare chao = box{ <-80,-80,-1>, <+40,+40,0> } #declare moldura_ext= box{ < 0, -13, -21 >, < 1, 20, 11> texture{ tx_moldura } } #declare moldura_int= box{ < -1, -12, -20 >, < 2, 19, 10> texture{ tx_moldura } } #macro bit(valor,defeito) #if (defeito = 0) union{ sphere{ < -0.4, -9.5, 8+valor >, 0.9 texture{ tx_bola } } box{ < 0, -9.1, 7.1 >, < 0, -9.9, 9.9 > texture{ tx_box } } } #else union{ box{ < 0, -9.1, 7.1 >, < 0, -9.9, 9.9 > texture{ tx_boxdefeito } } } #end #end #macro fileira(n,valor, prob) #local i=0; #local bit_atual = valor; #local r = int(valor); #local f = valor - r; #if(f > 0) #local round_sup = valor+1; #else #local round_sup = valor; #end union{ #while(i < n) #local def = (rand(roleta) < prob); #if ( mod(round_sup,2) = 1) #if (mod(bit_atual,2) != mod(round_sup,2)) object{bit(1-f,def) translate <0, i*3, 0>} #else object{bit(1,def) translate <0, i*3, 0>} #end #else #if (mod(bit_atual,2) != mod(round_sup,2)) object{bit(f,def) translate <0, i*3, 0>} #else object{bit(0,def) translate <0, i*3, 0>} #end #end #local bit_atual = int(bit_atual/2); #local round_sup = int(round_sup/2); #local i = i + 1; #end } #end #macro abaco(m, n, valores, prob) #local i = 0; union{ #while(i < m) object{fileira(n,valores[i], prob) translate<0,0,-i*3>} #local i = i + 1; #end difference{ box{ < 0, -12, 11 >, < 1, -10+3*n, 9-3*m> texture{ tx_moldura } } box{ < -1, -11, 10 >, < 2, -11+3*n, 10-3*m> texture{ tx_moldura } } } } #end #include "eixos.inc" union{ object{ abaco(10,10,valores, 0) } object{ chao translate<10, 10, -25> texture{ tx_xadrez } } } #include "camlight.inc" #declare centro_cena = < 0.00, 7.00, -4.00 >; #declare raio_cena = (1-clock)*60+clock*30; #declare dir_camera = < 21.00, (1-clock)*40+clock*0, 0.00 >; #declare dist_camera = (1-clock)*30+clock*10; #declare intens_luz = 2.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)