#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 7 radiosity { pretrace_start 0.10 pretrace_end 0.02 count 28 nearest_count 5 error_bound 0.8 recursion_limit 1 low_error_factor 0.6 gray_threshold 0.0 minimum_reuse 0.02 brightness 0.75 } } background { color rgb <0.012, 0.018, 0.040> } fog { fog_type 2 distance 55 color rgb <0.04, 0.06, 0.11> fog_offset 0.0 fog_alt 3.5 turbulence 0.4 } camera { location <0, 2.2, -9> look_at <0, 0.55, 0.3> angle 35 } light_source { <300, 400, -300> color rgb <1.0, 1.0, 1.0>*0.55 } light_source { <-40, 20, -30> color rgb <0.35, 0.45, 0.9>*0.55 } light_source { <0, 5, -8> color rgb <0.25, 0.25, 0.28>*0.50 shadowless } // Rim/kicker: slightly stronger to reveal micro-bumps light_source { <8, 5, -2> color rgb <0.55, 0.60, 0.75>*0.22 area_light <1.2,0,0>, <0,0,1.2>, 3, 3 adaptive 1 jitter } #declare R1 = seed(12345); #declare R2 = seed(67890); #declare R3 = seed(24680); #declare R4 = seed(13579); // --- Micro-bump layer (shared) --- // Small, subtle "orange peel / paint" + tiny dings, kept light so it reads as slight bumps. #declare MicroBumps = normal { average normal_map { [0.70 bumps 0.18 scale 0.030] [0.20 wrinkles 0.10 scale 0.050] [0.10 crackle 0.06 scale 0.120] } } // Variant for darker metal: a touch sharper #declare MicroBumps_Metal = normal { average normal_map { [0.65 bumps 0.22 scale 0.028] [0.25 wrinkles 0.12 scale 0.045] [0.10 crackle 0.07 scale 0.110] } } // --- Textures (improved, procedural) --- #declare HullPaint_White = texture { pigment { average pigment_map { [0.72 color rgb <0.90, 0.92, 0.96>] [0.18 color rgb <0.86, 0.88, 0.92>] [0.10 granite color_map { [0 rgb <0.90,0.92,0.96>] [1 rgb <0.78,0.80,0.84>] } scale 0.35] } } normal { average normal_map { [0.55 bumps 0.22 scale 0.12] [0.20 wrinkles 0.16 scale 0.20] [0.25 MicroBumps] } } finish { diffuse 0.55 specular 0.78 roughness 0.018 reflection 0.07 metallic 0.05 } } #declare HullPanelLines = texture { pigment { function { abs(sin(x*10)) + abs(sin(z*10)) } color_map { [0.00 color rgbt <0.10,0.12,0.16, 0.55>] [0.08 color rgbt <0.10,0.12,0.16, 1.00>] [1.00 color rgbt <0.10,0.12,0.16, 1.00>] } scale 0.55 } // give panel lines a tiny normal so they catch light very subtly normal { bumps 0.08 scale 0.10 } finish { diffuse 0 specular 0 reflection 0 } } #declare HullGrime = texture { pigment { bozo color_map { [0.00 color rgbt <0.08,0.07,0.06, 1.00>] [0.35 color rgbt <0.12,0.11,0.10, 0.92>] [0.60 color rgbt <0.18,0.17,0.16, 0.75>] [1.00 color rgbt <0.22,0.21,0.20, 0.65>] } scale 0.9 translate <0.2, 0.0, -0.1> } normal { bumps 0.06 scale 0.20 } finish { diffuse 0.2 specular 0.0 reflection 0 } } #declare HullWhite = texture { average texture_map { [0.78 HullPaint_White] [0.12 HullPanelLines] [0.10 HullGrime] } } #declare HullDarkMetal = texture { pigment { granite color_map { [0.00 rgb <0.10, 0.11, 0.14>] [0.55 rgb <0.14, 0.15, 0.18>] [1.00 rgb <0.06, 0.07, 0.09>] } scale 0.35 } normal { average normal_map { [0.55 bumps 0.28 scale 0.08] [0.45 MicroBumps_Metal] } } finish { diffuse 0.45 specular 0.60 roughness 0.028 reflection 0.10 metallic 0.38 } } #declare StripeBluePaint = texture { pigment { bozo color_map { [0.00 rgb <0.10, 0.35, 0.88>] [0.65 rgb <0.15, 0.45, 0.95>] [1.00 rgb <0.18, 0.55, 1.00>] } scale 0.25 } normal { average normal_map { [0.55 bumps 0.18 scale 0.10] [0.45 MicroBumps] } } finish { diffuse 0.45 specular 0.88 roughness 0.014 reflection 0.06 } } #declare Glass = texture { pigment { color rgbt <0.55, 0.75, 1.0, 0.78> } normal { bumps 0.10 scale 0.05 } finish { diffuse 0.05 specular 0.95 roughness 0.008 reflection 0.14 conserve_energy } } #declare GlowCyan = texture { pigment { color rgb <0.2, 0.9, 1.0> } finish { emission 0.85 diffuse 0 } } #declare EngineCore = texture { pigment { color rgb <0.35, 1.0, 1.0> } finish { emission 1.20 diffuse 0 } } #declare EngineHalo = texture { pigment { color rgbt <0.25, 0.95, 1.0, 0.88> } finish { emission 0.55 diffuse 0 } } // --- Starfield --- #declare StarField = union { #declare I = 0; #while (I < 420) #declare sx = (rand(R1)*2-1)*140; #declare sy = (rand(R2)*2-1)*90; #declare sz = 60 + rand(R3)*140; #declare sr = 0.10 + rand(R4)*0.22; #declare si = (0.30 + rand(R1)*0.65); sphere { , sr texture { pigment { color rgb <0.80, 0.86, 0.98>*si } finish { emission 0.95 diffuse 0 } } no_shadow } #declare I = I + 1; #end } object { StarField } // --- Ship --- #declare Ship = union { // Main fuselage union { cylinder { <0, 0.55, -1.6>, <0, 0.55, 1.8>, 0.55 texture { HullWhite } } sphere { <0, 0.55, 1.8>, 0.55 texture { HullWhite } } sphere { <0, 0.55, -1.6>, 0.55 texture { HullWhite } } // Slight top spine cylinder { <0, 0.92, -1.2>, <0, 0.92, 1.5>, 0.14 texture { HullDarkMetal } } // Nose cone cone { <0, 0.55, 2.25>, 0.40, <0, 0.55, 3.2>, 0.02 texture { HullWhite } } // Cockpit glass intersection { sphere { <0, 0.78, 2.15>, 0.55 } box { <-1, 0.72, 1.7>, <1, 1.35, 3.0> } texture { Glass } interior { ior 1.45 } } // Blue stripe box { <-0.55, 0.47, -1.4>, <0.55, 0.54, 2.9> texture { StripeBluePaint } } // Side dark panels box { <-0.62, 0.18, -0.8>, <-0.42, 0.70, 1.5> texture { HullDarkMetal } } box { <0.42, 0.18, -0.8>, <0.62, 0.70, 1.5> texture { HullDarkMetal } } } // Wings union { intersection { box { <-3.2, 0.38, -0.4>, <-0.55, 0.50, 1.55> } plane { <0.25, 0, 1>, 0.95 } plane { <-0.4, 0, 1>, 1.8 } texture { HullWhite } } intersection { box { <0.55, 0.38, -0.4>, <3.2, 0.50, 1.55> } plane { <-0.25, 0, 1>, 0.95 } plane { <0.4, 0, 1>, 1.8 } texture { HullWhite } } // Wingtip caps box { <-3.2, 0.38, 0.9>, <-2.85, 0.52, 1.55> texture { HullDarkMetal } } box { <2.85, 0.38, 0.9>, <3.2, 0.52, 1.55> texture { HullDarkMetal } } // A small blue accent on wings (thin stripe) box { <-3.2, 0.495, 0.15>, <-0.62, 0.505, 0.22> texture { StripeBluePaint } } box { <0.62, 0.495, 0.15>, <3.2, 0.505, 0.22> texture { StripeBluePaint } } } // Engine nacelles union { union { cylinder { <-1.55, 0.25, -1.2>, <-1.55, 0.25, 0.9>, 0.28 texture { HullDarkMetal } } sphere { <-1.55, 0.25, 0.9>, 0.28 texture { HullDarkMetal } } cone { <-1.55, 0.25, -1.2>, 0.28, <-1.55, 0.25, -1.7>, 0.18 texture { HullDarkMetal } } torus { 0.22, 0.04 rotate <90,0,0> translate <-1.55, 0.25, 0.95> texture { StripeBluePaint } } // Exhaust core + halo cone { <-1.55, 0.25, -1.70>, 0.16, <-1.55, 0.25, -2.25>, 0.02 texture { EngineCore } no_shadow } cone { <-1.55, 0.25, -1.65>, 0.22, <-1.55, 0.25, -2.55>, 0.02 texture { EngineHalo } no_shadow } } union { cylinder { <1.55, 0.25, -1.2>, <1.55, 0.25, 0.9>, 0.28 texture { HullDarkMetal } } sphere { <1.55, 0.25, 0.9>, 0.28 texture { HullDarkMetal } } cone { <1.55, 0.25, -1.2>, 0.28, <1.55, 0.25, -1.7>, 0.18 texture { HullDarkMetal } } torus { 0.22, 0.04 rotate <90,0,0> translate <1.55, 0.25, 0.95> texture { StripeBluePaint } } cone { <1.55, 0.25, -1.70>, 0.16, <1.55, 0.25, -2.25>, 0.02 texture { EngineCore } no_shadow } cone { <1.55, 0.25, -1.65>, 0.22, <1.55, 0.25, -2.55>, 0.02 texture { EngineHalo } no_shadow } } } // Small window lights union { #declare W = -0.35; #while (W <= 0.35) sphere { , 0.05 texture { GlowCyan } no_shadow } #declare W = W + 0.175; #end } // Subtle bottom fin intersection { box { <-0.12, 0.05, -0.5>, <0.12, 0.55, 0.7> } plane { <0, 1, 0>, 0.22 } texture { HullDarkMetal } } rotate <0, -18, 0> rotate <6, 0, 0> translate <0, 0, 0> } object { Ship } // Keep a non-rendering catcher plane, but invisible plane { y, -20 texture { pigment { color rgb <0,0,0> } finish { ambient 0 diffuse 0 } } no_image }