#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 } } #include "colors.inc" // ------------------------------------------------------------ // Camera + background (warm studio like the references) // ------------------------------------------------------------ background { color rgb <0.95, 0.78, 0.68> } camera { location <0, 3.2, -9.6> look_at <0, 2.55, 0.0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } // ------------------------------------------------------------ // Warm, soft lights (area lights = soft shadows) // ------------------------------------------------------------ light_source { <7, 10, -8> color rgb <1.00, 0.84, 0.68>*1.15 area_light <3.2,0,0>, <0,0,3.2>, 6, 6 adaptive 1 jitter } light_source { <-7, 9, -6> color rgb <1.00, 0.86, 0.72>*0.70 area_light <3.0,0,0>, <0,0,3.0>, 6, 6 adaptive 1 jitter } light_source { <0, 10, 7> color rgb <1.00, 0.92, 0.80>*0.28 area_light <2.4,0,0>, <0,0,2.4>, 5, 5 adaptive 1 jitter } // ------------------------------------------------------------ // Studio sweep (floor + curved backdrop) // ------------------------------------------------------------ #declare SweepCol = <0.95, 0.78, 0.68>; #declare FloorCol = <0.72, 0.64, 0.60>; #declare SweepFinish = finish { diffuse 0.95 specular 0.03 roughness 0.18 ambient 0 } #declare FloorFinish = finish { diffuse 0.90 specular 0.05 roughness 0.12 ambient 0 } union { plane { y, 0 pigment { color rgb FloorCol } finish { FloorFinish } } // simple cyclorama curve difference { cylinder { <0, 0, 5.0>, <0, 7.0, 5.0>, 7.8 } cylinder { <0, 0, 5.1>, <0, 7.0, 5.1>, 7.2 } plane { z, 4.25 inverse } } pigment { color rgb SweepCol } finish { SweepFinish } } // ------------------------------------------------------------ // Materials: clay/stone (procedural, fast, NO parse-error constructs) // ------------------------------------------------------------ #declare ClayBaseCol = <0.46, 0.40, 0.35>; #declare ClayDark = <0.30, 0.26, 0.23>; #declare ClayLight = <0.58, 0.51, 0.45>; #declare ClaySpeck = <0.74, 0.68, 0.60>; // Base mottling #declare ClayPig1 = pigment { bozo color_map { [0.00 color rgb ClayDark] [0.45 color rgb ClayBaseCol] [0.80 color rgb ClayLight] [1.00 color rgb (ClayLight*1.06)] } scale 0.60 turbulence 0.65 omega 0.55 lambda 2.2 } // Speckle overlay (small bright grains) #declare ClayPig2 = pigment { granite color_map { [0.00 color rgbt ] [0.72 color rgbt ] [0.82 color rgb ClaySpeck] [1.00 color rgb ClaySpeck] } scale 0.20 } // Proper average pigment_map syntax: each entry is [Weight Pigment] #declare ClayPigment = pigment { average pigment_map { [1.00 ClayPig1] [0.35 ClayPig2] } } #declare ClayNormal = normal { average normal_map { [0.70 bumps 0.22 scale 0.06] [0.45 wrinkles 0.32 scale 0.45] } } #declare ClayFinish = finish { diffuse 0.88 specular 0.18 roughness 0.07 ambient 0.0 } #declare TabletFinish = finish { diffuse 0.85 specular 0.22 roughness 0.06 ambient 0.0 } // ------------------------------------------------------------ // Prague Golem (blobs) + cutouts + emissive eyes/scars // ------------------------------------------------------------ #declare GolemBody = blob { threshold 0.62 // torso (squat) sphere { <0, 2.35, 0>, 1.70, 1.15 } sphere { <0, 1.65, 0>, 1.55, 1.10 } sphere { <0, 3.05, 0>, 1.28, 1.00 } // shoulders (very broad) sphere { <-1.80, 2.92, 0>, 1.52, 1.08 } sphere { < 1.80, 2.92, 0>, 1.52, 1.08 } sphere { <-2.10, 2.60, 0>, 1.25, 0.88 } sphere { < 2.10, 2.60, 0>, 1.25, 0.88 } // head dome sphere { <0, 3.95, 0>, 1.28, 1.05 } sphere { <0, 4.48, 0>, 0.90, 0.92 } // arms (wrapped forward) cylinder { <-2.75, 2.55, -0.10>, <-1.15, 2.00, -0.60>, 0.90, 0.95 } cylinder { < 2.75, 2.55, -0.10>, < 1.15, 2.00, -0.60>, 0.90, 0.95 } sphere { <-1.08, 1.95, -0.70>, 0.88, 0.95 } sphere { < 1.08, 1.95, -0.70>, 0.88, 0.95 } // hands sphere { <-0.98, 1.60, -1.10>, 0.72, 0.98 } sphere { < 0.98, 1.60, -1.10>, 0.72, 0.98 } // finger hints (simple blobs) sphere { <-1.33, 1.55, -1.20>, 0.26, 0.55 } sphere { <-1.06, 1.42, -1.27>, 0.25, 0.55 } sphere { <-0.78, 1.52, -1.27>, 0.25, 0.55 } sphere { < 1.33, 1.55, -1.20>, 0.26, 0.55 } sphere { < 1.06, 1.42, -1.27>, 0.25, 0.55 } sphere { < 0.78, 1.52, -1.27>, 0.25, 0.55 } // legs (stumpy) cylinder { <-0.72, 0.05, 0>, <-0.72, 1.35, 0>, 0.88, 1.05 } cylinder { < 0.72, 0.05, 0>, < 0.72, 1.35, 0>, 0.88, 1.05 } sphere { <-0.72, 0.15, 0.18>, 0.95, 0.90 } sphere { < 0.72, 0.15, 0.18>, 0.95, 0.90 } sphere { <-0.72, 1.35, 0.05>, 0.85, 0.88 } sphere { < 0.72, 1.35, 0.05>, 0.85, 0.88 } // leg separation (negative) cylinder { <0, 0.05, 0.30>, <0, 1.55, 0.30>, 0.24, -0.60 } // clamp to ground precisely clipped_by { plane { y, 0 } } } // Tablet/book block the golem holds #declare Tablet = difference { union { // left slab box { <-0.44, 1.35, -1.38>, <0.08, 2.80, -0.80> } // right slab box { < 0.08, 1.35, -1.22>, <0.82, 2.80, -0.62> } // bottom bar box { <-0.70, 1.22, -1.28>, <0.92, 1.60, -0.62> } } // right plate dot/hole cylinder { <0.62, 2.42, -0.55>, <0.62, 2.42, -0.98>, 0.11 } // mild corner softening via subtractive spheres sphere { <-0.44, 2.80, -1.38>, 0.11 } sphere { < 0.82, 2.80, -1.22>, 0.11 } sphere { <-0.70, 1.22, -1.28>, 0.11 } sphere { < 0.92, 1.22, -1.28>, 0.11 } } // Cutouts/holes matching the reference sculpture #declare GolemCutouts = union { // forehead dot sphere { <0, 4.22, -0.62>, 0.20 } // triangular eye holes (tapered cones) cone { <-0.32, 3.78, -0.56>, 0.30, <-0.32, 3.48, -1.10>, 0.01 } cone { < 0.32, 3.78, -0.56>, 0.30, < 0.32, 3.48, -1.10>, 0.01 } // mouth slit box { <-0.55, 3.18, -0.94>, <0.55, 3.34, -0.58> } // chest cavity (rectangular-ish with rounded assist) box { <-0.36, 2.00, -1.26>, <0.36, 3.15, -0.34> } sphere { <0.00, 2.55, -0.92>, 0.64 } // angled bite/ledge at top of cavity prism { linear_sweep linear_spline -0.22, 0.22, 4, <-0.44, 0.00>, <0.44, 0.00>, <0.10, 0.62>, <-0.30, 0.62> rotate <90,0,0> translate <0.00, 2.98, -0.80> } } // ------------------------------------------------------------ // Glow: eyes + scars (emissive geometry behind openings) // ------------------------------------------------------------ #declare GlowColor = <1.00, 0.70, 0.28>; // warm amber #declare GlowFinish = finish { diffuse 0 ambient 1.0 emission 1.0 specular 0 } #declare EyeGlow = union { // place behind the eye holes so it shines out cone { <-0.32, 3.72, -0.95>, 0.22, <-0.32, 3.55, -1.34>, 0.02 } cone { < 0.32, 3.72, -0.95>, 0.22, < 0.32, 3.55, -1.34>, 0.02 } pigment { color rgb GlowColor } finish { GlowFinish } } #declare ScarGlow = union { // front torso glowing cracks/scars (thin cylinders + beads) cylinder { <-0.62, 2.70, -1.04>, <-0.18, 2.38, -1.00>, 0.045 } cylinder { <-0.15, 2.92, -1.00>, < 0.34, 2.58, -0.98>, 0.040 } cylinder { < 0.28, 2.34, -1.00>, < 0.62, 2.06, -0.93>, 0.042 } cylinder { <-0.26, 2.18, -1.00>, < 0.18, 1.92, -0.93>, 0.038 } sphere { <-0.62, 2.70, -1.04>, 0.060 } sphere { <-0.18, 2.38, -1.00>, 0.055 } sphere { < 0.34, 2.58, -0.98>, 0.055 } sphere { < 0.62, 2.06, -0.93>, 0.060 } pigment { color rgb (GlowColor*0.95) } finish { GlowFinish } } // ------------------------------------------------------------ // Assemble golem // ------------------------------------------------------------ #declare Golem = union { // Carved body difference { object { GolemBody } object { GolemCutouts } } // Tablet (same clay but slightly crisper) object { Tablet pigment { ClayPigment } normal { ClayNormal } finish { TabletFinish } } // Glows object { EyeGlow } object { ScarGlow } // Body material pigment { ClayPigment } normal { ClayNormal } finish { ClayFinish } } // Contact shadow helper (subtle) #declare ShadowPad = disc { <0,0.001,0>, y, 2.35 pigment { color rgbt <0.06, 0.05, 0.04, 0.78> } finish { diffuse 0.0 ambient 0.9 } } object { ShadowPad } object { Golem }