#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.96, 0.97, 0.99> } // Camera (16:9 as requested) camera { location <6.0, 4.2, -9.0> look_at <0.0, 2.2, 0.0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } // Warm, soft-ish lighting (area lights for soft shadows) light_source { <6, 10, -10> color rgb <1.00, 0.88, 0.72>*1.1 area_light <2,0,0>, <0,0,2>, 5, 5 adaptive 1 jitter } light_source { <-7, 7, -3> color rgb <1.00, 0.92, 0.80>*0.6 area_light <1.5,0,0>, <0,0,1.5>, 4, 4 adaptive 1 jitter } // Simple materials (no image textures) #declare C_Wood = color rgb <0.62, 0.44, 0.28>; #declare C_Metal = color rgb <0.72, 0.72, 0.75>; #declare C_Cloth = color rgb <0.30, 0.45, 0.70>; #declare C_Skin = color rgb <0.88, 0.74, 0.62>; #declare C_String= color rgb <0.95, 0.95, 0.92>; #declare C_Floor = color rgb <0.93, 0.92, 0.90>; #declare C_Wall = color rgb <0.98, 0.98, 0.99>; #declare Finish_Matte = finish { diffuse 0.85 specular 0.08 roughness 0.08 }; #declare Finish_Soft = finish { diffuse 0.80 specular 0.15 roughness 0.05 }; // Stage: floor + back wall plane { y, 0 pigment { C_Floor } finish { Finish_Matte } } plane { z, 4.5 pigment { C_Wall } finish { Finish_Matte } } // Helper macro: capsule-like limb (cylinder + two spheres) #macro Capsule(P1, P2, R, Col) union { cylinder { P1, P2, R } sphere { P1, R } sphere { P2, R } pigment { Col } finish { Finish_Soft } } #end // Marionette stand #declare Stand_Y0 = 0.0; #declare Stand_Y1 = 6.0; union { // base cylinder { <0, Stand_Y0, 0>, <0, Stand_Y0+0.12, 0>, 1.2 pigment { C_Wood } finish { Finish_Matte } } // vertical post cylinder { <0, Stand_Y0+0.12, 0>, <0, Stand_Y1, 0>, 0.18 pigment { C_Wood } finish { Finish_Matte } } // top crossbar cylinder { <-2.2, Stand_Y1, 0>, <2.2, Stand_Y1, 0>, 0.12 pigment { C_Wood } finish { Finish_Matte } } // small end caps sphere { <-2.2, Stand_Y1, 0>, 0.14 pigment { C_Wood } finish { Finish_Matte } } sphere { < 2.2, Stand_Y1, 0>, 0.14 pigment { C_Wood } finish { Finish_Matte } } translate <0,0,0> } // Marionette body dimensions and key points #declare HipY = 2.0; #declare BellyY = 2.55; #declare ChestY = 3.15; #declare NeckY = 3.70; #declare HeadY = 4.05; #declare ShoulderY = 3.20; #declare ShoulderX = 0.65; #declare ElbowY = 2.75; #declare WristY = 2.35; #declare HandY = 2.25; #declare ArmOutX = 1.55; #declare KneeY = 1.20; #declare AnkleY = 0.45; #declare FootZ = 0.20; #declare LegX = 0.35; #declare JointR = 0.10; // Marionette (assembled in a union for easy positioning) union { // Head sphere { <0, HeadY, 0>, 0.33 pigment { C_Skin } finish { Finish_Soft } } // Neck cylinder { <0, NeckY, 0>, <0, HeadY-0.30, 0>, 0.11 pigment { C_Skin } finish { Finish_Soft } } // Torso (simple stacked cylinders) cylinder { <0, BellyY, 0>, <0, ChestY, 0>, 0.45 pigment { C_Cloth } finish { Finish_Soft } } // Pelvis cylinder { <0, HipY, 0>, <0, BellyY, 0>, 0.38 pigment { C_Cloth } finish { Finish_Soft } } // Shoulder bar (as a metal yoke inside body) cylinder { <-0.75, ShoulderY, 0>, <0.75, ShoulderY, 0>, 0.06 pigment { C_Metal } finish { Finish_Soft } } // Arms (left/right) // Left upper arm to elbow object { Capsule(<-ShoulderX, ShoulderY, 0>, <-ArmOutX, ElbowY, 0>, 0.12, C_Cloth) } // Left forearm to hand object { Capsule(<-ArmOutX, ElbowY, 0>, <-1.35, WristY, 0>, 0.11, C_Cloth) } sphere { <-1.35, HandY, 0>, 0.14 pigment { C_Skin } finish { Finish_Soft } } // Right upper arm object { Capsule(< ShoulderX, ShoulderY, 0>, < ArmOutX, ElbowY, 0>, 0.12, C_Cloth) } // Right forearm object { Capsule(< ArmOutX, ElbowY, 0>, < 1.35, WristY, 0>, 0.11, C_Cloth) } sphere { <1.35, HandY, 0>, 0.14 pigment { C_Skin } finish { Finish_Soft } } // Joints (simple spheres at shoulders/elbows) sphere { <-ShoulderX, ShoulderY, 0>, JointR pigment { C_Metal } finish { Finish_Soft } } sphere { < ShoulderX, ShoulderY, 0>, JointR pigment { C_Metal } finish { Finish_Soft } } sphere { <-ArmOutX, ElbowY, 0>, JointR pigment { C_Metal } finish { Finish_Soft } } sphere { < ArmOutX, ElbowY, 0>, JointR pigment { C_Metal } finish { Finish_Soft } } // Legs (left/right) // Left thigh object { Capsule(<-LegX, HipY, 0>, <-LegX, KneeY, 0>, 0.13, C_Cloth) } // Left shin object { Capsule(<-LegX, KneeY, 0>, <-LegX, AnkleY, 0>, 0.12, C_Cloth) } // Left foot box { <-0.22, AnkleY-0.08, -0.12>, <0.08, AnkleY+0.08, 0.32> pigment { C_Metal } finish { Finish_Soft } translate <-LegX, 0, 0> } // Right thigh object { Capsule(< LegX, HipY, 0>, < LegX, KneeY, 0>, 0.13, C_Cloth) } // Right shin object { Capsule(< LegX, KneeY, 0>, < LegX, AnkleY, 0>, 0.12, C_Cloth) } // Right foot box { <-0.08, AnkleY-0.08, -0.12>, <0.22, AnkleY+0.08, 0.32> pigment { C_Metal } finish { Finish_Soft } translate } // Knee joints sphere { <-LegX, KneeY, 0>, JointR pigment { C_Metal } finish { Finish_Soft } } sphere { < LegX, KneeY, 0>, JointR pigment { C_Metal } finish { Finish_Soft } } // Small hanging hook on head (for string) cylinder { <0, HeadY+0.28, 0>, <0, HeadY+0.40, 0>, 0.03 pigment { C_Metal } finish { Finish_Soft } } torus { 0.06, 0.02 rotate <90,0,0> translate <0, HeadY+0.42, 0> pigment { C_Metal } finish { Finish_Soft } } } // Strings from crossbar to marionette points (thin cylinders) #declare StringR = 0.012; #declare TopL = <-1.7, Stand_Y1, 0>; #declare TopR = < 1.7, Stand_Y1, 0>; #declare TopC = < 0.0, Stand_Y1, 0>; #declare PtHead = <0, HeadY+0.42, 0>; #declare PtLS = <-ShoulderX, ShoulderY, 0>; #declare PtRS = < ShoulderX, ShoulderY, 0>; #declare PtLH = <-1.35, HandY, 0>; #declare PtRH = < 1.35, HandY, 0>; union { cylinder { TopC, PtHead, StringR pigment { C_String } finish { Finish_Matte } } cylinder { TopL, PtLS, StringR pigment { C_String } finish { Finish_Matte } } cylinder { TopR, PtRS, StringR pigment { C_String } finish { Finish_Matte } } cylinder { TopL, PtLH, StringR pigment { C_String } finish { Finish_Matte } } cylinder { TopR, PtRH, StringR pigment { C_String } finish { Finish_Matte } } } // Subtle stand shadow catcher (kept simple by just the floor plane) // Done.