#version 3.7; global_settings { assumed_gamma 1.3 max_trace_level 16 radiosity { pretrace_start 0.08 pretrace_end 0.01 count 200 nearest_count 10 error_bound 0.5 recursion_limit 2 low_error_factor 0.5 gray_threshold 0.0 } } background { color rgb <0.06, 0.06, 0.08> } camera { location <8.2, 6.0, -12.2> look_at <0.0, 1.9, 0.1> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } light_source { <10, 12, -12> color rgb <1.00, 0.82, 0.65>*1.10 area_light <3,0,0>, <0,0,3>, 5, 5 adaptive 1 jitter } light_source { <-8, 7, -6> color rgb <1.00, 0.78, 0.62>*0.50 area_light <2,0,0>, <0,0,2>, 4, 4 adaptive 1 jitter } #declare Fin_Matte = finish { diffuse 0.88 ambient 0.0 specular 0.10 roughness 0.09 }; #declare Fin_Soft = finish { diffuse 0.92 ambient 0.0 specular 0.05 roughness 0.13 }; #declare Fin_Bubble = finish { diffuse 0.15 specular 0.35 roughness 0.03 }; #declare Col_Wood = pigment { color rgb <0.72, 0.56, 0.38> }; #declare Col_Fabric = pigment { color rgb <0.35, 0.34, 0.42> }; #declare Col_Sheet = pigment { color rgb <0.76, 0.74, 0.80> }; #declare Col_Pillow = pigment { color rgb <0.82, 0.80, 0.86> }; #declare Col_Floor = pigment { color rgb <0.18, 0.16, 0.15> }; #declare Col_Skin = pigment { color rgb <0.86, 0.74, 0.60> }; #declare Col_String = pigment { color rgb <0.92, 0.92, 0.92> }; plane { y, 0 pigment { Col_Floor } finish { Fin_Soft } } #declare Bed = union { // base frame box { <-3.6, 0.35, -2.2>, < 3.6, 0.70, 2.2> pigment { Col_Wood } finish { Fin_Matte } } // legs cylinder { <-3.3, 0.0, -1.9>, <-3.3, 0.35, -1.9>, 0.12 pigment{Col_Wood} finish{Fin_Matte} } cylinder { < 3.3, 0.0, -1.9>, < 3.3, 0.35, -1.9>, 0.12 pigment{Col_Wood} finish{Fin_Matte} } cylinder { <-3.3, 0.0, 1.9>, <-3.3, 0.35, 1.9>, 0.12 pigment{Col_Wood} finish{Fin_Matte} } cylinder { < 3.3, 0.0, 1.9>, < 3.3, 0.35, 1.9>, 0.12 pigment{Col_Wood} finish{Fin_Matte} } // mattress box { <-3.4, 0.70, -2.0>, < 3.4, 1.20, 2.0> pigment { Col_Fabric } finish { Fin_Soft } } // sheet (thin layer) box { <-3.35, 1.20, -1.95>, < 3.35, 1.26, 1.95> pigment { Col_Sheet } finish { Fin_Soft } } }; object { Bed } #declare Pillow = difference { sphere { <-2.2, 1.42, -0.9>, 0.85 } sphere { <-2.65, 1.70, -1.25>, 0.75 } pigment { Col_Pillow } finish { Fin_Soft } }; object { Pillow } #declare Blanket = union { // main blanket slab over torso/legs box { <-1.20, 1.275, -0.70>, <2.60, 1.385, 1.35> pigment { Col_Sheet } finish { Fin_Soft } } // gentle folded rise near knees cylinder { <1.25, 1.275, 0.70>, <1.25, 1.385, 0.70>, 0.75 pigment { Col_Sheet } finish { Fin_Soft } scale <1.0, 1.0, 0.75> } }; object { Blanket } // // Resting body as ONE blob piece (isosurface) // #declare BodyBlob = isosurface { function { // torso volume 1.15*exp(-( (pow((x-0.05)/0.55,2) + pow((y-1.34)/0.22,2) + pow((z-0.15)/0.95,2)) )) // head volume on pillow side +1.05*exp(-( (pow((x+1.35)/0.34,2) + pow((y-1.44)/0.28,2) + pow((z+0.95)/0.34,2)) )) // neck transition +0.55*exp(-( (pow((x+0.95)/0.35,2) + pow((y-1.40)/0.18,2) + pow((z+0.70)/0.35,2)) )) // hips +0.85*exp(-( (pow((x-0.10)/0.45,2) + pow((y-1.33)/0.20,2) + pow((z-0.95)/0.45,2)) )) // legs together (under blanket) +0.90*exp(-( (pow((x-0.22)/0.32,2) + pow((y-1.31)/0.17,2) + pow((z-1.40)/0.75,2)) )) // arms resting along sides +0.45*exp(-( (pow((x-0.55)/0.35,2) + pow((y-1.30)/0.14,2) + pow((z-0.25)/0.55,2)) )) +0.45*exp(-( (pow((x+0.35)/0.35,2) + pow((y-1.30)/0.14,2) + pow((z-0.25)/0.55,2)) )) - 1.05 } contained_by { box { <-3.5, 0.7, -2.2>, <3.5, 2.8, 2.3> } } threshold 0.0 max_gradient 4.5 accuracy 0.0015 pigment { Col_Skin } finish { Fin_Matte } }; object { BodyBlob } // // A couple slack strings hints (kept minimal) // cylinder { <-1.35, 1.78, -0.95>, <-1.35, 2.25, -0.95>, 0.01 pigment { Col_String } finish { Fin_Soft } } cylinder { < 0.05, 1.65, 0.20>, < 0.05, 2.25, 0.20>, 0.01 pigment { Col_String } finish { Fin_Soft } } // // Dream bubbles cluster // #declare DreamBubble = sphere { <0,0,0>, 1 pigment { color rgbt <0.75, 0.85, 1.00, 0.70> } finish { Fin_Bubble } }; union { object { DreamBubble scale 0.45 translate <-2.2, 2.55, -1.10> } object { DreamBubble scale 0.25 translate <-1.75, 2.35, -0.85> } object { DreamBubble scale 0.18 translate <-1.45, 2.15, -0.70> } object { DreamBubble scale 0.55 translate <-1.1, 3.05, -0.65> } object { DreamBubble scale 0.35 translate <-0.5, 3.35, -0.20> } object { DreamBubble scale 0.28 translate < 0.2, 3.10, 0.20> } // simple "dream symbol" inside (moon-like) difference { sphere { <-1.1, 3.05, -0.65>, 0.20 } sphere { <-1.0, 3.08, -0.60>, 0.18 } pigment { color rgbt <1.00, 0.95, 0.75, 0.35> } finish { diffuse 0.25 specular 0.25 roughness 0.05 } } }