#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.78, 0.68> } camera { location <0, 3.25, -10.8> look_at <0, 2.35, 0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } light_source { <6, 10, -8> color rgb <1.00, 0.82, 0.65>*1.10 area_light <3,0,0>, <0,0,3>, 5, 5 adaptive 1 jitter } light_source { <-7, 7, -6> color rgb <1.00, 0.85, 0.70>*0.60 area_light <2.5,0,0>, <0,0,2.5>, 5, 5 adaptive 1 jitter } light_source { <0, 8, 6> color rgb <1.00, 0.88, 0.75>*0.30 area_light <2,0,0>, <0,0,2>, 4, 4 adaptive 1 jitter } // --- Materials (simple shading, no textures) --- #declare ClayPigment = pigment { color rgb <0.43, 0.38, 0.34> }; #declare ClayFinish = finish { diffuse 0.86 specular 0.10 roughness 0.08 }; // --- Ground + backdrop card (fast, simple) --- plane { y, 0 pigment { color rgb <0.70, 0.63, 0.58> } finish { diffuse 0.9 specular 0.05 roughness 0.12 } } union { plane { z, 4.2 pigment { color rgb <0.92, 0.78, 0.68> } finish { diffuse 1 } } // slight “card” top to feel like a sweep plane { y, 0 pigment { color rgb <0.70, 0.63, 0.58> } finish { diffuse 0.9 specular 0.05 roughness 0.12 } } } // ------------------------------------------------------------------ // Prague Golem (blobby body + hard-edged held tablet; cutouts via CSG) // ------------------------------------------------------------------ #declare GolemBody = blob { threshold 0.62 // --- BODY MASS (big rounded, squat) --- // torso core sphere { <0, 2.25, 0>, 1.55, 1.15 } sphere { <0, 1.65, 0>, 1.40, 1.05 } sphere { <0, 3.00, 0>, 1.20, 0.95 } // shoulders (broad) sphere { <-1.55, 2.85, 0>, 1.30, 1.05 } sphere { < 1.55, 2.85, 0>, 1.30, 1.05 } sphere { <-1.85, 2.55, 0>, 1.10, 0.85 } sphere { < 1.85, 2.55, 0>, 1.10, 0.85 } // head (dome, continuous with shoulders) sphere { <0, 3.85, 0>, 1.15, 1.05 } sphere { <0, 4.30, 0>, 0.80, 0.90 } // arms (bulky and forward) cylinder { <-2.35, 2.55, -0.25>, <-1.05, 1.95, -0.45>, 0.78, 0.95 } cylinder { < 2.35, 2.55, -0.25>, < 1.05, 1.95, -0.45>, 0.78, 0.95 } sphere { <-0.95, 1.90, -0.55>, 0.78, 0.95 } sphere { < 0.95, 1.90, -0.55>, 0.78, 0.95 } // hands (simple blobs with finger hints) sphere { <-0.85, 1.60, -0.95>, 0.62, 0.95 } sphere { < 0.85, 1.60, -0.95>, 0.62, 0.95 } sphere { <-1.20, 1.55, -1.05>, 0.24, 0.55 } sphere { <-0.98, 1.43, -1.10>, 0.24, 0.55 } sphere { <-0.76, 1.52, -1.10>, 0.24, 0.55 } sphere { < 1.20, 1.55, -1.05>, 0.24, 0.55 } sphere { < 0.98, 1.43, -1.10>, 0.24, 0.55 } sphere { < 0.76, 1.52, -1.10>, 0.24, 0.55 } // legs (two stumpy columns) cylinder { <-0.65, 0.05, 0>, <-0.65, 1.25, 0>, 0.78, 1.05 } cylinder { < 0.65, 0.05, 0>, < 0.65, 1.25, 0>, 0.78, 1.05 } sphere { <-0.65, 0.15, 0.15>, 0.82, 0.85 } sphere { < 0.65, 0.15, 0.15>, 0.82, 0.85 } sphere { <-0.65, 1.25, 0.05>, 0.75, 0.85 } sphere { < 0.65, 1.25, 0.05>, 0.75, 0.85 } // subtle separation between legs (negative) cylinder { <0, 0.05, 0.30>, <0, 1.40, 0.30>, 0.20, -0.55 } // clamp bottom so it sits precisely on the ground plane clipped_by { plane { y, 0 } } }; #declare Tablet = difference { // A simple held "book/tablet" assembly union { // left slab (open cover feel) box { <-0.35, 1.35, -1.25>, <0.10, 2.70, -0.70> } // right slab (front plate) box { < 0.10, 1.35, -1.10>, <0.70, 2.70, -0.55> } // bottom bar box { <-0.55, 1.25, -1.15>, <0.75, 1.55, -0.55> } } // carved "button" hole on the right plate cylinder { <0.55, 2.35, -0.45>, <0.55, 2.35, -0.80>, 0.10 } // slightly bevel outer edges (cheap: nibble corners) sphere { <-0.35, 2.70, -1.25>, 0.10 } sphere { < 0.70, 2.70, -1.10>, 0.10 } sphere { <-0.55, 1.25, -1.15>, 0.10 } sphere { < 0.75, 1.25, -1.15>, 0.10 } }; #declare GolemCutouts = union { // forehead dot sphere { <0, 4.15, -0.60>, 0.20 } // triangular eye holes (approximated with cones) cone { <-0.28, 3.72, -0.55>, 0.26, <-0.28, 3.48, -0.95>, 0.02 } cone { < 0.28, 3.72, -0.55>, 0.26, < 0.28, 3.48, -0.95>, 0.02 } // mouth slit box { <-0.42, 3.18, -0.85>, <0.42, 3.30, -0.55> } // chest cavity (rectangular-ish) box { <-0.28, 2.00, -1.10>, <0.28, 3.05, -0.35> } // inner scoop so it doesn't look perfectly boxy sphere { <0.00, 2.50, -0.78>, 0.52 } // notch / bite at top of cavity (angled) prism { linear_sweep linear_spline -0.20, 0.20, 4, <-0.35, 0.00>, <0.35, 0.00>, <0.05, 0.55>, <-0.25, 0.55> rotate <90,0,0> scale <1,1,1> translate <0.00, 2.85, -0.70> } }; #declare Golem = union { // Body with carved features removed difference { object { GolemBody } object { GolemCutouts } } // Held tablet/book object { Tablet } pigment { ClayPigment } finish { ClayFinish } }; object { Golem scale 1.0 translate <0, 0, 0> }