// Persistence Of Vision 2.2 /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Image: swansong2 Background: Entry for the February 1995 Internet Raytrace Competition Render time: 800x600 with 0.3 anti-aliasing: 2 hours 19 minutes using POV 2.2 under Solaris 2.x on a 2-headed Sun SPARC 10 with 128 Meg of memory. Legal: Created by Samuel J. Goldstein. This file is Copyright (C) 1995. All rights reserved. You may use this source file to create the scene or use the components in your own scenes, with or without modifications, freely for NON-COMMERCIAL purposes. Please send me a copy of any scene (other than the original) that incorporates any significant part of this file. Commercial users please contact me for terms of use or information about my art services. I can be reached at: 4227 Sunnyside Ave, Los Angeles, CA 90066-5609 310-822-5426 goldstein@aerospace.aero.org =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ #include "colors.inc" #include "textures.inc" #declare stdcam=camera { location <16,4,1> direction <0, 0, 0.9> look_at <15.2,4,1.5> } #declare tvcam=camera { location <6,1,0> direction <0, 0, 1.5> look_at <0,1,0> } #declare shelfcam=camera { location <5.5,4.5,8> direction <0, 0, 1> look_at <0,4.5,9> } #declare upcam=camera { location <16,4,1> direction <0, 0, 1> look_at <15.7,4.3,1.5> } camera{stdcam} // close enough for gov't work. #declare feet = 1.0 #declare inches = 0.08 light_source {<16,4,1> color red 0.05 green 0.15 blue 0.25} light_source {<-1,3,6> color red 0.1 green 0.3 blue 0.5 spotlight point_at <-8,5.75,4> radius 80 falloff 89 tightness 1 } // Define some useful textures. #declare plate_texture = texture {finish{Shiny} pigment {White}} #declare floor_texture = texture{ tiles { texture {Pine_Wood scale <0.1,0.1,1>} tile2 texture {Yellow_Pine rotate <0,30,0> scale <0.8,1,1> } } scale <3*inches,1,6*feet> translate <15,0,0> } #declare beam_texture = texture {Pine_Wood scale <0.1,0.1,1>} #declare door_texture = texture {Yellow_Pine scale <0.2, 0.1, 1> rotate <90,0,0>} #declare speaker_texture = texture {finish {Dull} pigment {Gray05}} #declare resin_enclosure_texture = texture {finish {Shiny} pigment {Gray30}} #declare colors_tex = texture {pigment { wood color_map { [0, 0.1 color White color White] [0.1, 0.2 color LightBlue color LightBlue] [0.2, 0.3 color LimeGreen color LimeGreen] [0.4, 0.5 color Goldenrod color Goldenrod] [0.5, 0.6 color Gray30 color Gray30] [0.6, 0.7 color Yellow color Yellow] [0.7, 0.8 color Wheat color Wheat] [0.8, 0.9 color MidnightBlue color MidnightBlue] [0.9,1.001 color HuntersGreen color HuntersGreen]} rotate <90,0,0> } scale <0.1, 10, 0.1> } texture {pigment { bozo color_map { [0,0.7 color Clear color Clear] [0.7,1.001 color Clear color Black] } scale <0.01,0.01,0.01> } } // CD case #declare cd = union { box {<-2.7*inches,0,-0.25*inches>, <2.7*inches,5.25*inches,0.25*inches> texture {Glass} } box {<-2.68*inches,0.01,-0.48*inches>, <2.68*inches,5.23*inches,0.48*inches> } } #declare cd_collection = union { object {cd translate <0,0,0> texture {colors_tex translate <50,2,2>}} object {cd translate <0.01,0,0.5*inches> texture {colors_tex translate <4,7,7>}} object {cd translate <0.01,0,1*inches> texture {colors_tex translate <-7,2,-12>}} object {cd translate <0.0,0,1.5*inches> texture {colors_tex translate <14,9,-92>}} object {cd translate <-0.01,0,2*inches> texture {colors_tex translate <97,-2,3>}} object {cd translate <-0.01,0,2.5*inches> texture {colors_tex translate <11,-77,72>}} object {cd translate <0.0,0,3*inches> texture {colors_tex translate <53,6,23>}} object {cd translate <0.005,0,3.5*inches> texture {colors_tex translate <79,28,-72>}} object {cd translate <0.01,0,4*inches> texture {colors_tex translate <57,-32,12>}} object {cd translate <0.0,0,4.5*inches> texture {colors_tex translate <5,2,12>}} object {cd translate <0.0,0,5*inches> texture {colors_tex translate <15,-62,32>}} object {cd translate <0.01,0,5.5*inches> texture {colors_tex translate <7,1,37>}} object {cd translate <0,0,6*inches> texture {colors_tex translate <3,27,1>}} object {cd translate <-0.01,0,6.5*inches> texture {colors_tex translate <1,-65,-3>}} object {cd translate <-0.03,0,7*inches> texture {colors_tex translate <89,3,7>}} object {cd translate <0.03,0,7.5*inches> texture {colors_tex translate <74,2,-76>}} object {cd translate <0,0,8*inches> texture {colors_tex translate <7,51,4>}} scale <1.5,1.5,1.5> } // Basic Book #declare book = union { box {<-2.7*inches,0,-0.5*inches>, <2.7*inches,7.25*inches,-0.49*inches>} box {<-2.7*inches,0,0.49*inches>, <2.7*inches,7.25*inches,0.5*inches>} box {<-2.6*inches,0.01,-0.49*inches>, <2.7*inches,7*inches,0.49*inches> texture {pigment {color Wheat}}} cylinder {<0,0,0>,<0,7.25*inches,0>,0.5*inches scale <0.5,1,1> translate <2.7*inches,0,0>} } #declare books = union { object {book scale <1,1,1> translate <0,0,0> texture {colors_tex translate <0,0,5>}} object {book scale <1,1.2,1> translate <-0.02,0,1*inches> texture {colors_tex translate <0,8,-13>}} object {book scale <1,1.5,0.7> translate <0,0,1.85*inches> texture {colors_tex translate <-2,0,66>}} object {book scale <1,1,2> translate <-0.03,0,3.2*inches> texture {colors_tex translate <-7,0,-22>}} object {book scale <1,0.9,1.5> translate <-0.03,0,4.95*inches> texture {colors_tex translate <-7,0,27>}} object {book scale <1,1,1> translate <0.0,0,6.2*inches> texture {colors_tex translate <7,0,-47>}} object {book scale <1,1.1,1> translate <0.2,0,7.2*inches> texture {colors_tex translate <0,0,7>}} object {book scale <1,1.2,1> translate <0,0,8.2*inches> texture {colors_tex translate <0,0,-7>}} object {book scale <1,0.9,3> translate <-0.07,0,10.2*inches> texture {colors_tex translate <-7,0,27>}} object {book scale <1,0.9,3> translate <-0.03,0,13.2*inches> texture {colors_tex translate <0,0,27>}} object {book scale <1,0.9,3> translate <0.0,0,16.2*inches> texture {colors_tex translate <0,0,27>}} object {book scale <1,1.3,1> translate <0.01,0,18.2*inches> texture {colors_tex translate <0,0,-11>}} object {book scale <1,1.1,1.5> translate <0,0,19.45*inches> texture {colors_tex translate <0,0,22>}} object {book scale <1,1,1> translate <0,0,20.45*inches> texture {colors_tex translate <0,0,42>}} object {book scale <1,1.1,2> translate <0,0,21.95*inches> texture {colors_tex translate <0,0,11>}} object {book scale <1,1,1> translate <0,0,23.45*inches> texture {colors_tex translate <0,0,-2>}} } // candlestick #declare candlestick = merge { cone {<0,0,0>,2.5*inches,<0,0.75*inches,0>,1.2*inches} cone {<0,0.75*inches,0>,1.2*inches,<0,2*inches,0>,0.65*inches} cone {<0,2*inches,0>,0.65*inches,<0,3.5*inches,0>,1.2*inches} difference { cone {<0,3.5*inches,0>,1.2*inches,<0,5*inches,0>,0.65*inches} cylinder {<0,4*inches,0>,<0,6*inches,0>,0.5*inches} } union { cone {<0,4*inches,0>,0.5*inches,<0,12*inches,0>,0.4*inches} cone {<0,12*inches,0>,0.4*inches,<0,14*inches,0>,0.2*inches} texture {pigment {Red}} } triangle {<0,14*inches,0.1*inches>, <0,14.5*inches,0>,<0,14*inches,0> texture {pigment {Black}}} texture {Glass} } // basic television. #declare tv = union { // construct a TV case with nice curved corners. cylinder {<-1.2,0,0>,<-1.2,2.5,0>,0.5*inches} cylinder {<1.2,0,0>,<1.2,2.5,0>,0.5*inches} cylinder {<-1.2,2.5,0>,<1.2,2.5,0>,0.5*inches} cylinder {<-1.2,2.5,0>,<-1.2,2.5,0.5>,0.5*inches} cylinder {<1.2,2.5,0>,<1.2,2.5,0.5>,0.5*inches} sphere {<1.2,2.5,0>,0.5*inches} sphere {<-1.2,2.5,0>,0.5*inches} // cut out the screen area. difference { box {<-1.2,0,-0.5*inches>,<1.2,2.5,1*inches>} cylinder {<-1.2+2*inches,0.3,-0.5*inches>, <1.2-2*inches,0.3,-0.5*inches>,1*inches} cylinder {<-1.2+2*inches,2.5-2*inches,-0.5*inches>, <1.2-2*inches,2.5-2*inches,-0.5*inches>,1*inches} cylinder {<-1.2+2*inches,0.3,-0.5*inches>, <-1.2+2*inches,2.5-2*inches,-0.5*inches>,1*inches} cylinder {<1.2-2*inches,0.3,-0.5*inches>, <1.2-2*inches,2.5-2*inches,-0.5*inches>,1*inches} sphere {<-1.2+2*inches,0.3,-0.5*inches>,1*inches} sphere {<1.2-2*inches,0.3,-0.5*inches>,1*inches} sphere {<-1.2+2*inches,2.5-2*inches,-0.5*inches>,1*inches} sphere {<1.2-2*inches,2.5-2*inches,-0.5*inches>,1*inches} box {<-1.2+2*inches,0.3,-1>, <1.2-2*inches,2.5-2*inches,1>} } box {<-1.2-0.5*inches,2.47,0>,<1.2-0.5*inches,2.5+0.5*inches,0.5>} box {<-1.2-0.5*inches,0,0>,<-1.1,2.5+0.5*inches,0.5>} box {<1.1,0,0>,<1.2+0.5*inches,2.5+0.5*inches,0.5>} box {<-1.2,-0.375,0>,<1.2,0.2,0.5>} // add some knobs cylinder {<-0.8,0,-0.02>,<-0.8,0,0.2>,0.08} cylinder {<-0.55,0,-0.02>,<-0.55,0,0.2>,0.08} cylinder {<-0.3,0,-0.02>,<-0.3,0,0.2>,0.08} // add a back. Not too detailed, since it won't be seen except // at an angle. difference { box {<-1.2,0,0.5>,<1.2,2.5,1>} plane {-z,0 rotate <50,0,0> translate <0,0,0.5>} plane {-z,0 rotate <-40,0,0> translate <0,2.5,0.5>} plane {-z,0 rotate <0,40,0> translate <1.2,0,0.5>} plane {-z,0 rotate <0,-40,0> translate <-1.2,0,0.5>} } difference { box {<-0.8,0.5,0.5>,<0.8,2,1.5>} plane {-z,0 rotate <65,0,0> translate <0,0.5,0.75>} plane {-z,0 rotate <-70,0,0> translate <0,2,0.75>} plane {-z,0 rotate <0,65,0> translate <0.83,0,0.75>} plane {-z,0 rotate <0,-65,0> translate <-0.83,0,0.75>} } // put in the remote sensor and a logo panel // we won't image map the logo since it's not close enough to be // visible. box {<0.5,-.25,-0.02>,<1.1,-0.08,0.2> texture {finish {Shiny} pigment{color red 0.4}}} box {<-0.02,0.02,-0.6*inches>,<0.02,0.03,-0.4*inches> texture {Chrome_Texture}} // give the TV image that bluish CRT glow. box {<-1.2+2*inches,0.3,-0.49*inches>, <1.2-2*inches,2.5-2*inches,-0.489*inches> texture {Glass pigment {color red 0.9 green 0.9 blue 1 filter 1}} } // since this was a short month, I didn't have time to track down // the bug in the TV illumination. It's supposed to cast a bluish // glow all around the room. light_source {<0,1.75,-0.55*inches> color red 0 green 0.01 blue 0.2 } // whoops. Fix the origin. translate <0,0.375,0> texture {resin_enclosure_texture} } // declare some specific TVs with specific images. Declare them so we // can have multiple instances of each TV. We may not actually do this // in the final image. #declare tv1 = union { object {tv} box {<-1.04,-1.02,0.0>,<1.04,1.02,0.088> texture { finish{Luminous} pigment{ image_map {gif "atomboom1.gif" once} translate <-0.5,-0.5,0> } scale <2.08,2.04,1> } translate <0,1.695,0> } scale <1,1,1.5> // 2.875 high } #declare tv2 = union { object {tv} box {<-1.04,-1.02,0.0>,<1.04,1.02,0.088> texture { finish{Luminous} pigment{ image_map {gif "atomboom2.gif" once} translate <-0.5,-0.5,0> } scale <2.08,2.04,1> } translate <0,1.695,0> } scale <1,1,1.5> // 2.875 high } #declare tv3 = union { object {tv} box {<-1.04,-1.02,0.0>,<1.04,1.02,0.088> texture { finish{Luminous} pigment{ image_map {gif "atomboom3.gif" once} translate <-0.5,-0.5,0> } scale <2.08,2.04,1> } translate <0,1.695,0> } scale <0.67,0.67,1.2> // 1.926 high } #declare tv4 = union { object {tv} box {<-1.04,-1.02,0.0>,<1.04,1.02,0.088> texture { finish{Luminous} pigment{ image_map {gif "atomboom4.gif" once} translate <-0.5,-0.5,0> } scale <2.08,2.04,1> } translate <0,1.695,0> } scale <0.67,0.67,1.2> // 1.926 high } // Green-glass, corked bottle with red wine and no label. #declare bottle = union { difference { merge { cylinder {<0,0,0>,<0,7*inches,0>,1.5*inches} sphere {<0,0,0>,1.5*inches scale <1,1.5,1> translate <0,7*inches,0>} cylinder {<0,9*inches,0>,<0,12*inches,0>,0.5*inches} } cylinder {<0,8*inches,0>,<0,13*inches,0>,0.4*inches} cylinder {<0,0.5*inches,0>,<0,7*inches,0>,1.4*inches} sphere {<0,0,0>,1.4*inches scale <1,1.5,1> translate <0,7*inches,0>} texture {Glass3 pigment {color red 0.7 green 1 blue 0.85 filter 0.8}} } cylinder {<0,11*inches,0>,<0,13*inches,0>,0.4*inches texture {Cork}} cylinder {<0,0.5*inches,0>,<0,5*inches,0>,1.4*inches texture {pigment{color red 0.6}}} scale 1.5 } // Wine glass. #declare glass = merge { difference { sphere {<0,0,0>,2*inches scale <1,1.5,1>} sphere {<0,0,0>,1.9*inches scale <1,1.5,1>} plane {-y,-1.8*inches} translate <0,6*inches,0> } cylinder {<0,0,0>,<0,3*inches,0>,0.25*inches} sphere {<0,0,0>,2*inches scale <1,0.2,1>} texture {pigment {red 1 green 1 blue 1 filter 0.7}} } // tall ceramic bowl. #declare bowl = difference { sphere {<0,0,0>,1 scale <0.5,1,0.5>} sphere {<0,0,0>,1 scale <0.49,1,0.49>} box {<-1,0.8,-1>,<1,1.5,1>} box {<-1,-1.1,-1>,<-1,-0.9,-1>} translate <0,0.9,0> texture {pigment{image_map {tga "glaze1.tga" once map_type 2}}} } // The Rack System. Gotta cheat on this, because it would be altogether too // many primitives. #declare stereo = union { box {<-1,0,0>,<1,3,0.1> texture {pigment{image_map {tga "stereo.tga" once} translate <-0.5,0,0>} scale <2,3,0.1>}} box {<-1,0,0.1>,<1,3,2> texture {resin_enclosure_texture}} scale 0.75 } #declare booze = box {<-1,0,0>,<1,0.7,0.7> texture { pigment{image_map{tga "bottles.tga" once} translate <-0.5,0,0> scale <2,0.7,1>} } } #declare paper = box {<-4.25*inches,0,-5.5*inches>, <4.25*inches,0.01*inches,5.5*inches> texture {finish{Dull} pigment {bozo turbulence 0.15 color_map { [0, 0.95 color White color White] [0.95,1.001 color Black color Black]} } normal {ripples 0.2} scale <2,2,2> } } #declare rug = box {<-4,0,-2.5>,<4,0.01,2.5> texture { pigment { image_map {tga "rug.tga" once} translate <-0.5,-0.5,0> scale <8,5,1> rotate <90,0,0>} } } // To get good shadows, we actually build the speakers rather than cheating // like we did with the stereo. #declare speaker = union { difference { box {<-0.75,0,0>,<0.75,3,1.5>} plane {z,0 rotate <0,30,0> translate <-0.75,0,0.5*inches>} plane {z,0 rotate <0,-30,0> translate <0.75,0,0.5*inches>} plane {z,0 rotate <30,0,0> translate <0,3,0.5*inches>} cylinder {<0,0.85,-0.01>,<0,0.85,1>,0.6} cylinder {<-0.25,1.9,-0.01>,<-0.25,1.9,1>,0.3} cylinder {<0,0,-0.01>,<0,0,1>,1 scale <0.25,0.1,1> translate <0.25,2.5,0>} texture {resin_enclosure_texture} } difference { cylinder {<0,0.85,-0.01>,<0,0.85,1>,0.6} cone {<0,0.85,-0.02>,0.59,<0,0.85,4*inches>,0} } difference { cylinder {<-0.25,1.9,-0.01>,<-0.25,1.9,1>,0.3} cone {<-0.25,1.9,-0.02>,0.29,<-0.25,1.9,2*inches>,0} } difference { cylinder {<0,0,-0.01>,<0,0,1>,1 scale <0.25,0.1,1>} cone {<0,0,-0.02>,1,<0,0,1>,0 scale <0.25,0.1,1>} translate <0.25,2.5,0> texture {Silver1} } sphere {<0,0.85,4*inches>,2.7*inches} sphere {<-0.25,1.9,2*inches>,1.5*inches} sphere {<0.25,2.5,1>,0.5*inches texture {pigment {Black}}} box {<-0.65,2.7,-0.01>,<-0.40,2.9,0> texture {pigment {SlateBlue}}} texture {speaker_texture} } // Vertical door frame component. #declare doorframe = intersection { union { box {<-0.75*inches,0,2*inches>,<0.75*inches,7*feet,2.75*inches>} intersection { cylinder {<0,0,0>,<0,7*feet,0>,1 scale <2.5*inches,1,4*inches>} plane {z,2*inches} plane {-z,0} } } plane {y,0 rotate <45,0,0> translate <0,7*feet,0>} texture {door_texture} } // Top of the door frame. Lintel? #declare doortop = intersection { intersection { cylinder {<0,0,0.5>,<0,0,3.25>,1 scale <2.5*inches,4*inches,1>} plane {y,0} plane {-y,2*inches} } plane {-z,0 rotate <-45,0,0> translate <0,0,0.5>} plane {z,0 rotate <45,0,0> translate <0,0,3.25>} texture {door_texture rotate <90,0,0>} } // Shelf-making object of choice! #declare cinderblock= difference { box {<-3*inches,0,-2*inches>,<3*inches,12*inches,2*inches>} box {<-1.9*inches,1.1*inches,-3*inches>, <1.9*inches,5.45*inches,3*inches>} box {<-1.9*inches,6.55*inches,-3*inches>, <1.9*inches,10.9*inches,3*inches>} texture { pigment { granite color_map { [0, 0.8 color White color Gray10] [0.8, 1.001 color Gray30 color Gray40] } scale 0.25 } finish{specular 0.1 roughness 0.5 } } scale <1.5,1.5,1.5> } // Nice stained board for a shelf. Probably stolen .. uh ... liberated // from the neighborhood lumber company. #declare shelf = box {<-1,0,-3.5>,<1,1*inches,3.5> texture {DMFDarkOak scale <0.5,0.5,1>}} // One full shelf. #declare shelf_layer = union { object {cinderblock translate <-8*inches,0,0>} object {cinderblock rotate <0,3,0> translate <8*inches,0,0>} object {cinderblock rotate <0,-1,0> translate <-8*inches,0,-3*feet>} object {cinderblock rotate <0,2,0> translate <8*inches,0,-3*feet>} object {cinderblock rotate <0,4,0> translate <-8*inches,0,3*feet>} object {cinderblock rotate <0,-3,0> translate <8*inches,0,3*feet>} object {shelf translate <0,12*inches*1.5,0>} } // Ventillation grill. Should've used a bump-map. Oh well. #declare wallvent = union { intersection { box {<0,-6*inches,-12*inches>,<1*inches,6*inches,12*inches>} plane {x,0 rotate <0,30,0> translate <0,0,-12*inches>} plane {x,0 rotate <0,-30,0> translate <0,0,12*inches>} plane {x,0 rotate <0,0,30> translate <0,6*inches,0>} plane {x,0 rotate <0,0,-30> translate <0,-6*inches,0>} texture {pigment{Gray90}} } box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-10*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-9*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-8*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-7*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-6*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-5*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-4*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-3*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-2*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,-1*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,1*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,2*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,3*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,4*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,5*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,6*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,7*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,8*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,9*inches>} box {<-0.15*inches,-4.3*inches,-0.5*inches>, <0.15*inches,4.3*inches,0.5*inches> rotate <0,30,0> translate <1*inches,0,10*inches>} cylinder {<0,5.1*inches,-11.1*inches>, <1.3*inches,5.1*inches,-11.1*inches>,0.15*inches texture {pigment {Gray50}}} cylinder {<0,-5.1*inches,-11.1*inches>, <1.3*inches,-5.1*inches,-11.1*inches>,0.15*inches texture {pigment {Gray50}}} cylinder {<0,-5.1*inches,11.1*inches>, <1.3*inches,-5.1*inches,11.1*inches>,0.15*inches texture {pigment {Gray50}}} cylinder {<0,5.1*inches,11.1*inches>, <1.3*inches,5.1*inches,11.1*inches>,0.15*inches texture {pigment {Gray50}}} texture { pigment {Gray95}} } // Generic plate to use for power sockets and light switches. #declare wallplate = intersection { box {<-1.5*inches,-2.5*inches,-0.25*inches>,<1.5*inches,2.5*inches,0>} plane {-z,0 rotate <0,30,0> translate <-1.5*inches,0,0>} plane {-z,0 rotate <0,-30,0> translate <1.5*inches,0,0>} plane {-z,0 rotate <30,0,0> translate <0,2.5*inches,0>} plane {-z,0 rotate <-30,0,0> translate <0,-2.5*inches,0>} } // Light switch. #declare lightswitch = union { difference { object {wallplate} box {<-.27*inches,-.5*inches,-1*inches>, <.27*inches,0.5*inches,1*inches>} texture {plate_texture} } box {<-.25*inches,-.25*inches,-1*inches>, <.25*inches,.25*inches,1*inches> rotate <40,0,0> texture {plate_texture} } cylinder {<0,2*inches,-0.255*inches>,<0,2*inches,0>,0.15*inches texture {pigment {Gray50}}} cylinder {<0,-2*inches,-0.255*inches>,<0,-2*inches,0>,0.15*inches texture {pigment {Gray50}}} scale <1.5,1.5,1.5> } // Poster Art! Beatrice Dalle from Betty Blue! #declare picture1 = union { union { cylinder {<-13*inches,-19*inches,0>,<13*inches,-19*inches,0>, 1*inches} cylinder {<-13*inches,-19*inches,0>,<-13*inches,19*inches,0>, 1*inches} cylinder {<-13*inches,19*inches,0>,<13*inches, 19*inches,0>, 1*inches} cylinder {<13*inches,-19*inches,0>,<13*inches,19*inches,0>, 1*inches} sphere {<-13*inches,-19*inches,0>, 1*inches} sphere {<13*inches,-19*inches,0>, 1*inches} sphere {<-13*inches,19*inches,0>, 1*inches} sphere {<13*inches,19*inches,0>, 1*inches} texture {Brass_Texture} } box {<-12.1*inches,-18.1*inches,0>,<12.1*inches,18.1*inches,0.1> texture { pigment {image_map {gif "betty.gif" once interpolate 2} translate <-0.5,-0.5,0> scale <24*inches,36*inches,1>} } } scale <1.2,1.2,1> } // Poster Art! Nick Cave from The Trial CD! #declare picture2 = union { union { cylinder {<-16*inches,-16*inches,0>,<16*inches,-16*inches,0>,0.5*inches} cylinder {<-16*inches,-16*inches,0>,<-16*inches,16*inches,0>,0.5*inches} cylinder {<-16*inches,16*inches,0>,<16*inches, 16*inches,0>,0.5*inches} cylinder {<16*inches,-16*inches,0>,<16*inches,16*inches,0>,0.5*inches} sphere {<-16*inches,-16*inches,0>, 0.5*inches} sphere {<16*inches,-16*inches,0>, 0.5*inches} sphere {<-16*inches,16*inches,0>, 0.5*inches} sphere {<16*inches,16*inches,0>, 0.5*inches} texture {Chrome_Texture} } box {<-15.6*inches,-15.6*inches,0>,<15.6*inches,15.6*inches,0.1> texture { pigment {image_map {gif "trial.gif" once interpolate 2} translate <-0.5,-0.5,0> scale <32*inches,32*inches,1>} } } scale <1.2,1.2,1> } // Poster Art! The Look. #declare picture3 = union { union { cylinder {<-9*inches,-9*inches,0>,<9*inches,-9*inches,0>, 0.5*inches} cylinder {<-9*inches,-9*inches,0>,<-9*inches,9*inches,0>, 0.5*inches} cylinder {<-9*inches,9*inches,0>,<9*inches, 9*inches,0>, 0.5*inches} cylinder {<9*inches,-9*inches,0>,<9*inches,9*inches,0>, 0.5*inches} sphere {<-9*inches,-9*inches,0>, 0.5*inches} sphere {<9*inches,-9*inches,0>, 0.5*inches} sphere {<-9*inches,9*inches,0>, 0.5*inches} sphere {<9*inches,9*inches,0>, 0.5*inches} texture {Chrome_Texture} } box {<-8.6*inches,-8.6*inches,0>,<8.6*inches,8.6*inches,0.1> texture { pigment {image_map {gif "bigeye.gif" once interpolate 2} translate <-0.5,-0.5,0> scale <16*inches,16*inches,1>} } } scale <1.2,1.2,1> } // Poster Art! Kev Mogen from Faux Pas, Grass, and The Subterrainians #declare picture4 = union { union { cylinder {<-16*inches,-16*inches,0>,<16*inches,-16*inches,0>, 1*inches} cylinder {<-16*inches,-16*inches,0>,<-16*inches,16*inches,0>, 1*inches} cylinder {<-16*inches,16*inches,0>,<16*inches, 16*inches,0>, 1*inches} cylinder {<16*inches,-16*inches,0>,<16*inches,16*inches,0>, 1*inches} sphere {<-16*inches,-16*inches,0>, 1*inches} sphere {<16*inches,-16*inches,0>, 1*inches} sphere {<-16*inches,16*inches,0>, 1*inches} sphere {<16*inches,16*inches,0>, 1*inches} texture {Chrome_Texture} } box {<-15.1*inches,-15.1*inches,0>,<15.1*inches,15.1*inches,0.1> texture { pigment {image_map {tga "kev.tga" once interpolate 2} translate <-0.5,-0.5,0> scale <32*inches,32*inches,1>} } } scale <1.2,1.2,1> } // The whole room. Modern-style place. #declare room= union { // Walls // East/West box {<-8,0,-0.2>,<17,9,0.2>} box {<-8,0,9.8>,<0,9,10.2>} box {<0,0,11.8>,<17,9,12.2>} // North/South difference { box {<-0.2,0,0>,<0.2,12.5,12>} // door box {<-0.3,-1,0.5>,<0.3,7,3.25>} } object {doorframe rotate <0,180,0> translate <0,0,3.25> } object {doorframe translate <0,0,0.5> } object {doortop translate <0,7*feet,0>} box {<16.8,0,0>,<17.2,9,12>} box {<-8.2,0,0><-7.8,9,10>} // moulding cylinder {<0,0,0>,<17,0,0>,3*inches scale <1,1,1/3> translate <0,0,11.8>} cylinder {<0,0,0>,<0,0,0.5>,3*inches scale <1/3,1,1> translate <0.2,0,0>} cylinder {<0,0,3.25>,<0,0,12>,3*inches scale <1/3,1,1> translate <0.2,0,0>} // Floor union { box {<0,-1,0>,<17,0,12>} box {<-8,-1,0>,<0,0,10>} texture {floor_texture} } // wall-lining beams box {<0,8.75,0>,<0.5,9.25,12> texture {beam_texture}} box {<0,8.75,11.75>,<17,9.25,13> texture {beam_texture}} box {<0,12,11.75>,<17,12.5,12.2> texture {beam_texture}} // roofing beams was rotated -9.24 box {<-0.25,0,0>,<0.25,0.5,16> rotate <-14,0,0> translate <0.1,9,0> texture {beam_texture}} box {<-0.25,0,0>,<0.25,0.5,16> rotate <-14,0,0> translate <4,9,0> texture {beam_texture}} box {<-0.25,0,0>,<0.25,0.5,16> rotate <-14,0,0> translate <8,9,0> texture {beam_texture}} box {<-0.25,0,0>,<0.25,0.5,16> rotate <-14,0,0> translate <12,9,0> texture {beam_texture}} box {<-0.25,0,0>,<0.25,0.5,16> rotate <-14,0,0> translate <16,9,0> texture {beam_texture}} box {<0,9.25,11.75>,<0.35,12,12.5> texture {beam_texture}} box {<3.75,9.25,11.75>,<4.25,12,12.5> texture {beam_texture}} box {<7.75,9.25,11.75>,<8.25,12,12.5> texture {beam_texture}} box {<11.75,9.25,11.75>,<12.25,12,12.5> texture {beam_texture}} box {<15.75,9.25,11.75>,<16.25,12,12.5> texture {beam_texture}} // windows box {<0.25,9.25,11.8>,<3.75,12,12> texture {Glass}} box {<4.25,9.25,11.8>,<7.75,12,12> texture {Glass}} box {<8.25,9.25,11.8>,<11.75,12,12> texture {Glass}} box {<12.25,9.25,11.8>,<15.75,12,12> texture {Glass}} box {<16.25,9.25,11.8>,<18.75,12,12> texture {Glass}} //roof was rotate -9.24 box {<0,0,0>,<17,1,16> rotate <-14,0,0> translate <0,9.5,0> texture {Yellow_Pine rotate <0,90,0> scale <2,1,1>}} texture {finish{Dull} pigment {White}} } // And then we put it all together! object {room} object {picture1 rotate <0,90,0> translate <0.2,6,8>} object {picture2 translate <9.5,6,11.75>} object {picture3 translate <5,6,11.75>} object {picture4 rotate <0,90,0> translate <-7.8,6,3>} object {lightswitch rotate <0,90,0> translate <0.2,4.5,3.75>} object {wallvent rotate <180,0,0> translate <0.2,10,10.5>} object {speaker rotate <0,-90,0> translate <1.7*feet,0,3.5*feet>} object {speaker scale <-1,1,1> rotate <0,-35,0> translate <3.5*feet,19*inches,10*feet>} object {bowl rotate <0,30,0> translate <1.5*feet,38*inches,5.25*feet>} object {rug translate <7,0,6.5>} object {tv1 rotate <0,-8,0> translate <7,19*inches,10>} object {tv2 rotate <0,-90,0> translate <-5,0,2.5>} object {tv3 rotate <0,-35,0> translate <11.2,1.926,7.85>} object {tv4 rotate <0,-1,0> translate <11,0,7.75>} object {shelf_layer translate <1.2*feet,0,8*feet>} object {shelf_layer translate <1.2*feet,19*inches,8*feet>} object {shelf_layer rotate <0,90,0> translate <6,0,10.7>} object {shelf_layer rotate <0,-90,0> translate <13,0,10.7>} object {stereo rotate <0,-37,0> translate <1.7,37.8*inches,8.5>} object {bottle translate <1.7,38*inches,7.3>} object {glass translate <1.7,38*inches,7>} object {glass rotate <0,0,-90> rotate <0,30,0> translate <0.2,40*inches,7>} object {glass translate <3.5*feet,3+19*inches,10*feet+6*inches>} object {candlestick translate <11,19*inches,10+4*inches>} object {candlestick translate <11+3*inches,19*inches,10+6*inches>} object {paper rotate <0,30,0> translate <5,0,3>} object {paper rotate <0,-20,0> translate <5.3,0,3.2>} object {paper rotate <0,80,0> translate <6,0,3.5>} object {paper rotate <0,-32,0> translate <7,0,3.1>} object {paper rotate <0,-12,0> translate <5.3,0.01,5.2>} object {paper rotate <0,36,0> translate <6,0.01,6>} object {paper rotate <0,-2,0> translate <5,0,2.1>} object {paper rotate <0,22,0> translate <11.3,19*inches,11>} object {cd_collection translate <1.5*feet,0,9>} object {cd_collection translate<1.5,0,8>} object {cd_collection scale <1,1,-1> translate <1.4,19*inches,10>} object {cd_collection translate <1.4,19*inches,8>} object {cd_collection translate <1.4,7.8*inches,9>} object {cd_collection translate <1.4,7.8*inches,8>} object {books scale <1,1.5,1> translate <1.5,19*inches,5.5>} object {books scale <1,1.5,-1> translate <1.5,0,7.5>} background{color SkyBlue}