// Princess and Red Dragon - simplified fast-iteration scene #version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 6 } background { color rgb <0.80, 0.90, 1.00> } // ---------------- Camera ---------------- camera { location <0.0, 3.6, -14.5> look_at <0.0, 1.4, 0.8> angle 32 } // ---------------- Lights ---------------- light_source { <-10, 14, -14> color rgb <1.00, 1.00, 1.00> } light_source { < 10, 8, -8> color rgb <0.55,0.60,0.70> } light_source { < 0, 10, 6> color rgb <0.25,0.25,0.30> } // ---------------- Ground ---------------- plane { y, 0 texture { pigment { color rgb <0.68, 0.73, 0.68> } finish { diffuse 0.9 specular 0.05 roughness 0.08 } } } // ---------------- Materials ---------------- #declare Dragon_Red = texture { pigment { color rgb <0.78, 0.12, 0.10> } finish { diffuse 0.85 specular 0.25 roughness 0.05 } }; #declare Dragon_DarkRed = texture { pigment { color rgb <0.45, 0.05, 0.06> } finish { diffuse 0.9 specular 0.18 roughness 0.06 } }; #declare Horn_Tex = texture { pigment { color rgb <0.90, 0.86, 0.75> } finish { diffuse 0.9 specular 0.15 roughness 0.08 } }; #declare Eye_Tex = texture { pigment { color rgb <0.05, 0.05, 0.05> } finish { diffuse 0.35 specular 0.7 roughness 0.02 } }; #declare Princess_Skin = texture { pigment { color rgb <1.00, 0.84, 0.72> } finish { diffuse 0.9 specular 0.15 roughness 0.06 } }; #declare Princess_Dress = texture { pigment { color rgb <0.20, 0.40, 0.95> } finish { diffuse 0.85 specular 0.18 roughness 0.06 } }; #declare Princess_Hair = texture { pigment { color rgb <0.85, 0.70, 0.18> } finish { diffuse 0.9 specular 0.12 roughness 0.08 } }; #declare Gold_Tex = texture { pigment { color rgb <0.95, 0.78, 0.18> } finish { diffuse 0.45 specular 0.65 roughness 0.03 } }; #declare Rock_Tex = texture { pigment { color rgb <0.45, 0.45, 0.48> } finish { diffuse 0.95 specular 0.03 roughness 0.12 } }; // ---------------- Helpers ---------------- #macro Limb(P1, P2, R, TEX) union { cylinder { P1, P2, R } sphere { P1, R } sphere { P2, R } texture { TEX } } #end #macro Claw(P, Dir, Len, R0) cone { P, R0, P + (vnormalize(Dir)*Len), 0.0 texture { Horn_Tex } } #end // ---------------- Dragon ---------------- #declare Dragon = union { // Core body volumes (heavier chest like classic D&D depictions) sphere { <0.00, 1.20, 0.50>, 1.18 texture { Dragon_Red } } // chest sphere { <0.00, 1.15, 2.05>, 1.02 texture { Dragon_Red } } // mid sphere { <0.00, 1.07, 3.55>, 0.82 texture { Dragon_Red } } // hips // Blend cylinder (keeps silhouette continuous) cylinder { <0,1.16,0.55>, <0,1.10,3.55>, 0.62 texture { Dragon_Red } } // Neck (longer, arched forward) sphere { <0.00, 1.55, -0.55>, 0.62 texture { Dragon_Red } } sphere { <0.00, 1.78, -1.35>, 0.52 texture { Dragon_Red } } sphere { <0.00, 1.92, -2.05>, 0.44 texture { Dragon_Red } } // Head (larger, more wedge-like) sphere { <0.00, 1.94, -2.65>, 0.56 texture { Dragon_Red } } // cranium sphere { <0.00, 1.83, -3.10>, 0.38 texture { Dragon_Red } } // snout base cone { <0.00, 1.78, -3.30>, 0.25, <0.00, 1.70, -4.25>, 0.02 texture { Dragon_Red } } sphere { <0.00, 1.70, -4.26>, 0.03 texture { Dragon_Red } } // Jaw hint (slightly open) cone { <0.00, 1.66, -3.15>, 0.18, <0.00, 1.55, -3.85>, 0.02 texture { Dragon_DarkRed } } // Eyes sphere { < 0.20, 1.96, -2.78>, 0.06 texture { Eye_Tex } } sphere { <-0.20, 1.96, -2.78>, 0.06 texture { Eye_Tex } } // Horns cone { < 0.22, 2.18, -2.55>, 0.07, < 0.58, 2.45, -2.95>, 0.01 texture { Horn_Tex } } cone { <-0.22, 2.18, -2.55>, 0.07, <-0.58, 2.45, -2.95>, 0.01 texture { Horn_Tex } } cone { < 0.10, 2.10, -2.35>, 0.05, < 0.22, 2.40, -2.10>, 0.01 texture { Horn_Tex } } cone { <-0.10, 2.10, -2.35>, 0.05, <-0.22, 2.40, -2.10>, 0.01 texture { Horn_Tex } } // Tail (longer) cone { <0.00, 0.98, 4.25>, 0.52, <0.30, 0.92, 5.70>, 0.30 texture { Dragon_Red } } cone { <0.30, 0.92, 5.70>, 0.30, <0.70, 0.84, 6.95>, 0.17 texture { Dragon_Red } } cone { <0.70, 0.84, 6.95>, 0.17, <1.15, 0.76, 7.90>, 0.08 texture { Dragon_Red } } sphere{ <1.15, 0.76, 7.90>, 0.08 texture { Dragon_Red } } // Back spines (bigger along neck/chest) #local i = 0; #while (i < 11) #local zpos = -1.7 + i*0.55; #local h = 0.30 + 0.06*min(i,6); cone { <0, 2.05, zpos>, 0.08, <0, 2.05+h, zpos-0.06>, 0.0 texture { Horn_Tex } } #local i = i + 1; #end // Legs (more stout, planted) // Front left object { Limb(<0.85, 1.00, 1.10>, <1.10, 0.48, 1.25>, 0.18, Dragon_Red) } object { Limb(<1.10, 0.48, 1.25>, <0.95, 0.12, 1.55>, 0.15, Dragon_Red) } sphere { <0.95,0.12,1.55>, 0.16 texture { Dragon_Red } } object { Claw(<0.98,0.08,1.62>, < 0.30,-0.30, 0.60>, 0.22, 0.05) } object { Claw(<0.92,0.08,1.62>, <-0.10,-0.30, 0.65>, 0.20, 0.05) } object { Claw(<0.95,0.08,1.50>, < 0.10,-0.30, 0.75>, 0.20, 0.05) } // Front right object { Limb(<-0.85, 1.00, 1.10>, <-1.10, 0.48, 1.25>, 0.18, Dragon_Red) } object { Limb(<-1.10, 0.48, 1.25>, <-0.95, 0.12, 1.55>, 0.15, Dragon_Red) } sphere { <-0.95,0.12,1.55>, 0.16 texture { Dragon_Red } } object { Claw(<-0.98,0.08,1.62>, <-0.30,-0.30, 0.60>, 0.22, 0.05) } object { Claw(<-0.92,0.08,1.62>, < 0.10,-0.30, 0.65>, 0.20, 0.05) } object { Claw(<-0.95,0.08,1.50>, <-0.10,-0.30, 0.75>, 0.20, 0.05) } // Hind left object { Limb(<0.75, 0.95, 3.05>, <1.05, 0.45, 3.35>, 0.20, Dragon_Red) } object { Limb(<1.05, 0.45, 3.35>, <0.85, 0.12, 3.75>, 0.17, Dragon_Red) } sphere { <0.85,0.12,3.75>, 0.18 texture { Dragon_Red } } object { Claw(<0.88,0.08,3.86>, < 0.25,-0.30, 0.65>, 0.23, 0.05) } object { Claw(<0.82,0.08,3.86>, <-0.10,-0.30, 0.70>, 0.21, 0.05) } // Hind right object { Limb(<-0.75, 0.95, 3.05>, <-1.05, 0.45, 3.35>, 0.20, Dragon_Red) } object { Limb(<-1.05, 0.45, 3.35>, <-0.85, 0.12, 3.75>, 0.17, Dragon_Red) } sphere { <-0.85,0.12,3.75>, 0.18 texture { Dragon_Red } } object { Claw(<-0.88,0.08,3.86>, <-0.25,-0.30, 0.65>, 0.23, 0.05) } object { Claw(<-0.82,0.08,3.86>, < 0.10,-0.30, 0.70>, 0.21, 0.05) } // Wings (broader, swept back; simple membranes) // Left wing union { // shoulder joint sphere { <0.70, 2.00, 1.35>, 0.16 texture { Dragon_Red } } // leading bones cylinder { <0.70, 2.00, 1.35>, <3.70, 2.45, 1.15>, 0.09 texture { Dragon_Red } } sphere { <3.70, 2.45, 1.15>, 0.12 texture { Dragon_Red } } cylinder { <3.70, 2.45, 1.15>, <4.85, 1.75, 2.15>, 0.06 texture { Dragon_Red } } sphere { <4.85, 1.75, 2.15>, 0.09 texture { Dragon_Red } } // membrane (two triangles) triangle { <0.65, 1.95, 1.35>, <3.75, 2.40, 1.10>, <2.65, 0.95, 2.65> texture { Dragon_DarkRed } } triangle { <0.65, 1.95, 1.35>, <2.65, 0.95, 2.65>, <0.25, 1.10, 2.45> texture { Dragon_DarkRed } } } // Right wing union { sphere { <-0.70, 2.00, 1.35>, 0.16 texture { Dragon_Red } } cylinder { <-0.70, 2.00, 1.35>, <-3.70, 2.45, 1.15>, 0.09 texture { Dragon_Red } } sphere { <-3.70, 2.45, 1.15>, 0.12 texture { Dragon_Red } } cylinder { <-3.70, 2.45, 1.15>, <-4.85, 1.75, 2.15>, 0.06 texture { Dragon_Red } } sphere { <-4.85, 1.75, 2.15>, 0.09 texture { Dragon_Red } } triangle { <-0.65, 1.95, 1.35>, <-3.75, 2.40, 1.10>, <-2.65, 0.95, 2.65> texture { Dragon_DarkRed } } triangle { <-0.65, 1.95, 1.35>, <-2.65, 0.95, 2.65>, <-0.25, 1.10, 2.45> texture { Dragon_DarkRed } } } // Simple pose tweaks for a more dramatic stance rotate <0, -18, 0> } // Place dragon slightly right so princess can be left foreground object { Dragon translate <1.2, 0.0, 1.0> } // ---------------- Rock ledge for princess ---------------- union { sphere { <-2.8, 0.45, -0.8>, 0.65 } sphere { <-2.2, 0.35, -0.5>, 0.55 } sphere { <-3.3, 0.30, -0.2>, 0.55 } cylinder { <-3.4,0.25,-1.2>, <-2.0,0.25,-0.1>, 0.55 } texture { Rock_Tex } } // ---------------- Princess ---------------- #declare Princess = union { // Body (dress) cone { <0,0.00,0>, 0.35, <0,1.05,0>, 0.18 texture { Princess_Dress } } sphere { <0,1.05,0>, 0.20 texture { Princess_Dress } } // shoulders cap // Head sphere { <0,1.38,0>, 0.18 texture { Princess_Skin } } // Hair (cap) difference { sphere { <0,1.42,0>, 0.185 } sphere { <0,1.50,0>, 0.165 translate <0,0.06,0> } texture { Princess_Hair } } // Crown union { torus { 0.11, 0.02 rotate <90,0,0> translate <0,1.56,0> texture { Gold_Tex } } cone { <0.00,1.56,0.11>, 0.015, <0.00,1.64,0.11>, 0.00 texture { Gold_Tex } } cone { <0.09,1.56,0.05>, 0.015, <0.12,1.63,0.06>, 0.00 texture { Gold_Tex } } cone { <-0.09,1.56,0.05>,0.015, <-0.12,1.63,0.06>, 0.00 texture { Gold_Tex } } } // Arms object { Limb(< 0.18,1.02,0.00>, < 0.38,0.78,0.10>, 0.05, Princess_Skin) } object { Limb(<-0.18,1.02,0.00>, <-0.36,0.82,0.10>, 0.05, Princess_Skin) } // Simple “hands” sphere { < 0.40,0.76,0.11>, 0.045 texture { Princess_Skin } } sphere { <-0.38,0.80,0.11>, 0.045 texture { Princess_Skin } } // Feet hint (peeking) sphere { < 0.10,0.02,0.10>, 0.05 texture { Princess_Skin } } sphere { <-0.10,0.02,0.10>, 0.05 texture { Princess_Skin } } } // Place princess on the rock ledge, facing dragon object { Princess rotate <0, 25, 0> translate <-2.75, 0.95, -0.75> }