#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 12 } #include "colors.inc" #include "textures.inc" #include "finish.inc" background { color srgb <0.94, 0.95, 0.98> } // -------------------- Camera -------------------- #declare CamLoc = <3.6, 2.25, -5.9>; #declare CamLook = <0.0, 1.05, 0.15>; camera { location CamLoc look_at CamLook angle 36 right x*image_width/image_height aperture 0.14 blur_samples 9 focal_point <0.0, 1.10, 0.15> confidence 0.90 variance 1/256 } // -------------------- Lighting (studio) -------------------- light_source { < 7.5, 9.0, -7.0> color srgb <1.00, 0.98, 0.95>*1.20 area_light <2.2,0,0>, <0,0,2.2>, 6, 6 adaptive 1 jitter } light_source { <-7.0, 5.5, -2.0> color srgb <0.75, 0.86, 1.00>*0.55 area_light <1.8,0,0>, <0,1.4,0>, 5, 4 adaptive 1 jitter } light_source { <0.0, 7.5, 6.0> color srgb <1,1,1>*0.30 area_light <2.6,0,0>, <0,1.5,0>, 5, 4 adaptive 1 jitter } light_source { <0, 10, 0> color srgb <1,1,1>*0.10 shadowless } // -------------------- Atmosphere -------------------- fog { fog_type 2 distance 22 color srgb <0.94, 0.95, 0.98> fog_alt 1.20 turbulence 0.0 } // -------------------- Environment reflection dome -------------------- sphere { <0,1.2,0>, 80 hollow no_shadow texture { pigment { gradient y color_map { [0.00 color srgb <0.88,0.90,0.95>] [0.45 color srgb <0.98,0.99,1.00>] [1.00 color srgb <0.92,0.94,0.98>] } scale 18 translate <0,-4,0> } finish { diffuse 0 emission 0.85 } } } // -------------------- Finishes -------------------- #declare Fin_MatteRubber = finish { diffuse 0.92 specular 0.10 roughness 0.08 reflection { 0.00, 0.04 fresnel on } conserve_energy } #declare Fin_SatinPaint = finish { diffuse 0.70 specular 0.35 roughness 0.030 reflection { 0.03, 0.12 fresnel on } conserve_energy } #declare Fin_MetalBrushed = finish { diffuse 0.10 metallic specular 0.85 roughness 0.020 reflection { 0.18, 0.58 fresnel on } conserve_energy } #declare Fin_StonePolish = finish { diffuse 0.82 specular 0.22 roughness 0.045 reflection { 0.02, 0.12 fresnel on } conserve_energy } // -------------------- Textures / Materials -------------------- #declare Mat_MarblePlinth = texture { pigment { marble color_map { [0.00 color srgb <0.94,0.94,0.95>] [0.30 color srgb <0.85,0.86,0.88>] [0.55 color srgb <0.98,0.98,0.99>] [0.78 color srgb <0.84,0.85,0.88>] [1.00 color srgb <0.97,0.97,0.98>] } scale 0.55 turbulence 0.40 } normal { average normal_map { [1 bumps 0.12 scale 0.010] [1 wrinkles 0.18 scale 0.040] } } finish { Fin_StonePolish } } #declare Mat_CharcoalRubber = texture { pigment { bozo color_map { [0.00 color srgb <0.07, 0.08, 0.09>] [0.45 color srgb <0.10, 0.11, 0.13>] [1.00 color srgb <0.05, 0.06, 0.07>] } scale 0.28 } normal { average normal_map { [1 ripples 0.10 scale 0.20] [1 bumps 0.40 scale 0.020] } } finish { Fin_MatteRubber } } #declare Mat_BrushedCopper = texture { pigment { color srgb <0.87, 0.52, 0.30> } normal { average normal_map { [1 wrinkles 0.22 scale <0.030,0.010,0.030>] [1 bumps 0.12 scale 0.006] [1 ripples 0.08 scale <0.12,0.02,0.12>] } } finish { Fin_MetalBrushed } } #declare Mat_AnodizedRed = texture { pigment { granite color_map { [0.00 color srgb <0.60, 0.10, 0.14>] [0.35 color srgb <0.86, 0.18, 0.23>] [0.70 color srgb <0.72, 0.14, 0.18>] [1.00 color srgb <0.92, 0.22, 0.26>] } scale 0.22 } normal { average normal_map { [1 bumps 0.25 scale 0.012] [1 ripples 0.06 scale 0.18] } } finish { Fin_SatinPaint } } #declare Mat_GlassCool = texture { pigment { color srgbt <0.72, 0.86, 0.99, 0.90> } normal { average normal_map { [1 bumps 0.05 scale 0.012] [1 wrinkles 0.04 scale 0.045] } } finish { diffuse 0.02 specular 0.92 roughness 0.004 reflection { 0.10, 0.42 fresnel on } conserve_energy } } #declare Mat_Floor = texture { pigment { pigment_pattern { crackle metric 2.0 offset 0.15 } color_map { [0.00 color srgb <0.93,0.94,0.97>] [0.70 color srgb <0.97,0.98,1.00>] [1.00 color srgb <0.90,0.92,0.95>] } scale 1.9 } normal { average normal_map { [1 bumps 0.08 scale 0.020] [1 wrinkles 0.05 scale 0.10] } } finish { diffuse 0.86 specular 0.12 roughness 0.06 reflection { 0.01, 0.07 fresnel on } conserve_energy } } #declare Mat_Backdrop = texture { pigment { gradient y color_map { [0.00 color srgb <0.90,0.92,0.96>] [0.55 color srgb <0.98,0.99,1.00>] [1.00 color srgb <0.93,0.95,0.98>] } scale 6 translate <0,-1.2,0> } normal { bumps 0.03 scale 0.20 } finish { diffuse 0.96 specular 0.04 roughness 0.12 } } // -------------------- Geometry (precise fits) -------------------- #declare PlinthW = 2.40; #declare PlinthD = 2.00; #declare PlinthH = 0.55; #declare PlinthTopY = PlinthH; #declare TopDiscR = 0.95; #declare TopDiscH = 0.12; #declare TopDiscBottomY = PlinthTopY; #declare TopDiscTopY = TopDiscBottomY + TopDiscH; #declare RingOuterR = 0.78; #declare RingInnerR = 0.60; #declare RingH = 0.14; #declare RingBottomY = TopDiscTopY; #declare RingTopY = RingBottomY + RingH; #declare SphereR = 0.55; #declare SphereCenter = <0, RingTopY + SphereR, 0>; #declare CubeSize = 0.72; #declare CubeHalf = CubeSize/2; #declare CubeBottomY = RingTopY; #declare CubeCenter = <0.0, CubeBottomY + CubeHalf, 0.95>; #declare ArcOuterR = 1.55; #declare ArcInnerR = 1.35; #declare ArcThickness = 0.18; #declare ArcCenter = <0, 1.35, 0.55>; // -------------------- Floor -------------------- plane { y, 0 texture { Mat_Floor } } // -------------------- Cyclorama backdrop (curved sweep) -------------------- union { // rear wall plane (for distant continuation) plane { z, 3.6 texture { Mat_Backdrop } } // curved sweep: a thin cylindrical section clipped to a vertical panel difference { cylinder { <0,0,3.6>, <0,3.0,3.6>, 2.2 } cylinder { <0,0,3.6>, <0,3.0,3.6>, 2.05 } plane { z, 3.6 inverse } plane { x, 2.6 } plane { x, -2.6 inverse } plane { y, 0 inverse } // remove below floor } texture { Mat_Backdrop } } // -------------------- Plinth (marble) -------------------- box { <-PlinthW/2, 0, -PlinthD/2>, texture { Mat_MarblePlinth } } // -------------------- Top Disc (charcoal rubberized) -------------------- cylinder { <0, TopDiscBottomY, 0>, <0, TopDiscTopY, 0>, TopDiscR texture { Mat_CharcoalRubber } } // -------------------- Ring (brushed copper) -------------------- difference { cylinder { <0, RingBottomY, 0>, <0, RingTopY, 0>, RingOuterR } cylinder { <0, RingBottomY-0.001, 0>, <0, RingTopY+0.001, 0>, RingInnerR } texture { Mat_BrushedCopper } } // -------------------- Glass Sphere -------------------- sphere { SphereCenter, SphereR texture { Mat_GlassCool } interior { ior 1.48 caustics 0.6 } } // -------------------- Red Cube (anodized) -------------------- box { <-CubeHalf, CubeBottomY, 0.95-CubeHalf>, texture { Mat_AnodizedRed } rotate <0, 18, 0> } // -------------------- Large Arc (charcoal) -------------------- difference { torus { ArcOuterR, ArcThickness } torus { ArcInnerR, ArcThickness+0.001 } texture { Mat_CharcoalRubber } rotate <90, 0, 0> translate ArcCenter } // -------------------- Copper Frame (thin rods) -------------------- #declare RodR = 0.03; #declare FrameZ = -0.85; #declare FrameX = 1.15; #declare FrameY0 = PlinthTopY; #declare FrameY1 = 1.85; cylinder { <-FrameX, FrameY0, FrameZ>, < FrameX, FrameY0, FrameZ>, RodR texture { Mat_BrushedCopper } } cylinder { <-FrameX, FrameY0, FrameZ>, <-FrameX, FrameY1, FrameZ>, RodR texture { Mat_BrushedCopper } } cylinder { < FrameX, FrameY0, FrameZ>, < FrameX, FrameY1, FrameZ>, RodR texture { Mat_BrushedCopper } } cylinder { <-FrameX, FrameY1, FrameZ>, < FrameX, FrameY1, FrameZ>, RodR texture { Mat_BrushedCopper } }