// Example of constraining media to an isosurface built on // the helix1 function. // #version 3.7; global_settings { assumed_gamma 1 ambient_light srgb <1,1,1> // radiosity{ // pretrace_start 0.04 // pretrace_end 0.01 // count 200 // recursion_limit 3 // nearest_count 10 // error_bound 0.5 // media on // } } #declare Grey05 = srgbft <0.05,0.05,0.05,0,0>; background { color Grey05 } #declare Camera00 = camera { perspective location <2.7,2.7,-4.001> sky <0,1,0> angle 35 right x*(image_width/image_height) look_at <0,0,0> } #declare White = srgbft <1,1,1,0,0>; #declare Light00 = light_source { <50,150,-250>, White } #declare Gun_Powder = srgbft <0.2549,0.2588,0.3412,0,0>; #declare Plane00 = plane { <0,1,0>, -1 texture { pigment { color Gun_Powder } normal { granite } } } #declare Red = srgbft <1,0,0,0,0>; #declare CylinderX = cylinder { <-1,0,0>, <1,0,0>, 0.01 pigment { color Red } } #declare Green = srgbft <0,1,0,0,0>; #declare CylinderY = cylinder { <0,-1,0>, <0,1,0>, 0.01 pigment { color Green } } #declare Blue = srgbft <0,0,1,0,0>; #declare CylinderZ = cylinder { <0,0,-1>, <0,0,1>, 0.01 pigment { color Blue } } #include "functions.inc" #declare F_Helix1 = function { f_helix1(x,y,z,1,6,0.1,0.6,1,1,0) } #declare F_Capsule = function (x,y,z) { f_sphere(x,y+0.8-max(0,min(1,y*0.625+0.5))*1.6,z,0.12) } #declare IsoSpring = isosurface { function { F_Helix1(x,y,z) } contained_by { box { <-1.2,-1.2,-1.2>,<1.2,1.2,1.2> } } threshold 0 accuracy 0.001 max_gradient 4.1 all_intersections } #declare IsoCapsule = isosurface { function { F_Capsule(x,y,z) } contained_by { box { <-1.2,-1.2,-1.2>,<1.2,1.2,1.2> } } threshold 0 accuracy 0.001 max_gradient 4.1 all_intersections } #declare Black = srgbft <0,0,0,0,0>; #declare Color_0 = srgbft <0,0,0,0,0>; #declare Orange = srgbft <1,0.5,0,0,0>; #declare Yellow = srgbft <1,1,0,0,0>; #declare DensityColorMap = color_map { [ 0.00 Black ] [ 0.15 Orange ] [ 0.30 Red ] [ 0.75 Yellow ] [ 1.00 Black ] } #declare FnAgate = function { pattern { agate poly_wave 4.0 } } #declare FnDensity = function (x,y,z) { FnAgate(x*10,y*10,z*10)*max(0,F_Helix1(x,y,z)*-20.0) } #declare Density0 = density { function { FnDensity(x,y,z) } color_map { DensityColorMap } } #declare Media0_emission = rgbft <5,5,5,0,0>*1.0; #declare Media0 = media { method 3 samples 500,500 confidence 0.9 variance 0.0078125 jitter 0 aa_level 4 aa_threshold 0.1 emission Media0_emission density { Density0 } } #declare Interior0 = interior { ior 1 media { Media0 } } #declare Finish0 = finish { ambient srgb <0,0,0> diffuse 0.6 emission srgb <0,0,0> phong 0.3 } #declare Clear90 = srgbft <1,1,1,0.9,0>; #declare Texture0 = texture { pigment { color Clear90 } finish { Finish0 } } #declare Green_Mist = srgbft <0.7961,0.8275,0.6902,0,0>; #declare Texture1 = texture { pigment { color Green_Mist } finish { Finish0 } } #declare Material0 = material { texture { Texture0 } interior { Interior0 } } #declare Material1 = material { texture { Texture1 } } #declare Obj0 = object { IsoSpring material { Material0 } hollow } #declare Obj1 = object { IsoCapsule material { Material1 } hollow } //--- camera { Camera00 } light_source { Light00 } object { CylinderX } object { CylinderY } object { CylinderZ } object { Obj0 } object { Obj1 } object { Plane00 }