// blob with positive & negative strengths // m.miller 2.23.23 #version 3.8; global_settings { max_trace_level 5 max_intersections 64 assumed_gamma 2.2 ambient_light <.2,.2,.2> } //--- BG background { color rgb<.5,.55,.55> } //--- CAMERA camera { perspective up <0,1,0> right x*image_width/image_height location <0,10,-20> look_at <0,3,0> angle 60 } #declare M_gold_paint = material { texture{ pigment{ color rgb <1,.8,0.3>} finish { reflection {.2, .5 fresnel on } conserve_energy brilliance 5 ambient 0 brilliance 2 diffuse 1 phong .5 phong_size 60 metallic specular .5 roughness .1 } } } #declare M_floor_paint = material { texture{ pigment{ color rgb <.3,.3,.3>} finish { reflection {.2, .5 fresnel on } conserve_energy brilliance 5 ambient 0 brilliance 2 diffuse 1 phong .5 phong_size 60 metallic specular .5 roughness .1 } } } #declare light_color = color red .05 green .06 blue .08 ; light_source { <0,0,0> light_color * 15 area_light <50, 0, 0> <0, 0, 50> 16, 16 adaptive 1 jitter circular orient translate <-50, 100, -50> } #declare light_color = color red .15 green .1 blue .05 ; light_source { <0,0,0> light_color * 10 area_light <50, 0, 0> <0, 0, 50> 16, 16 adaptive 1 jitter circular orient translate <400, 100, 300> } // --- FOG #declare fog_color_tan = rgbft<0.35, 0.3, 0.25, 0.0, 0.0> * 1.3 ; #declare fog_color_gray = rgbft<0.17, 0.17, 0.17, 0.0, 0.0> * 2 ; #declare show_fog = true; #declare fog_color = fog_color_gray*2.5; #declare fog_distance = 300; #declare fog_turb = 2; #declare fog_depth = 0; #declare fog_octaves = 100; #declare f_offset = 0; #if (show_fog = true) fog { distance fog_distance color fog_color turbulence fog_turb turb_depth fog_depth octaves fog_octaves fog_offset f_offset } #end //--- floor plane { <0,1,0> 0 material{M_floor_paint}} #declare Str = 1.00; #declare Rad = 1.00; #declare blob_theshold = .58; #declare odd_shape = blob{ threshold blob_theshold sphere{ < 0,0,0>, Rad*3, Str scale <1,.7,1> translate <0,5,0>} sphere{ < 0,0,0>, Rad*3, Str scale <1,.7,1> translate <0,2,0>} sphere{ < 0,0,0>, Rad*3.5, Str scale <1,2,1> translate <0,1,0>} #declare cnt = 4; #declare ang = 90; #declare cur = 0; #declare org = <2,2,0>; #while (cur; #while (cur ,Rad*1, Str scale <.8,2,.8> translate org rotate y*new_ang} #declare cur = cur + 1; #end #declare cnt = 4; #declare ang = 90; #declare cur = 0; #declare org = <3.2,1,0>; #while (cur rotate y*new_ang} #declare cur = cur + 1; #end #declare cnt = 4; #declare ang = 90; #declare cur = 0; #while (cur ,Rad*1,-Str*2 scale <5,1,1> translate <0,2,0> rotate y*new_ang} #declare cur = cur + 1; #end //---negative strength sphere{ < 0,0,0>,Rad*1.2,-Str*2 scale <2,1.5,2> translate <0,6,0>} } #declare odd_shape2 = union { blob{ threshold blob_theshold sphere{ < 0,0,0>, Rad*4, Str scale <1,.7,1> translate <0,5,0>} #declare cnt = 4; #declare ang = 90; #declare cur = 0; #declare org = <2,2,0>; #while (cur; #while (cur rotate y*new_ang} #declare cur = cur + 1; #end //---negative strength sphere{ < 0,0,0>,Rad*1.2,-Str*2 scale <2,1,2> translate <0,5.5,0>} } sphere{ <0,0,0> , 1 scale <1.5,1.5,1.5> translate <0,6,0> } } #declare odd_shape3 = union { blob{ threshold blob_theshold sphere{ < 0,0,0>, Rad*4.5, Str scale <1,1.2,1> translate <0,5,0>} #declare cnt = 4; #declare ang = 90; #declare cur = 0; #declare org = <2,2,0>; #while (cur; #while (cur rotate y*new_ang} #declare cur = cur + 1; #end //---negative strength sphere{ < 0,0,0>,Rad*1.5,-Str scale <1,2,1> translate <0,5,0>} sphere{ < 0,0,0>,Rad*1.5,-Str scale <4,2,4> translate <0,1.3,0>} } #declare cnt = 4; #declare ang = 90; #declare cur = 0; #declare org = <2.4,0,0>; #while (cur translate <0,3.7,0> rotate y*new_ang} #declare cur = cur + 1; #end sphere{ <0,0,0> , 1 scale <.7,.9,.7> translate <0,7,0> } } object { odd_shape scale <.9,.9,.9> rotate<0,60,0> translate<-7,1,0> material{M_gold_paint} } object { odd_shape2 scale <1,1,1> rotate<0,0,0> translate<0,0,0> material{M_gold_paint} } object { odd_shape3 scale <1,1,1> rotate<0,0,0> translate<7,-2,0> material{M_gold_paint} }