#version 3.7; #include "colors.inc" // ------------------------------------------------------------------ // Required global settings (exact) // ------------------------------------------------------------------ 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: vertical gradient sky_sphere (dream night) // ------------------------------------------------------------------ sky_sphere { pigment { gradient y color_map { [0.0 color rgb <0.05,0.06,0.09>] [0.7 color rgb <0.07,0.08,0.12>] [1.0 color rgb <0.12,0.11,0.16>] } scale 2 translate -1 } } // ------------------------------------------------------------------ // Camera (16:9) // ------------------------------------------------------------------ camera { location <6.8, 4.4, -16.8> look_at <0.0, 2.65, 0.6> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } // ------------------------------------------------------------------ // Warm lights with soft shadows (reduced samples for speed) // ------------------------------------------------------------------ light_source { <10, 12, -14> color rgb <1.00, 0.86, 0.70>*1.05 area_light <3,0,0>, <0,0,3>, 4, 4 adaptive 1 jitter } light_source { <-9, 9, -7> color rgb <1.00, 0.78, 0.62>*0.50 area_light <2,0,0>, <0,0,2>, 4, 4 adaptive 1 jitter } light_source { <0, 14, 7> color rgb <1.00, 0.90, 0.80>*0.30 area_light <2.5,0,0>, <0,0,2.5>, 3, 3 adaptive 1 jitter } // ------------------------------------------------------------------ // Simple finishes (fast) // ------------------------------------------------------------------ #declare Fin_Soft = finish { diffuse 0.82 specular 0.10 roughness 0.07 }; #declare Fin_Wood = finish { diffuse 0.78 specular 0.14 roughness 0.07 }; #declare Fin_Glow = finish { diffuse 0.30 ambient 0.26 specular 0.10 roughness 0.10 }; // ------------------------------------------------------------------ // Textures / materials (simple shading, no image maps) // ------------------------------------------------------------------ #declare Tex_Wood = texture{ pigment{ wood turbulence 0.08 color_map{ [0.00 color rgb <0.52,0.41,0.31>] [0.55 color rgb <0.64,0.52,0.40>] [1.00 color rgb <0.42,0.34,0.26>] } scale 0.34 rotate <0,90,0> } finish{ Fin_Wood } } #declare Tex_Skin = texture{ pigment { color rgb <0.92,0.85,0.78> } finish { diffuse 0.80 specular 0.10 roughness 0.07 } } #declare Tex_String = texture{ pigment { color rgb <0.72,0.67,0.60> } finish { diffuse 0.35 specular 0.05 roughness 0.20 } } // Translucent body cloth (fast faux translucency) #declare Mat_BodyTranslucent = texture{ pigment { color rgbt <0.48,0.56,0.78, 0.55> } // rgbt: t adds transparency finish { diffuse 0.55 specular 0.06 roughness 0.15 ambient 0.04 } } #declare Int_Body = interior{ ior 1.20 fade_distance 1.0 fade_power 2 fade_color <0.42,0.50,0.75> } // ------------------------------------------------------------------ // Ground: cloud-like dream bed (blobby height feel but cheap) // ------------------------------------------------------------------ plane { y, 0 texture{ pigment{ bozo turbulence 0.6 color_map{ [0.0 color rgb <0.09,0.10,0.12>] [0.6 color rgb <0.12,0.12,0.15>] [1.0 color rgb <0.16,0.16,0.20>] } scale 2.2 } normal { bumps 0.35 scale 1.0 } finish{ diffuse 0.72 specular 0.03 roughness 0.22 } } } // ------------------------------------------------------------------ // Subtle dream fog (keep light) // ------------------------------------------------------------------ fog { distance 32 color rgb <0.10, 0.11, 0.14> fog_type 2 fog_offset 0.0 fog_alt 2.4 turbulence 0.12 } // ------------------------------------------------------------------ // Soft halo behind puppet (cheap luminous disc) // ------------------------------------------------------------------ disc { <0,2.85,4.2>, <0,0,-1>, 2.4 pigment { color rgb <0.25,0.23,0.30> } finish { diffuse 0.20 ambient 0.25 specular 0 } } // ------------------------------------------------------------------ // Marionette Figure (floating) // ------------------------------------------------------------------ #declare Puppet = union { // Torso capsule (translucent cloth) union { cylinder { <0,1.45,0>, <0,2.75,0>, 0.55 } sphere { <0,1.45,0>, 0.55 } sphere { <0,2.75,0>, 0.55 } texture { Mat_BodyTranslucent } interior { Int_Body } } // Head + neck (skin) union { sphere { <0,3.55,0>, 0.52 texture { Tex_Skin } } cylinder { <0,3.00,0>, <0,3.22,0>, 0.18 texture { Tex_Skin } } } // Nose (skin) cone { <0.0,3.55,-0.52>, 0.06, <0.0,3.50,-0.70>, 0.01 texture { Tex_Skin } } // Pelvis block (wood) - tightly meets torso bottom sphere box { <-0.42,1.02,-0.28>, <0.42,1.30,0.28> texture { Tex_Wood } } // Left Arm (wood) union { cylinder { <-0.55,2.55,0>, <-1.45,2.25,0>, 0.16 } sphere { <-0.55,2.55,0>, 0.16 } sphere { <-1.45,2.25,0>, 0.16 } cylinder { <-1.45,2.25,0>, <-2.05,1.70,0>, 0.14 } sphere { <-2.05,1.70,0>, 0.14 } sphere { <-2.12,1.55,0>, 0.17 } texture { Tex_Wood } } // Right Arm (wood) union { cylinder { <0.55,2.55,0>, <1.45,2.25,0>, 0.16 } sphere { <0.55,2.55,0>, 0.16 } sphere { <1.45,2.25,0>, 0.16 } cylinder { <1.45,2.25,0>, <2.05,1.70,0>, 0.14 } sphere { <2.05,1.70,0>, 0.14 } sphere { <2.12,1.55,0>, 0.17 } texture { Tex_Wood } } // Left Leg (wood) union { cylinder { <-0.22,1.02,0>, <-0.35,0.25,0>, 0.18 } sphere { <-0.22,1.02,0>, 0.18 } sphere { <-0.35,0.25,0>, 0.18 } cylinder { <-0.35,0.25,0>, <-0.35,-0.65,0>, 0.16 } sphere { <-0.35,-0.65,0>, 0.16 } box { <-0.55,-0.85,-0.22>, <-0.15,-0.65,0.22> } texture { Tex_Wood } } // Right Leg (wood) union { cylinder { <0.22,1.02,0>, <0.35,0.25,0>, 0.18 } sphere { <0.22,1.02,0>, 0.18 } sphere { <0.35,0.25,0>, 0.18 } cylinder { <0.35,0.25,0>, <0.35,-0.65,0>, 0.16 } sphere { <0.35,-0.65,0>, 0.16 } box { <0.15,-0.85,-0.22>, <0.55,-0.65,0.22> } texture { Tex_Wood } } // Chest emblem (crescent moon) - slightly brighter union { difference { sphere { <0,2.25,-0.52>, 0.20 } sphere { <0.08,2.28,-0.60>, 0.20 } bounded_by { box { <-0.4,1.8,-1.2>, <0.4,2.7,0.1> } } } pigment { color rgb <0.98, 0.94, 0.78> } finish { diffuse 0.52 ambient 0.14 specular 0.18 roughness 0.07 } } // Float pose and placement translate <0, 1.05, 0> rotate <0, -12, 0> }; object { Puppet } // ------------------------------------------------------------------ // Marionette strings (thin, simple) // ------------------------------------------------------------------ union { cylinder { <-1.75,3.95,0>, <-1.55,6.2,0>, 0.015 texture { Tex_String } } cylinder { < 1.75,3.95,0>, < 1.55,6.2,0>, 0.015 texture { Tex_String } } cylinder { < 0.00,4.05,0>, < 0.00,6.3,0>, 0.015 texture { Tex_String } } cylinder { <-0.35,0.55,0>, <-0.55,6.0,0>, 0.012 texture { Tex_String } } cylinder { < 0.35,0.55,0>, < 0.55,6.0,0>, 0.012 texture { Tex_String } } } // ------------------------------------------------------------------ // Dream orbs (glowy, kept simple) // ------------------------------------------------------------------ #declare Tex_OrbBlue = texture{ pigment{ color rgb <0.62,0.82,1.00> } finish { Fin_Glow } } #declare Tex_OrbPink = texture{ pigment{ color rgb <1.00,0.74,0.88> } finish { Fin_Glow } } #declare Tex_OrbGold = texture{ pigment{ color rgb <1.00,0.95,0.70> } finish { Fin_Glow } } sphere { <-3.2, 3.1, 2.0>, 0.45 texture { Tex_OrbBlue } } sphere { < 2.8, 2.0, 2.8>, 0.35 texture { Tex_OrbPink } } sphere { < 0.8, 4.8, 1.6>, 0.28 texture { Tex_OrbGold } } // ------------------------------------------------------------------ // “Dream frame” arc behind (kept) // ------------------------------------------------------------------ torus { 3.4, 0.06 rotate <90, 0, 0> translate <0, 2.4, 3.6> pigment { color rgb <0.26, 0.27, 0.32> } finish { diffuse 0.65 specular 0.05 roughness 0.16 } } // ------------------------------------------------------------------ // Floating "Z" sleep symbols (simple boxes; fast; narrative cue) // ------------------------------------------------------------------ #declare Tex_Z = texture{ pigment { color rgb <0.78,0.84,1.00> } finish { diffuse 0.25 ambient 0.24 specular 0.06 roughness 0.12 } } #macro ZShape(Pos, Sc, RotY) union{ // three bars + two diagonals (2D-ish "Z") box { <-0.35, 0.10, -0.03>, <0.35, 0.18, 0.03> } box { <-0.35, -0.04, -0.03>, <0.35, 0.04, 0.03> } box { <-0.35, -0.18, -0.03>, <0.35, -0.10, 0.03> } box { <-0.32, -0.12, -0.03>, <0.32, -0.04, 0.03> rotate <0,0,35> translate <0.00,-0.02,0> } box { <-0.32, 0.04, -0.03>, <0.32, 0.12, 0.03> rotate <0,0,35> translate <0.00, 0.02,0> } texture { Tex_Z } scale Sc rotate <0,RotY,0> translate Pos } #end ZShape(<-0.9,5.05,1.6>, 0.55, -10) ZShape(<-0.2,5.55,1.35>, 0.42, 15) ZShape(< 0.5,5.95,1.2>, 0.32, 25)