/* Its an oil burner. [ oOilBurner ] * You take a candle and place it below(not modelled) and pour some water * and fragrance oil in the top. Light the candle and leave for a while. * * I liked it and thought it simple enough to model. * I've used the scale 1pov = 1 cm. and it follows closely to this. * I still haven't managed the textrued( a circularly brushed silver) but * I'll look deeper into it. Enjoy. * * The Model is centered on <0,0,0>, and will have it's feet at the 0 level. (standing on a plane with normal = y ) * * by: Spider [- spider@bahnhof.se -] * * object { oOilBurner texture {...}} * union it with object{oOilWater } if you want with water * * Textures are _not_ pre-defined. * Avaiable textures are : tMetal1 //A texture for metal. works good for me. pMisColouring //A pigment with much transparency to add some stains mWater1 //A material water that works for me. Tweak as you want :-) nSpi // a normal to give a realistic brushed metal feeling. only used on very large image-sizes due to moire patterns nLine // a normal with linear brushing instead. Not as much Moire problems */ #declare legH = 14; //Top to bottom of the leg #declare legRadius = 4; #declare baseRadius = 5; #declare sphereRadius = 0.5; #declare discThick = 0.2; #declare bowlRadiusUp = 2.75; #declare bowlRadiusDown = 2.5; #declare oLeg = union { sphere { <0,0,0>, sphereRadius } sphere { <0,legH,0>, sphereRadius } cylinder { <0,0,0>,<0,legH,0>, sphereRadius/2 } translate y*(sphereRadius) } #declare oLegs = union { object{oLeg translate legRadius*x rotate y*(360/3)*1} object{oLeg translate legRadius*x rotate y*(360/3)*2} object{oLeg translate legRadius*x rotate y*(360/3)*3} } #declare oDisc = cylinder { <0,0.0,0>, <0,discThick,0>, baseRadius } #declare oBowl = merge { difference { sphere { <0,0,0>, bowlRadiusDown } sphere { <0,0,0>, bowlRadiusDown-discThick } box { <-2*bowlRadiusDown,0,-2*bowlRadiusDown>, <2*bowlRadiusDown,2*bowlRadiusDown,2*bowlRadiusDown> } } difference { cone { <0,bowlRadiusUp,0>,bowlRadiusUp <0,0,0>,bowlRadiusDown } cone { <0,bowlRadiusUp*2,0>,bowlRadiusUp-discThick <0,-0.00001,0>,bowlRadiusDown-discThick } } translate -y*bowlRadiusUp } #declare oOilBurner = union { object { oLegs } //The bottom. union { object { oDisc } difference { cylinder { <0,0,0>, <0,bowlRadiusDown*2/3,0>, bowlRadiusDown } cylinder { <0,-1,0>, <0,bowlRadiusDown*2,0>, bowlRadiusDown-discThick } } translate y*(sphereRadius*2) } union { //The top part. difference { //cut a hole object { oDisc } cylinder { <0,10,0>, <0,-10,0>, bowlRadiusUp } } object { oBowl translate y*discThick } translate y*(legH-discThick) } } #declare oOilWater = merge { difference { sphere { <0,0,0>, bowlRadiusDown-(discThick/2) } box { <-2*bowlRadiusDown,0,-2*bowlRadiusDown>, <2*bowlRadiusDown,2*bowlRadiusDown,2*bowlRadiusDown> } } difference { cone { <0,bowlRadiusUp,0>,bowlRadiusUp-(discThick/2) <0,-0.00001,0>,bowlRadiusDown-(discThick/2) } box { <-2*bowlRadiusUp,2*bowlRadiusUp,-2*bowlRadiusUp>, <2*bowlRadiusUp, bowlRadiusUp*0.6,2*bowlRadiusUp> } } translate -y*bowlRadiusUp translate y*discThick translate y*(legH-discThick) } #declare mWater1 = material { interior { ior 1.332 caustics 0.7 } texture { pigment { colour rgb <.39,.395,.40> filter .93 } finish { ambient <.14,.14,.15> reflection <0.13,0.13,0.13> //reflection 0.65 brilliance 5 diffuse 0.6 metallic specular 0.80 roughness 1/100 irid { 0.35 thickness .5 turbulence .45 } } normal { waves .125 frequency 5 #declare f = 0.0015; #declare f = 0.0045; scale translate <.78,0.1,0.34> } } } #declare nSpi = //this will look good in a closeup if thhe image is >2300 in both dirs...(or you'll have moire patterns) normal { spiral1 1, -0.2 rotate x*90 scale 1/28 } #declare nLine = //This is acceptable. normal { bumps -0.05 scale <1, 0.0001, 0.0001> scale 2/5 } #declare tMetal1 = texture { pigment { color rgb <0.95, 0.91, 0.91>*(8/9) } finish { ambient 0.25 brilliance 3 diffuse 0.4 metallic 3 specular 0.80 roughness 1/60 reflection 0.20 reflection_exponent 0.75 } } #declare pMisColouring = #local misf = 10/11; //how big areas.. pigment { bozo colour_map { [0 colour rgbf <1,1,1,1> ] [misf colour rgbf <1,1,1,1> ] [misf colour rgbf <.35,.25,.25,.6> ] [1 colour rgbf <.35,.25,.25,.6> ] } scale 2 }