#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: dreamy night gradient + subtle stars (fast) // ------------------------------------------------------------------ sky_sphere { pigment { gradient y color_map { [0.0 color rgb <0.04,0.05,0.08>] [0.7 color rgb <0.07,0.08,0.12>] [1.0 color rgb <0.13,0.12,0.18>] } scale 2 translate -1 } } sky_sphere { pigment { granite color_map { [0.00 color rgbt <1,1,1,1>] [0.985 color rgbt <1,1,1,1>] [0.995 color rgbt <0.90,0.92,1.00,0.35>] [1.00 color rgbt <0.90,0.92,1.00,0.15>] } scale 0.75 } } // ------------------------------------------------------------------ // Camera (16:9) - slight adjustment to center the puppet + frame // ------------------------------------------------------------------ camera { location <7.2, 4.6, -17.4> look_at <0.0, 2.75, 1.0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } // ------------------------------------------------------------------ // Warm lights with soft shadows (keep render fast) // ------------------------------------------------------------------ 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.26 area_light <2.5,0,0>, <0,0,2.5>, 3, 3 adaptive 1 jitter } // Soft "moon" backlight to separate silhouette (cool-warm contrast but still gentle) light_source { <0, 7.5, 11.5> color rgb <0.95, 0.90, 1.00>*0.35 area_light <2.5,0,0>, <0,2.0,0>, 4, 4 adaptive 1 jitter } // ------------------------------------------------------------------ // Finishes (simple) // ------------------------------------------------------------------ #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 }; #declare Fin_Ground= finish { diffuse 0.74 specular 0.04 roughness 0.20 reflection 0.03 }; // ------------------------------------------------------------------ // Textures with bump/normal detail (requested) // ------------------------------------------------------------------ #declare Tex_Wood = texture{ pigment{ wood turbulence 0.10 color_map{ [0.00 color rgb <0.50,0.39,0.30>] [0.55 color rgb <0.66,0.54,0.41>] [1.00 color rgb <0.40,0.32,0.25>] } scale 0.34 rotate <0,90,0> } // Bump: wood grain + fine pores normal { average normal_map { [1 wrinkles 0.22 scale <0.18,0.10,0.18>] [1 bumps 0.15 scale 0.07] } } finish{ Fin_Wood } } #declare Tex_Skin = texture{ pigment { color rgb <0.92,0.85,0.78> } // Bump: subtle pores normal { bumps 0.18 scale 0.08 } finish { diffuse 0.80 specular 0.10 roughness 0.07 } } #declare Tex_String = texture{ pigment { color rgb <0.72,0.67,0.60> } // Bump: slight twist normal { wrinkles 0.35 scale <0.08,0.02,0.08> } finish { diffuse 0.35 specular 0.05 roughness 0.22 } } // Translucent body cloth (fast faux translucency) + weave bump #declare Mat_BodyTranslucent = texture{ pigment { color rgbt <0.48,0.56,0.78, 0.55> } normal { wrinkles 0.20 scale 0.18 } finish { diffuse 0.55 specular 0.06 roughness 0.16 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 with stronger bump + slight sheen // ------------------------------------------------------------------ plane { y, 0 texture{ pigment{ bozo turbulence 0.65 color_map{ [0.0 color rgb <0.08,0.09,0.11>] [0.6 color rgb <0.12,0.12,0.16>] [1.0 color rgb <0.18,0.18,0.23>] } scale 2.15 } normal { average normal_map { [1 bumps 0.45 scale 0.90] [1 wrinkles 0.22 scale 0.35] } } finish{ Fin_Ground } } } // ------------------------------------------------------------------ // Subtle dream fog (keep light) // ------------------------------------------------------------------ fog { distance 34 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) + slight bump // ------------------------------------------------------------------ disc { <0,2.95,4.4>, <0,0,-1>, 2.6 pigment { color rgb <0.24,0.22,0.30> } normal { bumps 0.25 scale 0.25 } finish { diffuse 0.18 ambient 0.28 specular 0.03 roughness 0.25 } } // ------------------------------------------------------------------ // Large dreamy moon-like sphere behind (depth cue) // ------------------------------------------------------------------ sphere { <1.6, 2.55, 6.2>, 2.15 pigment { color rgb <0.14,0.13,0.18> } normal { bumps 0.20 scale 0.30 } finish { diffuse 0.65 specular 0.05 roughness 0.18 } } // ------------------------------------------------------------------ // 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 + micro bump 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> } normal { bumps 0.18 scale 0.06 } finish { diffuse 0.52 ambient 0.14 specular 0.20 roughness 0.06 } } // Float pose and placement translate <0, 1.05, 0> rotate <0, -12, 0> }; object { Puppet } // ------------------------------------------------------------------ // Marionette strings (thin, bumped) // ------------------------------------------------------------------ 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) + bump to catch specular // ------------------------------------------------------------------ #declare Tex_OrbBlue = texture{ pigment{ color rgb <0.62,0.82,1.00> } normal { bumps 0.25 scale 0.10 } finish { Fin_Glow } } #declare Tex_OrbPink = texture{ pigment{ color rgb <1.00,0.74,0.88> } normal { bumps 0.25 scale 0.10 } finish { Fin_Glow } } #declare Tex_OrbGold = texture{ pigment{ color rgb <1.00,0.95,0.70> } normal { bumps 0.25 scale 0.10 } finish { Fin_Glow } } sphere { <-3.2, 3.1, 2.0>, 0.45 texture { Tex_OrbBlue } } sphere { < 2.9, 2.05, 2.9>, 0.35 texture { Tex_OrbPink } } sphere { < 0.9, 4.9, 1.8>, 0.28 texture { Tex_OrbGold } } // ------------------------------------------------------------------ // “Dream frame” arc behind (kept) + subtle bump // ------------------------------------------------------------------ torus { 3.4, 0.06 rotate <90, 0, 0> translate <0, 2.45, 3.8> pigment { color rgb <0.26, 0.27, 0.32> } normal { bumps 0.18 scale 0.12 } finish { diffuse 0.65 specular 0.06 roughness 0.15 } } // ------------------------------------------------------------------ // Floating "Z" sleep symbols (bumped) // ------------------------------------------------------------------ #declare Tex_Z = texture{ pigment { color rgb <0.78,0.84,1.00> } normal { bumps 0.22 scale 0.06 } finish { diffuse 0.25 ambient 0.24 specular 0.07 roughness 0.12 } } #macro ZShape(Pos, Sc, RotY) union{ 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.95,5.15,1.85>, 0.55, -10) ZShape(<-0.25,5.70,1.55>, 0.42, 15) ZShape(< 0.55,6.10,1.35>, 0.32, 25)