// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.10, 0.30, 0.30 > } #declare tx_castelo = texture { pigment { color rgb < 0.66, 0.66, 0.66 > } finish { diffuse 0.8 ambient 0.1 specular 0.1 roughness 0.005 } } #declare tx_cristal = texture { pigment { color rgbt < 0.88, 0.99, 0.99, 0.7 > } finish { diffuse 0.8 ambient 0.1 specular 0.3 roughness 0.05 } } #declare num_blocos = 5; #declare castelo = union { object { box { < 0, 0, 0 > < 1, 1, 0.9 > texture { tx_castelo } } } #declare i=1; #while (i < 1/(num_blocos*2-1), 1/(num_blocos*2-1), 0.1 > texture { tx_castelo } } translate < i*2/(num_blocos*2-1), 0, 0.9 > } object { box { < 0, 0, 0 > < 1/(num_blocos*2-1), 1/(num_blocos*2-1), 0.1 > texture { tx_castelo } } translate < (num_blocos-1)*2/(num_blocos*2-1), i*2/(num_blocos*2-1), 0.9 > } object { box { < 0, 0, 0 > < 1/(num_blocos*2-1), 1/(num_blocos*2-1), 0.1 > texture { tx_castelo } } translate < (num_blocos-i-1)*2/(num_blocos*2-1), (num_blocos-1)*2/(num_blocos*2-1), 0.9 > } object { box { < 0, 0, 0 > < 1/(num_blocos*2-1), 1/(num_blocos*2.0-1), 0.1 > texture { tx_castelo } } translate < 0, (num_blocos-i-1)*2/(num_blocos*2-1), 0.9 > } #declare i=i+1; #end } #declare torre = cylinder { < 0.5, 0.5, 0 > < 0.5, 0.5, 1 > 0.5 texture { tx_cristal } interior { ior 1.5 } } #declare aleatorio=-1; #macro desenhar_castelo(minimo, modelo) #if (aleatorio = -1) #declare aleatorio = seed(modelo); #end union{ #local altura = 0.5 + rand(aleatorio); #if (rand(aleatorio) < 0.5) object { castelo scale < 1, 1, altura > } #local restante=1; #while (restante >= minimo) #local tamanho = minimo + (restante - minimo) * rand(aleatorio); object { desenhar_castelo(minimo / tamanho, modelo) scale < tamanho*0.8*(1-3/(num_blocos*2-1)), tamanho*0.8*(1-3/(num_blocos*2-1)), tamanho*0.8*(1-3/(num_blocos*2-1)) > translate < 1 - 1.5/(num_blocos*2-1) - restante*(num_blocos*2-4)/(num_blocos*2-1), (1-tamanho)/2, altura*0.9 > } #local restante = restante - tamanho; #end #else object { torre scale < 1, 1, altura > } #end } #end #declare pos_castelo = < -0.5, -0.5, 0.5 >; #declare modelo = 8740; union{ object { desenhar_castelo(0.1, modelo) translate pos_castelo } } #include "camlight.inc" #declare centro_cena = < 0, 0, 1 >; #declare raio_cena = 1.5; #declare dir_camera = < 0.1, 1, 0.3 >; #declare dist_camera = 100.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)