// scene220_textured_fast.pov #version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 8 } background { color rgb <0.95, 0.96, 0.98> } // -------------------- Camera -------------------- camera { location <4.2, 3.0, -6.5> look_at <0.0, 1.0, 0.0> angle 38 } // -------------------- Lights (warm, soft) -------------------- light_source { <6, 10, -8> color rgb <1.00, 0.93, 0.80>*1.10 area_light <1.2, 0, 0>, <0, 0, 1.2>, 4, 4 adaptive 1 jitter } light_source { <-7, 6, -3> color rgb <1.00, 0.95, 0.88>*0.55 area_light <1.0, 0, 0>, <0, 0, 1.0>, 3, 3 adaptive 1 jitter } // A very dim cool fill to keep shadows readable light_source { <0, 8, 6> color rgb <0.88, 0.93, 1.00>*0.12 shadowless } // -------------------- Simple textures (fast) -------------------- #declare TX_Matte_Gray = texture { pigment { color rgb <0.70, 0.72, 0.75> } finish { diffuse 0.85 specular 0.08 roughness 0.07 } }; #declare TX_Satin_Blue = texture { pigment { color rgb <0.25, 0.40, 0.75> } finish { diffuse 0.75 specular 0.22 roughness 0.035 } }; #declare TX_Satin_Red = texture { pigment { color rgb <0.78, 0.20, 0.18> } finish { diffuse 0.75 specular 0.20 roughness 0.04 } }; #declare TX_Plastic_White = texture { pigment { color rgb <0.96, 0.96, 0.97> } finish { diffuse 0.70 specular 0.35 roughness 0.02 } }; #declare TX_Rubber_Dark = texture { pigment { color rgb <0.10, 0.10, 0.11> } finish { diffuse 0.95 specular 0.03 roughness 0.12 } }; #declare TX_Floor = texture { pigment { color rgb <0.90, 0.90, 0.92> } finish { diffuse 0.95 specular 0.05 roughness 0.08 } }; // -------------------- Ground plane -------------------- plane { y, 0 texture { TX_Floor } } // -------------------- Scene objects (precisely aligned stack) -------------------- // Base plinth (box) sits on plane y=0 #declare Base_W = 4.0; #declare Base_D = 3.0; #declare Base_H = 0.35; box { <-Base_W/2, 0, -Base_D/2>, texture { TX_Matte_Gray } } // Middle cylinder: bottom touches top of base at y=Base_H #declare Cyl_R = 1.05; #declare Cyl_H = 1.20; cylinder { <0, Base_H, 0>, <0, Base_H + Cyl_H, 0>, Cyl_R texture { TX_Satin_Blue } } // Upper sphere: sits exactly on cylinder top // Sphere radius chosen so bottom is at y=Base_H+Cyl_H #declare Sphere_R = 0.95; sphere { <0, Base_H + Cyl_H + Sphere_R, 0>, Sphere_R texture { TX_Plastic_White } } // Accent torus ring around the cylinder (centered), just above base #declare Tor_R1 = 1.18; // major radius #declare Tor_R2 = 0.10; // minor radius #declare Tor_Y = Base_H + 0.28; torus { Tor_R1, Tor_R2 rotate <90, 0, 0> translate <0, Tor_Y, 0> texture { TX_Satin_Red } } // Three small "feet" (dark rubber) under base edges, precisely touching plane #declare Foot_R = 0.14; #declare Foot_H = 0.08; #macro FootAt(X,Z) cylinder { , , Foot_R texture { TX_Rubber_Dark } } #end FootAt(-Base_W/2 + 0.35, -Base_D/2 + 0.35) FootAt( Base_W/2 - 0.35, -Base_D/2 + 0.35) FootAt( 0.0, Base_D/2 - 0.35) // A slim rod "antenna" on top of sphere, precisely tangent at the sphere top #declare Rod_R = 0.06; #declare Rod_H = 0.95; cylinder { <0, Base_H + Cyl_H + 2*Sphere_R, 0>, <0, Base_H + Cyl_H + 2*Sphere_R + Rod_H, 0>, Rod_R texture { TX_Satin_Blue } } // Small cap sphere on antenna tip sphere { <0, Base_H + Cyl_H + 2*Sphere_R + Rod_H + Rod_R, 0>, Rod_R*1.15 texture { TX_Satin_Red } }