#include"colors.inc" #include"shapes.inc" #include"textures.inc" #include "woods.inc" #default { pigment { color White } } background {color LightBlue} light_source { <100, 200, -100> color White*1.0 parallel } /* light_source{ <10, 10, -20> color White*1.4 } light_source{ <-30, -20, -30> color White*0.9 } light_source{ <-30, 20, 30> color White*0.9 } */ #declare Sky = sky_sphere { pigment { wrinkles color_map{ [ 0.3 color rgb<0.3, 0.4, 1.2>] [ 0.9 White ] } scale <1, 0.2, 0.2> } } //////////////////////////////////////////////////// Tables #macro TableLowA (PX,PZ) merge{ object{ Cube scale <1.0*PX, 0.1, 1.0*PZ> translate <0.0, -0.9, 0.0> } } #end #macro TableHighA (PX,PZ) merge{ object{ Cube scale <1.0*PX, 0.1, 1.0*PZ> translate <0.0, 0.1, 0.0> } } #end #macro TableLowB (PX,PZ) merge{ object{ Disk_Y scale <1.5*PX, 0.1, 1.5*PZ> translate <0.0, -0.95, 0.0> } } #end #macro TableHighB (PX,PZ) merge{ object{ Disk_Y scale <1.5*PX, 0.1, 1.5*PZ> translate <0.0, -0.95, 0.0> translate <0,1.1,0> } } #end ////////////////////////////////// Legs for tables #macro TableLowLegA (W,L) difference{ object{ Cube scale translate <0.0, -0.0, 0.0> } object{ Cube scale <1.3*W, 1.5, L-0.25> translate <0.0, -0.1, 0.0> } object{ Cube scale translate <0.0, -0.1, 0.0> } translate <0.0, -2.0, 0.0> } #end #macro TableHighLegA (W,L) difference{ object{ Cube scale translate <0.0, -0.0, 0.0> } object{ Cube scale <1.3*W, 2, L-0.25> translate <0.0, -0.1, 0.0> } object{ Cube scale translate <0.0, -0.1, 0.0> } translate <0.0, -1.5, 0.0> } #end #declare TableLowLegB = merge{ object{ Disk_Y scale <0.1, 1, 0.1> translate <0.0, -1.1, 0.0> } object{ Disk_Y scale <1, 0.07, 1> translate <0.0, -2.0, 0.0> } translate <0.0, -0.95, 0.0> } #declare TableHighLegB = merge{ object{ Disk_Y scale <0.1, 1.5, 0.1> translate <0.0, -0.5, 0.0> } object{ Disk_Y scale <1, 0.07, 1> translate <0.0, -2.0, 0.0> } translate <0.0, -0.95, 0.0> } #macro TableC (W,L) difference{ object{ Cube scale translate <0.0, -1.0, 0.0> } object{ Cube scale translate <0.0, -0.4, 0.0> } object{ Cube scale translate <0.0, -1.7, 0.0> } } #end #declare TableC1 = merge{ object{ TableC (1, 1) translate <0.0, -0.9, 0.0>}} #declare TableC2 = merge{ object{ TableC (2, 1) translate <0.0, -0.9, 0.0>}} #declare TableC3 = merge{ object{ TableC (2, 2) translate <0.0, -0.9, 0.0>}} ///////////////////////////////////////////////////////Chairs #declare ChairA1 = merge{ object{ Cube scale <1.0, 0.1, 1.0> translate <0.0, -0.9, 0.0> } object{ Cube scale <1.0, 1.5, 0.1> translate <0.0, 0.5, 1.1> } difference{ //legs object{ Cube scale <1.0, 1.0, 1.1> translate <0.0, -2.0, 0.1> } object{ Cube scale <1.5, 1.5, 0.9> translate <0.0, -2.1, 0.1> } object{ Cube scale <0.8, 1.5, 1.5> translate <0.0, -2.1, 0.0> } } } #declare ChairA2 = merge{ object{ Cube scale <1.0, 0.1, 1.0> translate <0.0, -0.70, 0.0> } object{ Cube scale <1.0, 1.3, 0.1> translate <0.0, 0.7, 0.9> } //pigment { Pink } } #declare ChairB = merge{ difference { object{ Sphere scale <1.0, 0.6, 1.0> translate <0.0, -0.4, 0.0> } object { Disk_Z scale<1.8,0.6,1.5> translate <0,0.1,0> } } difference{ object{ Sphere scale <0.90, 1.10, 0.3> translate <0.0, 1.0, 0.8> } object { Disk_Y scale <3,3,0.5> translate <0,1,0.25> } } difference{ object{ Disk_X scale <0.1, 0.8, 0.8> translate <0.0, -0.1, 0.3> } object { Disk_X scale <0.15,1.1,0.9> translate <0,-0.0,0.1> } pigment { Gray30 } } object{ ///legs Disk_Y scale <0.15, 0.9, 0.15> translate <0.0, -1.7, 0.0> pigment { Gray30 } } object{ Disk_Z scale <0.15, 0.15, 0.95> translate <0,-2.5,0> pigment { Gray30 } } object{ Disk_Z rotate y*90 scale <0.95, 0.15, 0.15> translate <0,-2.5,0> pigment { Gray30 } } object{ Sphere scale <0.2, 0.2, 0.2> translate <0.7, -2.8, 0.0> pigment { Gray30 } } object{ Sphere scale <0.2, 0.2, 0.2> translate <0.7, -2.8, 0.0> pigment { Gray30 } rotate y*90 } object{ Sphere scale <0.2, 0.2, 0.2> translate <0.7, -2.8, 0.0> pigment { Gray30 } rotate y*180 } object{ Sphere scale <0.2, 0.2, 0.2> translate <0.7, -2.8, 0.0> pigment { Gray30 } rotate y*270 } } #declare ChairC = merge{ difference{ object{ Sphere scale <2.0, 2.0, 2.0> translate <0.0, 0.0, 0.0> } object{ Sphere pigment { Red } scale <1.65, 1.65, 2.0> translate <0.0, 0.3, -0.3> } } object{ Sphere pigment { Red } scale <1.3, 0.30, 1.3> translate <0.0, -1.0, -0.1> } object{ Disk_Y scale <0.1, 0.6, 0.1> translate <0.0, -2.4, 0.0> pigment {Gray60} finish {specular 0.3 reflection 0.1} } object{ Disk_Y scale <1.0, 0.07, 1.0> translate <0.0, -2.95, 0.0> pigment {Gray60} finish {specular 0.3 reflection 0.1} } } #declare ChairD = merge{ difference{ object{ Sphere scale <2.0, 2.0, 2.0> translate <0.0, 0.0, 0.0> } object{ Sphere pigment { Red } scale <1.7, 1.60, 1.9> translate <0.0, 0.3, -0.4> } object{ Cube scale <2.5, 1.50, 2.5> translate <0.0, 2.0, -0.0> } } object{ Sphere pigment { Red } scale <1.3, 0.30, 1.3> translate <0.0, -1.0, -0.1> } object{ Disk_Y scale <0.1, 0.6, 0.1> translate <0.0, -2.4, 0.0> pigment {Gray60} finish {specular 0.3 reflection 0.1} } object{ Disk_Y scale <1.0, 0.07, 1.0> translate <0.0, -2.95, 0.0> pigment {Gray60} finish {specular 0.3 reflection 0.1} } } /////////////////////////////////////////////////// Sofas #macro SofaA (W) merge{ difference { object{ Cube scale <1.7*W, 1.3, 1.3> translate <0.0, -1.3, 0.3> } object{ Cube scale <1.7*W-0.7, 1.3, 2.0> translate <0.0, -0.3, -1.0> } } object{ //legs Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <1.40*W, -2.5, -0.6> } object{ Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <1.40*W, -2.5, 1.1> } object{ Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <-1.40*W, -2.5, -0.6> } object{ Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <-1.40*W, -2.5, 1.1> } } #end #macro SB1 (W) merge{ difference { object{ Cube scale <1.7*W, 1.3, 1.3> translate <0.0, -1.3, 0.3> } object{ Cube scale <1.7*W-0.7, 1.3, 2.0> translate <0.0, -0.3, -1.0> } object{ Cube scale <1.6999*W-0.7, 1.0, 0.5> rotate x*15 translate <0.0, -0.5, 0.79> } } object{ //legs Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <1.40*W, -2.5, -0.6> } object{ Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <1.40*W, -2.5, 1.1> } object{ Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <-1.40*W, -2.5, -0.6> } object{ Cube pigment { VeryDarkBrown } scale <0.2, 0.5, 0.2> translate <-1.40*W, -2.5, 1.1> } } #end #declare SB2 = merge{ object{ Cube scale <0.97, 0.25, 1.01> translate <0.0, 0.65, 0.0> } object{ Cube scale <0.97, 0.75, 0.15> rotate x*15 translate <0.0, 1.60, 1.15> } translate <0,-2.05,-0.0> } #macro SC1 (W, L) merge{ object{ Cube scale <1.0, 0.8, 1.0> translate <0.0, -2.2, 0.0> scale W*x scale L*z #if (L = 2) translate z*-1 #end } object{ Cube scale <1.0, 1.8, 0.3> translate <0.0, -1.2, 1.3> scale W*x } } #end #declare SofaA1 = merge{ object{ SofaA (1) }} #declare SofaA2 = merge{ object{ SofaA (1.6) }} #declare SofaA3 = merge{ object{ SofaA (2.2) }} #declare SofaB1 = merge{ object{ SB1 (1) }object{ SB2 }} #declare SofaB2 = merge{ object{ SB1 (1.6) } object{ SB2 translate <-1,0,0>} object{ SB2 translate <1,0,0>}} #declare SofaB3 = merge{ object{ SB1 (2.2) } object{ SB2 translate <-2,0,0>} object{ SB2 translate <0,0,0>} object{ SB2 translate <2,0,0>}} #declare SofaC1 = merge{ object{ SC1 (1,1) }} #declare SofaC2 = merge{ object{ SC1 (2,1) }} #declare SofaC3 = merge{ object{ SC1 (3,1) }} #declare SofaC4 = merge{ object{ SC1 (1,2) }} #macro ShelveA (W,T) difference{ object{ Cube scale translate <0.0, 3.0, 0.0> } object{ Cube scale translate <0.0, 5.35, -0.3> } object{ Cube scale translate <0.0, 4.20, -0.3> } object{ Cube scale translate <0.0, 3.05, -0.3> } object{ Cube scale translate <0.0, 1.90, -0.3> } object{ Cube scale translate <0.0, 0.75, -0.3> } scale T*y*0.5 translate <0,-3.0,0> } #end #declare Shelve1 = merge{ object{ ShelveA (0.5,1) }} #declare Shelve2 = merge{ object{ ShelveA (1,1) }} #declare Shelve3 = merge{ object{ ShelveA (2,1) }} #declare Shelve4 = merge{ object{ ShelveA (0.5,2) }} #declare Shelve5 = merge{ object{ ShelveA (1,2) }} #declare Shelve6 = merge{ object{ ShelveA (2,2) }} /////////////////////////////////////////////Doors #macro DoorLeft (W,T) merge{ object{ // Glass Cube scale <0.47, 2.95, 0.05> translate <0.0, 3.0, 0.0> texture {Glass} scale W*x scale T*y*0.5 } difference{ object{ //Door Cube scale <0.49, 3.0, 0.1> translate <0.0, 3.0, 0.0> scale W*x scale T*y*0.5 } object{ Cube scale <0.20, 0.85, 0.4> translate <0.0, 4.9, 0.0> scale W*x*1.5 scale T*y*0.45 translate T*y*0.2 } object{ Cube scale <0.20, 0.75, 0.4> translate <0.0, 3.0, 0.0> scale W*x*1.5 scale T*y*0.45 translate T*y*0.15 } object{ Cube scale <0.2, 0.85, 0.4> translate <0.0, 1.1, 0.0> scale W*x*1.5 scale T*y*0.45 translate T*y*0.1 } } object{ Sphere scale <0.09, 0.09, 0.09> translate <-0.10, 0.0, -0.16> translate W*x*0.5 translate T*y*1.5 } translate <0, -3, -1.12> } #end #macro DoorRight (W,T) merge{ merge{ object{ // Glass Cube scale <0.47, 2.95, 0.05> translate <0.0, 3.0, 0.0> texture {Glass} scale W*x scale T*y*0.5 } difference{ object{ //Door Cube scale <0.49, 3.0, 0.1> translate <0.0, 3.0, 0.0> scale W*x scale T*y*0.5 } object{ Cube scale <0.20, 0.85, 0.4> translate <0.0, 4.9, 0.0> scale W*x*1.5 scale T*y*0.45 translate T*y*0.2 } object{ Cube scale <0.20, 0.75, 0.4> translate <0.0, 3.0, 0.0> scale W*x*1.5 scale T*y*0.45 translate T*y*0.15 } object{ Cube scale <0.2, 0.85, 0.4> translate <0.0, 1.1, 0.0> scale W*x*1.5 scale T*y*0.45 translate T*y*0.1 } } } object{ Sphere scale <0.09, 0.09, 0.09> translate <0.15, 0.0, -0.16> translate W*x*-0.45 translate T*y*1.5 } translate <0, -3, -1.12> } #end #declare DoorLeft1 = merge{object {DoorLeft (1,1)}} #declare DoorLeft2 = merge{object {DoorLeft (2,1)}} #declare DoorLeft3 = merge{object {DoorLeft (4,1)}} #declare DoorLeft4 = merge{object {DoorLeft (1,2)}} #declare DoorLeft5 = merge{object {DoorLeft (2,2)}} #declare DoorLeft6 = merge{object {DoorLeft (4,2)}} #declare DoorRight1 = merge{object {DoorRight (1,1)}} #declare DoorRight2 = merge{object {DoorRight (2,1)}} #declare DoorRight3 = merge{object {DoorRight (4,1)}} #declare DoorRight4 = merge{object {DoorRight (1,2)}} #declare DoorRight5 = merge{object {DoorRight (2,2)}} #declare DoorRight6 = merge{object {DoorRight (4,2)}} #declare Doors1 = merge{ object {DoorLeft1 translate <-0.5, 0.0, 0.0>} object {DoorRight1 translate <0.5, 0.0, 0.0>}} #declare Doors2 = merge{ object {DoorLeft2 translate <-1.0, 0.0, 0.0>} object {DoorRight2 translate <1.0, 0.0, 0.0>}} #declare Doors3 = merge{ object {DoorLeft4 translate <-0.5, 0.0, 0.0>} object {DoorRight4 translate <0.5, 0.0, 0.0>}} #declare Doors4 = merge{ object {DoorLeft5 translate <-1.0, 0.0, 0.0>} object {DoorRight5 translate <1.0, 0.0, 0.0>}} ////////////////////////////////////Others #declare LampPart = difference { object{ Cone_Y scale <1.1,0.8,1.1> } object{ Cone_Y scale <1.1,0.7,1.1> translate <0,-0.15,0> } } #declare Lamp1 = merge { object{ Sphere scale <0.25,0.25,0.25> translate <0,0.55,0> texture {Glass} } object{ Disk_Y scale <0.13,0.9,0.13> translate <0,-0.40,0> pigment {Gray40} finish {specular 0.3 reflection 0.2} } object{ Disk_Y scale <0.65,0.08,0.65> translate <0,-1.25,0> pigment {Gray40} finish {specular 0.3 reflection 0.2} } difference { object{ Cone_Y scale <0.75,0.75,0.75> translate <0,0.6,0> } object{ Cone_Y scale <0.75,0.75,0.75> translate <0,0.55,0> } object{ Cube scale <0.9,0.9,0.9> translate <0,1.65,0> } translate<0,0.3,0> } } #declare Lamp2 = merge { object{ Sphere scale <0.3,0.3,0.3> translate <0,2.2,0> texture {Glass} } object{ Disk_Y scale <0.2,2.5,0.2> translate <0,-0.50,0> pigment {Gray40} finish {specular 0.3 reflection 0.2} } object{ Disk_Y scale <0.80,0.10,0.80> translate <0,-2.90,0> pigment {Gray40} finish {specular 0.3 reflection 0.2} } object {LampPart rotate z*180 translate <0,2.2,0>} } #declare Lamp3 = merge { object{ Sphere scale <0.25,0.25,0.25> translate <0,2.00,0> texture {Glass} } object{ Disk_Y scale <0.15,2,0.15> translate <0,4.00,0> pigment {Gray40} finish {specular 0.3 reflection 0.2} } object{ Disk_Y scale <0.75,0.10,0.75> translate <0,6.00,0> pigment {Gray40} finish {specular 0.3 reflection 0.2} } object {LampPart translate <0,2.0,0>} translate <0,3,0> } #declare TV = merge { object{ Cube pigment {Gray20} } object{ Cube scale <0.90,0.80,0.08> translate <0,0.1,-0.95> pigment {Gray50} finish {specular 0.3 reflection 0.2} } object{ Disk_Z scale <0.06,0.06,0.1> translate <0.75,-0.85,-0.95> pigment {Red} } } #declare Floor = merge{ object{ Cube scale<30,0.01,30> //finish { reflection {0.1} } translate <0,-3,0> } } #macro Wall (W) merge{ object{ Cube scale } translate <0, 4.0, 0> } #end #declare Window = merge{ difference { object{ Cube scale <2, 2, 0.2> translate <0, 6, 0> pigment {DMFLightOak} } #declare Px = array[4] { -0.9, -0.9, 0.9, 0.9} #declare Py = array[4] { 5.1, 6.9, 6.9, 5.1} #declare I=0; #while (I < 4) object{ Cube scale <0.75, 0.75, 0.6> translate pigment {DMFLightOak} } #declare I=I+1; #end } object{ Cube scale <1.9, 1.9, 0.05> translate <0, 6, 0> texture {Glass} } } #declare HoleForWindow = merge{ object{ Cube scale <2, 2, 2> translate <0, 6, 0> } } camera{ location <0,5, -18> look_at <0, 5, -0> angle 50} /* ~~~~~~~~~~~~~Others object {Floor} //object {Wall(4)} object {Window translate <0,0,-0>} object {Lamp1 translate <-2,0,0>} object {Lamp2 translate <0,0,0>} object {Lamp3 translate <2,-2,0>} object {TV} */ /*~~~~~~~~~~~~~~~ Doors object { DoorRight1 translate <-6,0,0>} object { DoorRight2 translate <-2,0,0>} object { DoorRight3 translate <4,0,0>} object { DoorRight4 translate <-5,0,3>} object { DoorRight5 translate <-0,0,3>} object { DoorRight6 translate <8,0,3>} object { Doors1 translate <-5,0,0>} object { Doors2 translate <-1,0,0>} object { Doors3 translate <3,0,0>} object { Doors4 translate <7,0,0>} */ /*~~~~~~~~~~~~~~~ Shelves object { Shelve1 translate <-6,0,0>} object { Shelve2 translate <-2,0,0>} object { Shelve3 translate <4,0,0>} object { Shelve4 translate <-5,0,3>} object { Shelve5 translate <-0,0,3>} object { Shelve6 translate <8,0,3>} */ /* ~~~~~~~~~~~~~~~Sofas object { SofaA1 translate <-6.5,0,-0>} object { SofaA2 translate <-1.0,0,0>} object { SofaA3 translate <6.3,0,0>} object { SofaB1 translate <-6.5,0,-0>} object { SofaB2 translate <-1.0,0,0>} object { SofaB3 translate <6.3,0,0>} object { SofaC1 translate <-7.5,0,-0>} object { SofaC2 translate <-3.0,0,0>} object { SofaC3 translate <3.3,0,0>} object { SofaC4 translate <8.3,0,0>} */ /* ~~~~~~~~~~~~~~Chairs object { ChairA1 translate <-4,0,-0>} object { ChairA2 translate <-6.5,0,-0>} object { ChairB translate <-1.0,0,-0>} object { ChairC translate <2.5,0,-0>} object { ChairD translate <7,0,-0>} #declare ChairA = merge{ object{ ChairA1} object{ChairA2}} object { ChairA translate <0,0,-0>} */ /* ~~~~~~~~~~~~~Tables object { TableLowA(1,1) translate <-4.5,0,-4>} object { TableLowLegA(1,1) translate <-2,0,-4>} object { TableHighA(1,1) translate <0.5,0,-4>} object { TableHighLegA(1,1) translate <3,0,-4>} object { TableLowB(1,1) translate <-4,0,-4>} object { TableLowLegB translate <-2,0,-4>} object { TableHighB(1,1) translate <1,0,-4>} object { TableHighLegB translate <3.5,0,-4>} object { TableC1 translate <-4,0,-0>} object { TableC2 translate <0,0,-0>} object { TableC3 translate <5,0,-0>} */