#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.92, 0.80, 0.72> } camera { location <0, 3.0, -12.5> look_at <0, 2.3, 0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } light_source { <10, 12, -14> color rgb <1.00, 0.86, 0.72>*1.10 area_light <3,0,0>, <0,0,3>, 6, 6 adaptive 1 jitter } light_source { <-9, 7, -10> color rgb <1.00, 0.88, 0.78>*0.55 area_light <2.5,0,0>, <0,0,2.5>, 5, 5 adaptive 1 jitter } light_source { <0, 9, 10> color rgb <1.00, 0.90, 0.82>*0.35 area_light <3,0,0>, <0,0,3>, 4, 4 adaptive 1 jitter } #declare MatGolem = finish { diffuse 0.85 specular 0.10 roughness 0.08 }; #declare ColGolem = color rgb <0.45, 0.36, 0.30>; #declare MatTablet = finish { diffuse 0.85 specular 0.08 roughness 0.10 }; #declare ColTablet = color rgb <0.50, 0.40, 0.34>; /* Ground */ plane { y, 0 pigment { color rgb <0.83, 0.72, 0.64> } finish { diffuse 0.9 specular 0.05 roughness 0.12 } } /* Golem: blobby clay figure + carved openings + tablet */ #declare GolemBlob = blob { threshold 0.60 // --- Main head/torso mass (domed) --- sphere { <0, 3.35, 0.10>, 1.55, 1.20 } // head dome sphere { <0, 2.45, 0.10>, 1.70, 1.25 } // upper torso sphere { <0, 1.55, 0.10>, 1.55, 1.10 } // belly // --- Shoulders / upper arms (big rounded) --- sphere { <-1.55, 2.55, 0.15>, 1.25, 1.20 } sphere { < 1.55, 2.55, 0.15>, 1.25, 1.20 } // --- Forearms (wrap toward center) --- cylinder { <-1.45, 2.05, 0.30>, <-0.45, 1.80, 0.55>, 0.65, 1.05 } cylinder { < 1.45, 2.05, 0.30>, < 0.45, 1.80, 0.55>, 0.65, 1.05 } sphere { <-0.70, 1.78, 0.65>, 0.75, 1.10 } // left hand blob sphere { < 0.70, 1.78, 0.65>, 0.75, 1.10 } // right hand blob // finger bumps (simple) sphere { <-0.92, 1.62, 0.88>, 0.20, 0.55 } sphere { <-0.70, 1.60, 0.92>, 0.18, 0.55 } sphere { <-0.48, 1.61, 0.90>, 0.17, 0.55 } sphere { <0.92, 1.62, 0.88>, 0.20, 0.55 } sphere { <0.70, 1.60, 0.92>, 0.18, 0.55 } sphere { <0.48, 1.61, 0.90>, 0.17, 0.55 } // --- Legs (two chunky stumps) --- cylinder { <-0.60, 0.15, 0.05>, <-0.60, 1.00, 0.05>, 0.72, 1.30 } cylinder { < 0.60, 0.15, 0.05>, < 0.60, 1.00, 0.05>, 0.72, 1.30 } sphere { <-0.60, 0.15, 0.05>, 0.78, 1.10 } sphere { < 0.60, 0.15, 0.05>, 0.78, 1.10 } // inner thigh bridge / crotch area sphere { <0, 0.85, 0.10>, 0.65, 0.70 } // --- Subtle back bulge to avoid flat rear --- sphere { <0, 2.10, -0.55>, 1.25, 0.60 } pigment { ColGolem } finish { MatGolem } } /* Tablet/book held in front */ #declare Tablet = box { <-0.48, 1.45, 0.38>, <0.48, 2.75, 0.92> // rounded edges via small bevel approximation (fast): scale <1,1,1> pigment { ColTablet } finish { MatTablet } } /* Carving helpers (boolean cutters) */ #declare CutEyeL = prism { linear_sweep linear_spline 0, 1.0, 4, <0.00, 0.00>, <0.40, 0.00>, <0.20, 0.32>, <0.00, 0.00> rotate <0, 0, 0> scale <1.0, 1.0, 1.0> } #declare CutEyeR = prism { linear_sweep linear_spline 0, 1.0, 4, <0.00, 0.00>, <0.40, 0.00>, <0.20, 0.32>, <0.00, 0.00> rotate <0, 0, 0> scale <1.0, 1.0, 1.0> } #declare CutMouth = box { <-0.75, 2.65, 0.55>, <0.75, 2.78, 1.25> } #declare CutChest = box { <-0.55, 1.90, 0.35>, <0.15, 2.55, 1.25> } #declare CutChestTri = prism { linear_sweep linear_spline 0, 1.2, 4, <0.00, 0.00>, <0.60, 0.00>, <0.30, 0.70>, <0.00, 0.00> scale <1,1,1> } #declare CutDotForehead = cylinder { <0, 3.65, 0.85>, <0, 3.65, 1.40>, 0.18 } #declare CutDotTablet = cylinder { <0.25, 2.35, 0.95>, <0.25, 2.35, 1.20>, 0.12 } /* Assemble */ union { difference { object { GolemBlob } // eyes (two small triangular cavities) object { CutEyeL translate <-0.55, 3.05, 0.82> rotate <90, 0, 0> } object { CutEyeR translate < 0.15, 3.05, 0.82> rotate <90, 0, 0> } // mouth slit object { CutMouth } // chest opening (rect + triangle feel) object { CutChest } object { CutChestTri translate <-0.55, 2.05, 0.55> rotate <90, 0, 0> scale <1.4, 1.4, 1.0> } // forehead dot object { CutDotForehead } } // tablet (in front) difference { object { Tablet } object { CutDotTablet } } translate <0, 0.0, 0> }