#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 (FIXED): use sky_sphere for a vertical gradient // ------------------------------------------------------------------ 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.11,0.10,0.14>] } scale 2 translate -1 } } // ------------------------------------------------------------------ // Camera (zoom/reframe to fit whole puppet incl. strings) // ------------------------------------------------------------------ camera { location <6.8, 4.4, -16.8> look_at <0.0, 2.7, 0.5> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } // ------------------------------------------------------------------ // Warm lights with soft shadows // ------------------------------------------------------------------ light_source { <10, 12, -14> color rgb <1.00, 0.86, 0.70>*1.10 area_light <3,0,0>, <0,0,3>, 6, 6 adaptive 1 jitter } light_source { <-9, 9, -7> color rgb <1.00, 0.78, 0.62>*0.55 area_light <2,0,0>, <0,0,2>, 5, 5 adaptive 1 jitter } light_source { <0, 14, 7> color rgb <1.00, 0.90, 0.80>*0.35 area_light <2.5,0,0>, <0,0,2.5>, 5, 5 adaptive 1 jitter } // ------------------------------------------------------------------ // Finishes (simple, fast) // ------------------------------------------------------------------ #declare Fin_Soft = finish { diffuse 0.80 specular 0.10 roughness 0.06 }; #declare Fin_Cloth = finish { diffuse 0.88 specular 0.06 roughness 0.14 }; #declare Fin_Wood = finish { diffuse 0.78 specular 0.14 roughness 0.07 }; #declare Fin_Glow = finish { diffuse 0.35 ambient 0.22 specular 0.10 roughness 0.08 }; // ------------------------------------------------------------------ // Textures (procedural; no image maps; quick) // ------------------------------------------------------------------ #declare Tex_Wood = texture{ pigment{ wood turbulence 0.10 omega 0.55 lambda 2.0 color_map{ [0.00 color rgb <0.50,0.40,0.30>] [0.45 color rgb <0.62,0.50,0.38>] [1.00 color rgb <0.40,0.32,0.24>] } scale 0.32 rotate <0,90,0> } finish{ Fin_Wood } } #declare Tex_Cloth = texture{ pigment{ wrinkles turbulence 0.25 color_map{ [0.0 color rgb <0.30,0.36,0.52>] [1.0 color rgb <0.48,0.54,0.72>] } scale 0.40 } finish{ Fin_Cloth } } #declare Tex_Skin = texture{ pigment{ granite color_map{ [0.0 color rgb <0.84,0.77,0.70>] [1.0 color rgb <0.95,0.89,0.82>] } scale 0.25 } finish{ diffuse 0.78 specular 0.10 roughness 0.07 } } #declare Tex_String = texture{ pigment{ bozo color_map{ [0.0 color rgb <0.62,0.58,0.52>] [1.0 color rgb <0.80,0.75,0.68>] } scale 0.08 } finish{ diffuse 0.35 specular 0.05 roughness 0.20 } } // ------------------------------------------------------------------ // Ground (dreamy matte) // ------------------------------------------------------------------ plane { y, 0 texture{ pigment{ bozo color_map{ [0.0 color rgb <0.10,0.10,0.12>] [1.0 color rgb <0.14,0.14,0.17>] } scale 1.6 } finish{ diffuse 0.70 specular 0.03 roughness 0.20 } } } // ------------------------------------------------------------------ // Subtle fog for dream ambience (fast) // ------------------------------------------------------------------ fog { distance 30 color rgb <0.10, 0.11, 0.14> fog_type 2 fog_offset 0.0 fog_alt 2.3 turbulence 0.18 } // ------------------------------------------------------------------ // Marionette Figure (floating) // ------------------------------------------------------------------ #declare Puppet = union { // Torso capsule (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 { Tex_Cloth } } // 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) 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 (moon) 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.95, 0.90, 0.72> } finish { diffuse 0.55 ambient 0.10 specular 0.20 roughness 0.06 } } // Float pose and placement translate <0, 1.05, 0> rotate <0, -12, 0> }; object { Puppet } // ------------------------------------------------------------------ // Marionette strings (textured) // ------------------------------------------------------------------ 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 (soft glow with subtle marbling) // ------------------------------------------------------------------ #declare Tex_OrbBlue = texture{ pigment{ marble turbulence 0.7 color_map{ [0.0 color rgb <0.45,0.70,1.00>] [1.0 color rgb <0.75,0.92,1.00>] } scale 0.35 } finish{ Fin_Glow } } #declare Tex_OrbPink = texture{ pigment{ marble turbulence 0.7 color_map{ [0.0 color rgb <0.96,0.66,0.82>] [1.0 color rgb <1.00,0.86,0.92>] } scale 0.35 } finish{ Fin_Glow } } #declare Tex_OrbGold = texture{ pigment{ marble turbulence 0.7 color_map{ [0.0 color rgb <1.00,0.92,0.62>] [1.0 color rgb <1.00,0.98,0.80>] } scale 0.35 } 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 // ------------------------------------------------------------------ torus { 3.4, 0.06 rotate <90, 0, 0> translate <0, 2.4, 3.6> pigment { color rgb <0.25, 0.26, 0.30> } finish { diffuse 0.7 specular 0.05 roughness 0.15 } }