#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 } } // Increase displayed gamma (post) as requested, while keeping required assumed_gamma block above. #default { finish { ambient 0 diffuse 1 } } #declare DisplayGamma = 1.9; background { color rgb <0.90, 0.90, 0.94> } camera { location <0, 2.8, -12.6> look_at <0, 2.1, 0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } // ----------------- // Conical warm lights (soft shadows) // ----------------- #declare Target = <0, 2.1, 0>; light_source { <-4.2, 7.4, -6.4> color rgb <1.00, 0.86, 0.72>*1.10 spotlight point_at Target radius 18 falloff 30 tightness 8 fade_distance 18 fade_power 2 // soft shadows (fast-ish) area_light <0.9,0,0>, <0,0,0.9>, 5, 5 adaptive 1 jitter } light_source { <5.4, 6.2, -3.2> color rgb <1.00, 0.90, 0.80>*0.55 spotlight point_at <0.2, 2.0, 0.2> radius 22 falloff 38 tightness 6 fade_distance 18 fade_power 2 area_light <0.8,0,0>, <0,0,0.8>, 4, 4 adaptive 1 jitter } light_source { <0.0, 7.0, 5.8> color rgb <1.00, 0.92, 0.82>*0.22 spotlight point_at <0, 2.4, 0> radius 25 falloff 45 tightness 4 fade_distance 22 fade_power 2 area_light <1.0,0,0>, <0,0,1.0>, 4, 4 adaptive 1 jitter } // ----------------- // Palette (vectors) // ----------------- #declare C_WallA_v = <0.93, 0.93, 0.965>; #declare C_WallB_v = <0.88, 0.89, 0.935>; #declare C_FloorA_v = <0.70, 0.60, 0.46>; #declare C_FloorB_v = <0.62, 0.52, 0.40>; #declare C_WoodA_v = <0.72, 0.58, 0.40>; #declare C_WoodB_v = <0.56, 0.42, 0.28>; #declare C_Cloth_v = <0.22, 0.33, 0.78>; #declare C_Skin_v = <0.95, 0.84, 0.72>; #declare C_Dark_v = <0.12, 0.12, 0.14>; #declare C_String_v = <0.92, 0.92, 0.92>; #declare C_Base_v = <0.78, 0.74, 0.70>; // ----------------- // Simple shading (no textures), fast renders // ----------------- #declare Fin_Soft = finish { diffuse 0.92 specular 0.10 roughness 0.08 }; #declare Tex_Back = texture { pigment { color rgb C_WallA_v } finish { diffuse 0.95 specular 0.02 roughness 0.12 } } #declare Tex_Floor = texture { pigment { color rgb C_FloorA_v } finish { diffuse 0.92 specular 0.08 roughness 0.07 } } #declare Tex_Wood = texture { pigment { color rgb C_WoodA_v } finish { diffuse 0.88 specular 0.20 roughness 0.05 } } #declare Tex_Cloth = texture { pigment { color rgb C_Cloth_v } finish { diffuse 0.96 specular 0.06 roughness 0.12 } } #declare Tex_Skin = texture { pigment { color rgb C_Skin_v } finish { diffuse 0.90 specular 0.12 roughness 0.08 } } #declare Tex_Dark = texture { pigment { color rgb C_Dark_v } finish { diffuse 0.90 specular 0.03 roughness 0.14 } } #declare Tex_String= texture { pigment { color rgb C_String_v } finish { diffuse 0.70 specular 0.22 roughness 0.04 } } #declare Tex_Base = texture { pigment { color rgb C_Base_v } finish { diffuse 0.92 specular 0.05 roughness 0.11 } } // // Stage // plane { y, 0 texture { Tex_Floor } } // Back wall box { <-6, 0, 2>, < 6, 6, 2.2> texture { Tex_Back } no_shadow } // Simple baseboard at wall/floor seam box { <-6, 0.00, 2.00>, <6, 0.35, 2.15> texture { Tex_Base } no_shadow } // // Marionette dimensions (units are POV units) // #declare Head_R = 0.35; #declare Neck_R = 0.10; #declare Torso_R = 0.45; #declare Torso_H = 1.05; #declare Hip_R = 0.23; #declare UpperArm_R = 0.14; #declare UpperArm_L = 0.70; #declare ForeArm_R = 0.12; #declare ForeArm_L = 0.65; #declare Thigh_R = 0.16; #declare Thigh_L = 0.80; #declare Shin_R = 0.14; #declare Shin_L = 0.80; #declare Hand_R = 0.13; #declare Foot_R = 0.15; #declare Y_Foot = 0.15; // foot center height #declare Y_Knee = Y_Foot + Shin_L; // precise stack #declare Y_Hip = Y_Knee + Thigh_L; // precise stack #declare Y_TorsoBase = Y_Hip + Hip_R; // torso sits on hip sphere #declare Y_TorsoTop = Y_TorsoBase + Torso_H; #declare Y_Neck = Y_TorsoTop + 0.12; #declare Y_Head = Y_Neck + Head_R + 0.10; #declare Shoulder_Y = Y_TorsoTop - 0.10; #declare Shoulder_Offset = 0.55; #declare Puppet = union { // Body core sphere { <0, Y_Hip, 0>, Hip_R texture { Tex_Wood } } cylinder { <0, Y_TorsoBase, 0>, <0, Y_TorsoTop, 0>, Torso_R texture { Tex_Cloth } } sphere { <0, Y_TorsoTop, 0>, Torso_R texture { Tex_Cloth } } // Neck + head cylinder { <0, Y_TorsoTop+0.02, 0>, <0, Y_Neck, 0>, Neck_R texture { Tex_Wood } } sphere { <0, Y_Head, 0>, Head_R texture { Tex_Skin } } // simple face dots sphere { <-0.10, Y_Head+0.05, -Head_R+0.04>, 0.035 texture { Tex_Dark } } sphere { < 0.10, Y_Head+0.05, -Head_R+0.04>, 0.035 texture { Tex_Dark } } cylinder { <0, Y_Head-0.08, -Head_R+0.03>, <0, Y_Head-0.11, -Head_R+0.03>, 0.03 texture { Tex_Dark } } // Shoulders (joint spheres) sphere { <-Shoulder_Offset, Shoulder_Y, 0>, UpperArm_R texture { Tex_Wood } } sphere { < Shoulder_Offset, Shoulder_Y, 0>, UpperArm_R texture { Tex_Wood } } // Left arm (viewer-left is negative x) cylinder { <-Shoulder_Offset, Shoulder_Y, 0>, <-Shoulder_Offset, Shoulder_Y-UpperArm_L, 0.15>, UpperArm_R texture { Tex_Wood } } sphere { <-Shoulder_Offset, Shoulder_Y-UpperArm_L, 0.15>, ForeArm_R texture { Tex_Wood } } cylinder { <-Shoulder_Offset, Shoulder_Y-UpperArm_L, 0.15>, <-Shoulder_Offset, Shoulder_Y-UpperArm_L-ForeArm_L, 0.05>, ForeArm_R texture { Tex_Wood } } sphere { <-Shoulder_Offset, Shoulder_Y-UpperArm_L-ForeArm_L, 0.05>, Hand_R texture { Tex_Skin } } // Right arm cylinder { , , UpperArm_R texture { Tex_Wood } } sphere { , ForeArm_R texture { Tex_Wood } } cylinder { , , ForeArm_R texture { Tex_Wood } } sphere { , Hand_R texture { Tex_Skin } } // Leg joint spheres #declare Hip_Offset = 0.22; sphere { <-Hip_Offset, Y_Hip, 0>, Thigh_R texture { Tex_Wood } } sphere { < Hip_Offset, Y_Hip, 0>, Thigh_R texture { Tex_Wood } } // Left leg (stack precisely to floor) cylinder { <-Hip_Offset, Y_Hip, 0>, <-Hip_Offset, Y_Knee, 0.08>, Thigh_R texture { Tex_Wood } } sphere { <-Hip_Offset, Y_Knee, 0.08>, Shin_R texture { Tex_Wood } } cylinder { <-Hip_Offset, Y_Knee, 0.08>, <-Hip_Offset, Y_Foot, 0.03>, Shin_R texture { Tex_Wood } } sphere { <-Hip_Offset, Y_Foot, 0.03>, Foot_R texture { Tex_Dark } } // Right leg cylinder { , , Thigh_R texture { Tex_Wood } } sphere { , Shin_R texture { Tex_Wood } } cylinder { , , Shin_R texture { Tex_Wood } } sphere { , Foot_R texture { Tex_Dark } } // Simple belt line hint torus { 0.36, 0.05 rotate <90,0,0> translate <0, Y_TorsoBase+0.08, 0> texture { Tex_Dark } } } object { Puppet } // // Controller + strings // #declare Ctrl_Y = 4.2; #declare Ctrl_Z = -0.2; #declare Controller = union { // cross bar box { <-1.4, Ctrl_Y-0.05, Ctrl_Z-0.10>, <1.4, Ctrl_Y+0.05, Ctrl_Z+0.10> texture { Tex_Wood } } // handle box { <-0.12, Ctrl_Y-0.75, Ctrl_Z-0.08>, <0.12, Ctrl_Y-0.05, Ctrl_Z+0.08> texture { Tex_Wood } } } object { Controller } // String endpoints #declare LHand = <-Shoulder_Offset, Shoulder_Y-UpperArm_L-ForeArm_L, 0.05>; #declare RHand = < Shoulder_Offset, Shoulder_Y-UpperArm_L-ForeArm_L, -0.05>; #declare HeadTop = <0, Y_Head+Head_R, 0>; #declare LCtrl = <-1.1, Ctrl_Y-0.05, Ctrl_Z>; #declare RCtrl = < 1.1, Ctrl_Y-0.05, Ctrl_Z>; #declare HCtrl = < 0.0, Ctrl_Y-0.05, Ctrl_Z>; cylinder { LCtrl, LHand, 0.015 texture { Tex_String } } cylinder { RCtrl, RHand, 0.015 texture { Tex_String } } cylinder { HCtrl, HeadTop, 0.012 texture { Tex_String } } // Display gamma adjustment (applied via output gamma in many front-ends). // If your renderer supports 'gamma' in the image output settings, set it to 1.9 there.