#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 8 } background { color rgb <0.72,0.78,0.85> } #default { finish { ambient 0 diffuse 1 } } #include "colors.inc" camera { location <1.5, 1.85, -3.3> look_at <0.5, 1.15, 1.8> angle 45 } light_source { <0, 2.78, -0.2> color rgb <1,1,1>*1.05 area_light <1.0,0,0>, <0,0,1.0>, 6, 6 adaptive 1 jitter } light_source { <-3.1, 2.1, -2.8> color rgb <1,1,1>*0.35 area_light <0,0,1.2>, <0,1.0,0>, 4, 4 adaptive 1 jitter } light_source { <2.5, 1.8, -5.3> color rgb <1,1,1>*0.18 } #declare RoomHalfW = 3.2; #declare RoomHalfD = 3.6; #declare RoomH = 2.8; // -------------------- Textures (procedural, fast) -------------------- #declare TexPaintWall = texture { pigment { color rgb <0.93,0.93,0.92> } normal { bumps 0.10 scale 0.12 } finish { diffuse 0.85 specular 0.06 roughness 0.10 } }; #declare TexPaintAccent = texture { pigment { color rgb <0.88,0.91,0.95> } normal { bumps 0.08 scale 0.14 } finish { diffuse 0.85 specular 0.06 roughness 0.10 } }; #declare TexCeil = texture { pigment { color rgb <0.97,0.97,0.98> } normal { bumps 0.06 scale 0.18 } finish { diffuse 0.92 specular 0.03 roughness 0.16 } }; #declare TexTrim = texture { pigment { color rgb <0.96,0.96,0.97> } finish { diffuse 0.9 specular 0.10 roughness 0.06 } }; #declare TexWoodFloor = texture { pigment { wood color_map { [0.00 color rgb <0.33,0.23,0.15>] [0.35 color rgb <0.46,0.32,0.20>] [0.70 color rgb <0.39,0.27,0.17>] [1.00 color rgb <0.50,0.36,0.23>] } turbulence 0.12 scale <0.35, 0.35, 3.2> rotate <0, 90, 0> } normal { average normal_map { [1 bumps 0.08 scale 0.10] [1 wrinkles 0.04 scale 0.25] } } finish { diffuse 0.9 specular 0.20 roughness 0.05 reflection 0.02 } }; #declare TexDeskWood = texture { pigment { wood color_map { [0.00 color rgb <0.40,0.26,0.14>] [0.40 color rgb <0.52,0.34,0.18>] [0.75 color rgb <0.46,0.30,0.17>] [1.00 color rgb <0.56,0.38,0.22>] } turbulence 0.10 scale <0.20, 0.20, 1.6> rotate <0, 90, 0> } normal { bumps 0.10 scale 0.08 } finish { diffuse 0.85 specular 0.18 roughness 0.05 reflection 0.01 } }; #declare TexPlasticDark = texture { pigment { color rgb <0.10,0.11,0.12> } normal { bumps 0.25 scale 0.03 } finish { diffuse 0.75 specular 0.35 roughness 0.04 } }; #declare TexPlasticLight = texture { pigment { color rgb <0.73,0.75,0.78> } normal { bumps 0.20 scale 0.035 } finish { diffuse 0.82 specular 0.25 roughness 0.05 } }; #declare TexRubber = texture { pigment { color rgb <0.07,0.07,0.075> } normal { bumps 0.55 scale 0.02 } finish { diffuse 0.85 specular 0.10 roughness 0.10 } }; #declare TexBrushedMetal = texture { pigment { color rgb <0.70,0.72,0.75> } normal { average normal_map { [1 dents 0.25 scale 0.07] [1 ripples 0.08 scale <0.02,0.02,0.18>] } } finish { diffuse 0.45 specular 0.65 roughness 0.025 reflection 0.06 } }; #declare TexScreenGlass = texture { pigment { color rgb <0.03,0.05,0.07> } finish { diffuse 0.10 specular 0.90 roughness 0.008 reflection 0.12 } }; #declare TexScreenImage = texture { pigment { gradient x color_map { [0.00 color rgb <0.06,0.20,0.40>] [0.35 color rgb <0.10,0.45,0.70>] [0.70 color rgb <0.12,0.75,0.65>] [1.00 color rgb <0.85,0.95,0.98>] } scale 0.55 translate <0.25,0,0> } finish { diffuse 0.85 specular 0.10 roughness 0.06 } }; #declare TexRug = texture { pigment { checker color rgb <0.22,0.24,0.28>, color rgb <0.18,0.19,0.22> scale 0.25 } normal { bumps 0.65 scale 0.03 } finish { diffuse 0.95 specular 0.05 roughness 0.12 } }; // -------------------- Room geometry -------------------- union { // floor box { <-RoomHalfW, 0, -RoomHalfD>, < RoomHalfW, 0.02, RoomHalfD> texture {TexWoodFloor} } // ceiling box { <-RoomHalfW, RoomH, -RoomHalfD>, < RoomHalfW, RoomH+0.02, RoomHalfD> texture {TexCeil} } // back wall (+Z) box { <-RoomHalfW, 0, RoomHalfD-0.02>, texture {TexPaintAccent} } // left wall (-X) box { <-RoomHalfW, 0, -RoomHalfD>, <-RoomHalfW+0.02, RoomH, RoomHalfD> texture {TexPaintWall} } // right wall (+X) box { , texture {TexPaintWall} } } // Baseboard trim #declare TrimH = 0.10; #declare TrimT = 0.03; union { box { <-RoomHalfW, 0, RoomHalfD-TrimT>, texture {TexTrim} } box { <-RoomHalfW, 0, -RoomHalfD>, <-RoomHalfW+TrimT, TrimH, RoomHalfD> texture {TexTrim} } box { , texture {TexTrim} } } // Window panel on left wall (gives context + reflections) union { box { <0, 1.05, -1.2>, <0.01, 2.10, 0.20> texture { pigment { color rgbt <0.85,0.92,1.0, 0.70> } finish { specular 0.65 roughness 0.02 reflection 0.06 } } } // simple frame box { <-0.005, 1.02, -1.23>, <0.02, 2.13, 0.23> texture {TexTrim} } translate <-RoomHalfW+0.02, 0, 0> } // Rug under chair/desk box { <-1.15, 0.021, 1.05>, <1.15, 0.035, 2.65> texture {TexRug} } // -------------------- Desk + computer setup -------------------- #declare DeskTopY = 0.75; #declare DeskW = 1.70; #declare DeskD = 0.80; #declare DeskT = 0.05; #declare DeskPos = <0.0, 0.0, 2.45>; #declare TexDeskLeg = texture { pigment { color rgb <0.35,0.22,0.13> } normal { bumps 0.10 scale 0.06 } finish { diffuse 0.85 specular 0.15 roughness 0.06 } }; union { // top (rounded-ish: top + thin apron) box { <-DeskW/2, DeskTopY, -DeskD/2>, texture {TexDeskWood} } box { <-DeskW/2, DeskTopY-0.08, -DeskD/2>, texture {TexDeskWood} } // front apron // legs #declare LegW = 0.085; #declare LegH = DeskTopY-0.01; #declare OffX = DeskW/2 - 0.12; #declare OffZ = DeskD/2 - 0.12; box { <-OffX-LegW/2, 0, -OffZ-LegW/2>, <-OffX+LegW/2, LegH, -OffZ+LegW/2> texture {TexDeskLeg} } box { < OffX-LegW/2, 0, -OffZ-LegW/2>, < OffX+LegW/2, LegH, -OffZ+LegW/2> texture {TexDeskLeg} } box { <-OffX-LegW/2, 0, OffZ-LegW/2>, <-OffX+LegW/2, LegH, OffZ+LegW/2> texture {TexDeskLeg} } box { < OffX-LegW/2, 0, OffZ-LegW/2>, < OffX+LegW/2, LegH, OffZ+LegW/2> texture {TexDeskLeg} } // small cable grommet on desktop cylinder { <0.72, DeskTopY+DeskT+0.001, 0.30>, <0.72, DeskTopY+DeskT+0.008, 0.30>, 0.035 texture {TexPlasticDark} } translate DeskPos } // Monitor (with more material contrast) #declare MonitorPos = DeskPos + <0.00, DeskTopY+DeskT, 0.12>; union { // bezel/frame box { <-0.34, 0.12, -0.035>, <0.34, 0.52, 0.035> texture {TexPlasticDark} } // inner bezel box { <-0.31, 0.15, -0.034>, <0.31, 0.49, 0.030> texture {TexPlasticDark} normal {bumps 0.35 scale 0.02} } // screen image plane box { <-0.29, 0.17, -0.033>, <0.29, 0.47, -0.029> texture {TexScreenImage} } // screen glass (very thin, reflective) box { <-0.29, 0.17, -0.0285>, <0.29, 0.47, -0.0270> texture {TexScreenGlass} } // stand neck box { <-0.045, 0.00, -0.025>, <0.045, 0.16, 0.025> texture {TexBrushedMetal} } // hinge block box { <-0.08, 0.14, -0.03>, <0.08, 0.20, 0.03> texture {TexPlasticDark} } // base box { <-0.22, -0.01, -0.12>, <0.22, 0.02, 0.12> texture {TexPlasticDark} } box { <-0.18, 0.020, -0.10>, <0.18, 0.028, 0.10> texture {TexRubber} } translate MonitorPos } // Keyboard union { box { <-0.30, 0.00, -0.11>, <0.30, 0.03, 0.11> texture {TexPlasticDark} } box { <-0.28, 0.0305, -0.09>, <0.28, 0.0340, 0.09> texture {TexPlasticLight} } // subtle "key grid" box { <-0.27, 0.0341, -0.085>, <0.27, 0.0346, 0.085> texture { pigment { checker color rgb <0.78,0.80,0.83>, color rgb <0.70,0.72,0.75> scale 0.045 } finish { diffuse 0.75 specular 0.12 roughness 0.08 } } } translate (DeskPos + <0.00, DeskTopY+DeskT, -0.22>) } // Mouse union { sphere { <0,0.035,0>, 0.055 texture {TexPlasticDark} scale <1.25,0.75,1.65> } box { <-0.02, 0.045, -0.02>, <0.02, 0.055, 0.05> texture {TexPlasticLight} } // scroll hint translate (DeskPos + <0.46, DeskTopY+DeskT, -0.22>) } // Small tower on desk right (adds vents + metal panel) union { box { <-0.11, 0.00, -0.19>, <0.11, 0.46, 0.19> texture {TexPlasticDark} } box { <-0.095, 0.06, -0.185>, <0.095, 0.42, -0.165> texture {TexBrushedMetal} } // vent stripes #declare i = 0; #while (i < 8) box { <-0.085, 0.10 + i*0.04, 0.165>, <0.085, 0.11 + i*0.04, 0.185> texture {TexPlasticDark} } #declare i = i + 1; #end // power button cylinder { <0.06, 0.40, -0.166>, <0.06, 0.40, -0.160>, 0.010 texture {TexPlasticLight} } translate (DeskPos + <0.68, DeskTopY+DeskT, 0.20>) } // A couple of simple cables (thin cylinders) union { cylinder { <0.72, DeskTopY+DeskT+0.005, 0.30>, <0.72, 0.05, 0.30>, 0.006 texture {TexRubber} } cylinder { <0.00, DeskTopY+DeskT+0.005, 0.00>, <0.20, DeskTopY+DeskT+0.005, -0.22>, 0.004 texture {TexRubber} } translate DeskPos } // Chair (more metallic base + slightly softer seat/back) #declare ChairPos = <0.0, 0.0, 1.60>; #declare TexChairFabric = texture { pigment { color rgb <0.18,0.19,0.20> } normal { bumps 0.55 scale 0.03 } finish { diffuse 0.90 specular 0.12 roughness 0.08 } }; union { // seat box { <-0.23, 0.45, -0.23>, <0.23, 0.53, 0.23> texture {TexChairFabric} } // back box { <-0.23, 0.53, 0.16>, <0.23, 1.05, 0.24> texture {TexChairFabric} } // lumbar cut hint box { <-0.16, 0.66, 0.155>, <0.16, 0.88, 0.245> texture {TexPlasticDark} finish {diffuse 0.6 specular 0.2 roughness 0.06} } // post cylinder { <0,0.12,0>, <0,0.45,0>, 0.055 texture {TexBrushedMetal} } // base cylinder { <0,0.09,0>, <0,0.12,0>, 0.24 texture {TexBrushedMetal} } cylinder { <0,0.085,0>, <0,0.09,0>, 0.26 texture {TexPlasticDark} } translate ChairPos } // Wall picture on left wall (textured frame + art) union { box { <-0.012, 1.12, 0.50>, <0.012, 1.70, 1.52> texture { pigment { color rgb <0.12,0.12,0.13> } normal { bumps 0.25 scale 0.03 } finish { diffuse 0.7 specular 0.25 roughness 0.05 } } } box { <-0.006, 1.16, 0.54>, <0.006, 1.66, 1.48> texture { pigment { gradient y color_map { [0 color rgb <0.15,0.35,0.60>] [0.6 color rgb <0.85,0.90,0.95>] [1 color rgb <0.95,0.95,0.96>] } } finish { diffuse 0.9 specular 0.12 roughness 0.06 } } } translate <-RoomHalfW+0.02, 0, 0> } // Shelf on right wall with books (textured) union { box { <-0.45, 1.12, -0.13>, <0.45, 1.18, 0.13> texture {TexDeskWood} } box { <-0.40, 0.98, -0.11>, <-0.33, 1.12, 0.11> texture {TexDeskWood} } box { < 0.33, 0.98, -0.11>, < 0.40, 1.12, 0.11> texture {TexDeskWood} } box { <-0.20, 1.18, -0.085>, <-0.11, 1.46, 0.085> texture { pigment {color rgb <0.78,0.20,0.22>} normal {bumps 0.25 scale 0.04} finish {diffuse 0.85 specular 0.10 roughness 0.08} } } box { <-0.10, 1.18, -0.085>, <-0.02, 1.42, 0.085> texture { pigment {color rgb <0.22,0.55,0.28>} normal {bumps 0.25 scale 0.04} finish {diffuse 0.85 specular 0.10 roughness 0.08} } } box { < 0.00, 1.18, -0.085>, < 0.09, 1.48, 0.085> texture { pigment {color rgb <0.22,0.32,0.72>} normal {bumps 0.25 scale 0.04} finish {diffuse 0.85 specular 0.10 roughness 0.08} } } translate rotate <0,180,0> }