// Prince & Princess in a Castle Room (fast, simple primitives) #version 3.7; global_settings { assumed_gamma 1.0 } background { color rgb <0.08, 0.09, 0.11> } // ---------- Camera ---------- camera { location <0, 6.0, -16.0> look_at <0, 3.0, 0.0> angle 38 } // ---------- Lights ---------- light_source { < -10, 14, -14> color rgb <1.00, 0.98, 0.92> } light_source { < 12, 10, -6 > color rgb <0.55, 0.60, 0.75> } // ---------- Textures ---------- #declare T_Stone = texture { pigment { color rgb <0.62, 0.62, 0.66> } finish { diffuse 0.85 specular 0.08 roughness 0.05 } }; #declare T_StoneDark = texture { pigment { color rgb <0.45, 0.45, 0.50> } finish { diffuse 0.9 specular 0.05 } }; #declare T_RedCarpet = texture { pigment { color rgb <0.55, 0.12, 0.14> } finish { diffuse 0.9 specular 0.05 } }; #declare T_Wood = texture { pigment { color rgb <0.35, 0.22, 0.12> } finish { diffuse 0.85 specular 0.10 roughness 0.07 } }; #declare T_Gold = texture { pigment { color rgb <0.95, 0.78, 0.20> } finish { diffuse 0.55 specular 0.55 roughness 0.03 reflection 0.05 } }; #declare T_Skin = texture { pigment { color rgb <0.98, 0.80, 0.70> } finish { diffuse 0.9 specular 0.12 roughness 0.06 } }; #declare T_Blue = texture { pigment { color rgb <0.16, 0.26, 0.70> } finish { diffuse 0.9 specular 0.12 roughness 0.06 } }; #declare T_Purple = texture { pigment { color rgb <0.48, 0.18, 0.55> } finish { diffuse 0.9 specular 0.10 roughness 0.06 } }; #declare T_Pink = texture { pigment { color rgb <0.95, 0.55, 0.70> } finish { diffuse 0.9 specular 0.10 roughness 0.06 } }; #declare T_White = texture { pigment { color rgb <0.95, 0.95, 0.97> } finish { diffuse 0.92 specular 0.10 roughness 0.05 } }; // ---------- Room ---------- #declare Room_W = 18; #declare Room_D = 22; #declare Room_H = 10; #declare Wall_T = 0.6; union { // Floor box { <-Room_W/2, 0, -Room_D/2>, < Room_W/2, 0.2, Room_D/2> texture { T_Stone } } // Back wall box { <-Room_W/2, 0, Room_D/2-Wall_T>, texture { T_StoneDark } } // Left wall box { <-Room_W/2, 0, -Room_D/2>, <-Room_W/2+Wall_T, Room_H, Room_D/2> texture { T_StoneDark } } // Right wall box { , texture { T_StoneDark } } // Simple arch alcove in back wall (decorative) difference { box { <-3.2, 0, Room_D/2-Wall_T-0.01>, <3.2, 6.6, Room_D/2-0.01> texture { T_StoneDark } } union { box { <-2.4, 0.8, Room_D/2-Wall_T-0.2>, <2.4, 5.8, Room_D/2+0.3> } cylinder { <-2.4, 5.8, Room_D/2-Wall_T-0.2>, <2.4, 5.8, Room_D/2-Wall_T-0.2>, 0.7 } } texture { T_StoneDark } } } // Carpet box { <-2.2, 0.201, -6>, <2.2, 0.215, 7.5> texture { T_RedCarpet } } // ---------- Throne ---------- #declare ThroneZ = 7.2; union { // Base platform box { <-2.2, 0.2, ThroneZ-1.4>, <2.2, 0.6, ThroneZ+0.6> texture { T_Stone } } // Seat box { <-1.2, 0.6, ThroneZ-0.7>, <1.2, 1.2, ThroneZ+0.2> texture { T_Wood } } // Back box { <-1.2, 1.2, ThroneZ+0.0>, <1.2, 3.9, ThroneZ+0.4> texture { T_Wood } } // Arm rests box { <-1.35, 1.0, ThroneZ-0.7>, <-1.1, 1.55, ThroneZ+0.2> texture { T_Wood } } box { < 1.10, 1.0, ThroneZ-0.7>, < 1.35, 1.55, ThroneZ+0.2> texture { T_Wood } } // Crown ornament cone { <0, 4.05, ThroneZ+0.2>, 0.55, <0, 3.55, ThroneZ+0.2>, 0.10 texture { T_Gold } } translate <0,0,0> } // ---------- Character helpers ---------- #declare PrincePos = <-1.0, 0.2, 1.2>; #declare PrincessPos = < 1.1, 0.2, 1.0>; // Prince (simple humanoid) #declare Prince = union { // Feet to head proportions #declare LegH = 1.3; #declare TorsoH = 1.6; #declare NeckH = 0.15; #declare HeadR = 0.45; // Legs cylinder { <-0.22, 0, 0>, <-0.22, LegH, 0>, 0.18 texture { T_Blue } } cylinder { < 0.22, 0, 0>, < 0.22, LegH, 0>, 0.18 texture { T_Blue } } // Shoes sphere { <-0.22, 0.05, 0.05>, 0.22 texture { T_StoneDark } } sphere { < 0.22, 0.05, 0.05>, 0.22 texture { T_StoneDark } } // Torso cylinder { <0, LegH, 0>, <0, LegH+TorsoH, 0>, 0.48 texture { T_Blue } } // Belt torus { 0.50, 0.06 rotate <90,0,0> translate <0, LegH+0.35, 0> texture { T_Gold } } // Cape (simple panel behind) box { <-0.65, LegH+0.15, -0.15>, <0.65, LegH+TorsoH+0.2, -0.85> texture { T_Purple } } // Arms (raised slightly to look glad) cylinder { <-0.65, LegH+1.15, 0>, <-1.15, LegH+1.55, 0.10>, 0.12 texture { T_Skin } } cylinder { < 0.65, LegH+1.15, 0>, < 1.15, LegH+1.55, 0.10>, 0.12 texture { T_Skin } } sphere { <-1.15, LegH+1.55, 0.10>, 0.15 texture { T_Skin } } sphere { < 1.15, LegH+1.55, 0.10>, 0.15 texture { T_Skin } } // Neck + head cylinder { <0, LegH+TorsoH, 0>, <0, LegH+TorsoH+NeckH, 0>, 0.16 texture { T_Skin } } sphere { <0, LegH+TorsoH+NeckH+HeadR, 0>, HeadR texture { T_Skin } } // Crown difference { cylinder { <0, LegH+TorsoH+NeckH+HeadR+0.20, 0>, <0, LegH+TorsoH+NeckH+HeadR+0.44, 0>, 0.32 } cylinder { <0, LegH+TorsoH+NeckH+HeadR+0.18, 0>, <0, LegH+TorsoH+NeckH+HeadR+0.50, 0>, 0.24 } texture { T_Gold } } // Crown points cone { <0.00, LegH+TorsoH+NeckH+HeadR+0.44, 0.32>, 0.08, <0.00, LegH+TorsoH+NeckH+HeadR+0.64, 0.32>, 0.01 texture { T_Gold } } cone { <0.28, LegH+TorsoH+NeckH+HeadR+0.44, 0.12>, 0.08, <0.28, LegH+TorsoH+NeckH+HeadR+0.64, 0.12>, 0.01 texture { T_Gold } } cone { <-0.28, LegH+TorsoH+NeckH+HeadR+0.44, 0.12>, 0.08, <-0.28, LegH+TorsoH+NeckH+HeadR+0.64, 0.12>, 0.01 texture { T_Gold } } // Slight happy tilt rotate <0, -8, 0> }; // Princess (simple humanoid with dress) #declare Princess = union { #declare DressH = 2.6; #declare TorsoTopY = DressH; #declare HeadR = 0.45; // Dress skirt (cone) cone { <0, 0, 0>, 0.95, <0, DressH, 0>, 0.45 texture { T_Pink } } // Bodice cylinder { <0, DressH, 0>, <0, DressH+1.0, 0>, 0.42 texture { T_White } } // Arms (raised slightly, glad) cylinder { <-0.58, DressH+0.75, 0>, <-1.05, DressH+1.15, 0.10>, 0.11 texture { T_Skin } } cylinder { < 0.58, DressH+0.75, 0>, < 1.05, DressH+1.15, 0.10>, 0.11 texture { T_Skin } } sphere { <-1.05, DressH+1.15, 0.10>, 0.14 texture { T_Skin } } sphere { < 1.05, DressH+1.15, 0.10>, 0.14 texture { T_Skin } } // Neck + head cylinder { <0, DressH+1.0, 0>, <0, DressH+1.18, 0>, 0.15 texture { T_Skin } } sphere { <0, DressH+1.18+HeadR, 0>, HeadR texture { T_Skin } } // Tiara difference { cylinder { <0, DressH+1.18+HeadR+0.20, 0>, <0, DressH+1.18+HeadR+0.30, 0>, 0.30 } cylinder { <0, DressH+1.18+HeadR+0.18, 0>, <0, DressH+1.18+HeadR+0.34, 0>, 0.24 } texture { T_Gold } } cone { <0.00, DressH+1.18+HeadR+0.30, 0.26>, 0.06, <0.00, DressH+1.18+HeadR+0.46, 0.26>, 0.01 texture { T_Gold } } // Slight happy tilt toward prince rotate <0, 10, 0> }; // Place characters on floor precisely object { Prince translate } object { Princess translate } // Small heart-like decoration above them (simple, subtle) union { sphere { <-0.18, 5.35, 1.0>, 0.18 pigment { color rgb <1,0.35,0.45> } finish { diffuse 0.9 specular 0.2 } } sphere { < 0.18, 5.35, 1.0>, 0.18 pigment { color rgb <1,0.35,0.45> } finish { diffuse 0.9 specular 0.2 } } cone { <0, 5.15, 1.0>, 0.28, <0, 4.85, 1.0>, 0.01 pigment { color rgb <1,0.35,0.45> } finish { diffuse 0.9 specular 0.2 } } }