#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 8 } background { color rgb <0.92, 0.96, 1.0> } camera { location <0, 2.2, -7.5> look_at <0, 1.7, 0> angle 35 } light_source { <6, 10, -10> color rgb <1,1,1> } light_source { <-6, 6, -4> color rgb <0.45,0.5,0.6> } plane { y, 0 texture { pigment { color rgb <0.95, 0.95, 0.98> } finish { diffuse 0.85 specular 0.1 roughness 0.06 } } } #declare SkinTex = texture { pigment { color rgb <0.98, 0.80, 0.68> } finish { diffuse 0.9 specular 0.25 roughness 0.04 } }; #declare EyeWhiteTex = texture { pigment { color rgb <1,1,1> } finish { diffuse 0.9 specular 0.4 roughness 0.02 } }; #declare PupilTex = texture { pigment { color rgb <0.08, 0.14, 0.20> } finish { diffuse 0.9 specular 0.3 roughness 0.03 } }; #declare HairTex = texture { pigment { color rgb <0.12, 0.08, 0.05> } finish { diffuse 0.9 specular 0.15 roughness 0.08 } }; #declare ShirtTex = texture { pigment { color rgb <0.20, 0.55, 0.90> } finish { diffuse 0.9 specular 0.2 roughness 0.05 } }; #declare PantsTex = texture { pigment { color rgb <0.16, 0.18, 0.22> } finish { diffuse 0.9 specular 0.15 roughness 0.06 } }; #declare ShoeTex = texture { pigment { color rgb <0.12, 0.12, 0.13> } finish { diffuse 0.9 specular 0.25 roughness 0.04 } }; #declare MouthTex = texture { pigment { color rgb <0.55, 0.18, 0.18> } finish { diffuse 0.9 specular 0.15 roughness 0.08 } }; #declare BeltTex = texture { pigment { color rgb <0.05,0.05,0.06> } finish { diffuse 0.8 specular 0.2 roughness 0.06 } }; // Helper macro for rounded box without includes #macro roundedbox(MinC, MaxC, R) union { box { , } box { , } box { , } cylinder { , , R } cylinder { , , R } cylinder { , , R } cylinder { , , R } cylinder { , , R } cylinder { , , R } cylinder { , , R } cylinder { , , R } sphere { , R } sphere { , R } sphere { , R } sphere { , R } sphere { , R } sphere { , R } sphere { , R } sphere { , R } } #end #declare CartoonHuman = union { // --- Head --- sphere { <0, 2.35, 0>, 0.55 texture { SkinTex } } // Hair cap difference { sphere { <0, 2.50, 0.05>, 0.58 } sphere { <0, 2.25, 0.05>, 0.58 } plane { y, 2.35 inverse } texture { HairTex } } // Small hair tuft cone { <0.18, 2.92, -0.05>, 0.12, <0.05, 2.55, 0.05>, 0.02 texture { HairTex } } // --- Face features --- sphere { <-0.18, 2.40, -0.47>, 0.10 texture { EyeWhiteTex } } sphere { < 0.18, 2.40, -0.47>, 0.10 texture { EyeWhiteTex } } sphere { <-0.16, 2.39, -0.54>, 0.05 texture { PupilTex } } sphere { < 0.20, 2.39, -0.54>, 0.05 texture { PupilTex } } sphere { <0.02, 2.28, -0.55>, 0.06 texture { SkinTex } } intersection { torus { 0.16, 0.035 rotate <90,0,0> translate <0.02, 2.15, -0.50> } box { <-0.35, 2.05, -0.80>, <0.35, 2.25, 0> } texture { MouthTex } } // --- Neck --- cylinder { <0, 1.78, 0>, <0, 2.05, 0>, 0.16 texture { SkinTex } } // --- Torso (shirt) --- blob { threshold 0.6 sphere { <0, 1.35, 0>, 0.65, 1.1 } sphere { <0, 1.05, 0.05>, 0.55, 1.0 } sphere { <0, 1.70, 0.00>, 0.40, 0.8 } texture { ShirtTex } scale <0.85, 1.0, 0.55> } // Belt line hint (fixed texture block) torus { 0.48, 0.03 rotate <90,0,0> translate <0, 0.95, 0> texture { BeltTex } scale <0.9, 1.0, 0.6> } // --- Arms --- cylinder { <-0.55, 1.55, 0>, <-1.05, 1.30, 0.10>, 0.12 texture { ShirtTex } } sphere { <-0.55, 1.55, 0>, 0.13 texture { ShirtTex } } sphere { <-1.05, 1.30, 0.10>, 0.13 texture { ShirtTex } } cylinder { <-1.05, 1.30, 0.10>, <-1.10, 0.90, -0.05>, 0.105 texture { SkinTex } } sphere { <-1.10, 0.90, -0.05>, 0.115 texture { SkinTex } } sphere { <-1.12, 0.78, -0.08>, 0.15 texture { SkinTex } } cylinder { <0.55, 1.55, 0>, <1.05, 1.25, 0.05>, 0.12 texture { ShirtTex } } sphere { <0.55, 1.55, 0>, 0.13 texture { ShirtTex } } sphere { <1.05, 1.25, 0.05>, 0.13 texture { ShirtTex } } cylinder { <1.05, 1.25, 0.05>, <0.98, 0.88, -0.20>, 0.105 texture { SkinTex } } sphere { <0.98, 0.88, -0.20>, 0.115 texture { SkinTex } } sphere { <0.94, 0.76, -0.26>, 0.15 texture { SkinTex } } // --- Hips (pants) rounded --- object { roundedbox(<-0.40, 0.80, -0.25>, <0.40, 1.02, 0.25>, 0.08) texture { PantsTex } } // --- Legs (pants) --- cylinder { <-0.22, 0.80, 0>, <-0.26, 0.25, 0.05>, 0.16 texture { PantsTex } } sphere { <-0.22, 0.80, 0>, 0.17 texture { PantsTex } } sphere { <-0.26, 0.25, 0.05>, 0.17 texture { PantsTex } } intersection { sphere { <-0.30, 0.16, -0.05>, 0.23 } box { <-0.70, -0.05, -0.40>, <0.20, 0.25, 0.25> } texture { ShoeTex } } cylinder { <0.22, 0.80, 0>, <0.30, 0.22, -0.05>, 0.16 texture { PantsTex } } sphere { <0.22, 0.80, 0>, 0.17 texture { PantsTex } } sphere { <0.30, 0.22, -0.05>, 0.17 texture { PantsTex } } intersection { sphere { <0.33, 0.14, -0.08>, 0.23 } box { <-0.10, -0.05, -0.45>, <0.80, 0.25, 0.20> } texture { ShoeTex } } // Slight overall pose tweak rotate <0, -10, 0> } object { CartoonHuman }