#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"
#include "metals.inc"
#include "glass.inc"
#include "stars.inc"
#version 3.0
global_settings { assumed_gamma 2.2 }
//------CAMERA ANGLES INCLUDE FRONT VIEW, SIDE VIEW AND TOP VIEW------
//picture view (side view)
camera {
location <-85, 30, -120>
look_at <0,>
}
/*
//view from the bottom up
camera {
location <0,>
look_at <0,>
}
*/
/*
//top down view
camera {
location <0,>
look_at <0,>
}
*/
/*
//closer
camera {
location <0,>
look_at <0,>
}
*/
/*
//back view
//back view
camera {
location <-85, 160, 110>
look_at <0,>
}
light_source { <200,> White }
*/
light_source { <200,> White }
/*
//DAY TIME LOOK
sky_sphere {
pigment {
gradient y
color_map { [0.0 color rgb <0.7,0.7,1.0>] [1.0 color blue 0.5] }
}
}
sphere { <350,>, 50
texture { T_Yellow_Glass
pigment{Col_Glass_Clear}
}
}
//EVENING TIME LOOK
sky_sphere {
pigment {
gradient y
color_map {
[ 0.5 color SemiSweetChoc ]
[ 1.0 color NewMidnightBlue ]
}
scale 2
translate -1
}
}
*/
//NIGHT TIME LOOK
/*
box {
<-250, 30, -250>
<>
texture {Starfield1}
}
*/
//Following is the moon texture.
//Result isn't as was wanted, so I commented it out.
/*
#declare moonimage=pigment {
image_map {
gif "moon.gif"
}
}
plane {
<0,>,
-1.0
texture {White_Marble }
pigment {moonimage}
scale 10
}
*/
plane {
<0,>,
-1.0
texture {White_Marble }
scale 300
}
////////// TOP PART
#declare myimage=pigment {
image_map {
gif "povmap.gif"
//once
}
}
#declare top1 = cylinder {
<0,>,
<0,>, 15
open
//the image of a flag doesn't work and makes top1 part dissapear when used once.
// It only works when multiplied, but it's not the required result, so I commented it out.
//pigment {myimage}
}
#declare top2 = torus {
15.5,
1
}
#declare curve = difference{
object {top1 }
object {top2 translate y*61.2}
}
#declare top4 = merge{
cone {
62*y, 14.5,
85*y, 2
}
sphere { <0,>, 2.1
}
}
#declare door_box = box {
<-3, 64.5, -12>
<3,>
}
#declare door = difference{
object {top4 pigment {White}}
object{door_box rotate y*45 pigment {White}}
}
//satellite dish
#declare dish_p1 = cylinder {
<0,>,
<0,>, 0.2
texture {
pigment {White}
}
}
#declare dish_p2 = difference{
sphere {
<0,>
6
texture {
pigment {Coral}
}
}
sphere {
<0,>
6.6
texture {
pigment {Coral}
}
}
}
#declare dish_p4 = cone {
<0.5,>, 0
<0.5,>, 0.15
texture {
pigment {White}
}
}
#declare sattelite_dish = union{
object{dish_p1}
object{dish_p2 rotate <30,> translate <1,>}
object{dish_p4 rotate <30,> translate <1,>}
}
//LAMPS
#declare lamp = difference{
sphere {
<-10, 49.9, -1>
3.2
texture {
pigment {Grey}
}
}
sphere {
<-10, 49, -1>
3.6
texture {
pigment {Yellow}
}
}
}
////////////////////LARGE METAL CONSTRUCTION
//stem
#declare stem = cylinder {
<0,>,
<0,>, 2.6
texture {T_Silver_3E}
}
//ring
#declare ring = torus {
15,
0.5
texture {
pigment {Yellow}
}
}
//CONNECTING PARTS
//metal part that connect the stem to the ring
#declare metal_p = cylinder {
<1,>,
<15,>, .5
}
//metal part that connect the ring with other metal part
#declare metal_p1 = cylinder {
<15,>,
<22.25,>, .5
}
//metal part2 that connect the ring with other metal part
#declare metal_p2 = cylinder {
<0,>,
<22,>, .5
}
//metal part3 that connect the ring with other metal part
#declare metal_p3 = cylinder {
<22,>,
<34,>, .5
}
//metal part4 that connect the ring with other metal part
#declare metal_p4 = cylinder {
<22,>,
<12,>, .5
}
//metal part5 that connect the ring with other metal part
#declare metal_p5 = cylinder {
<0,>,
<34,>, .5
}
//metal part6 that connect the ring with other metal part
#declare metal_p6 = cylinder {
<34,>,
<34,>, .5
}
//metal part7 that connect the ring with other metal part
#declare metal_p7 = cylinder {
<12,>,
<34,>, .5
}
#declare metal_large = union{
object {metal_p3}
object {metal_p3 translate <-22, 0, -22>}
object {metal_p4}
object {metal_p5}
object {metal_p6}
object {metal_p7}
}
//SECOND LEVEL SUPPORT GROUP OF OBEJECTS
#declare stem_small = cylinder {
<0,>,
<0,>, .2
texture {
pigment {White}
}
}
#declare stem_small_group = union{
object {stem_small}
object {stem_small rotate y*90}
object {stem_small rotate y*180}
object {stem_small rotate y*-90}
object {stem_small rotate y*45 translate <-1.5, 0, -1.5>}
object {stem_small rotate y*135 translate <-1.5, 0, 1.5>}
object {stem_small rotate y*-225 translate <1.5,>}
object {stem_small rotate y*-45 translate <1.5,>}
}
#declare small_top = cylinder {
<-9, 25.5, -22>,
<9,>, .2
texture {
pigment {White}
}
}
//thin supporting metal parts that connect the ground and second level
#declare small_top_group = union{
object {small_top}
object {small_top rotate y*90}
object {small_top rotate y*180}
object {small_top rotate y*-90}
object {small_top rotate y*45}
object {small_top rotate y*135}
object {small_top rotate y*-135}
object {small_top rotate y*-45}
}
#declare path = box {
<-4, 25.5, -20>
<4,>
texture {
pigment {White}
}
}
//group all objects together
#declare second_level_support_group = union{
object {stem_small_group}
object {path rotate y*45 translate <-5, 0, -5>}
object {small_top_group}
}
//GROUP ALL METAL PARTS WITH THE RING
#declare metal_large_group = union{
object {ring}
object {metal_p}
object {metal_p rotate y*90}
object {metal_p rotate y*-90}
object {metal_p rotate y*180}
object {metal_p1}
object {metal_p1 rotate y*90}
object {metal_p1 rotate y*-90}
object {metal_p1 rotate y*180}
object{metal_p2 }
object{metal_p2 rotate y*90}
object{metal_p2 rotate y*-90}
object{metal_p2 rotate y*180}
object {metal_large }
object {metal_large rotate y*90}
object {metal_large rotate y*-90}
object {metal_large rotate y*180}
}
////////BOTTOM LADDER AND LEGS
#declare ladder_p1 = merge{
cylinder {
<-25, -15, -25>,
<-25, 26, -25>, 0.5
}
cone {
<-25, -17, -25> , 0.1,
<-25, -15, -25> , 0.5
// open
}
cone {
<-25, -4, -25> , 0.3,
<-25, -1, -25> , 1
// open
texture {
pigment {White}
}
}
cylinder {
<-25, -1, -25>,
<-25, 2, -25>, 1
texture {
pigment {White}
}
}
cone {
<-25, 2, -25> , 1,
<-25, 5, -25> , 0.3
// open
texture {
pigment {White}
}
}
cone {
<-25, 6, -25> , 0.3,
<-25, 9, -25> , 1
// open
texture {
pigment {White}
}
}
cylinder {
<-25, 9, -25>,
<-25, 12, -25>, 1
texture {
pigment {White}
}
}
cone {
<-25, 12, -25> , 1,
<-25, 15, -25> , 0.3
// open
texture {
pigment {White}
}
}
cone {
<-25, 15, -25> , 0.3,
<-25, 18, -25> , 1
// open
texture {
pigment {White}
}
}
cylinder {
<-25, 18, -25>,
<-25, 21, -25>, 1
texture {
pigment {White}
}
}
cone {
<-25, 21, -25> , 1,
<-25, 26, -25> , 0.3
// open
texture {
pigment {White}
}
}
}
#declare ladder_p2 = cylinder {
<-22, -12.1, -26>,
<-22, 25.8, -26>, 0.2
}
#declare ladder_step = cylinder {
<-22, 24, -26>,
<-28, 24, -26>, 0.2
}
#declare ladder_bottom = cylinder {
<-40, -10, -40>,
<-40, -11, -40>, 4
}
#declare ladder_steps_group = union{
object {ladder_step}
object {ladder_step translate y*-2}
object {ladder_step translate y*-4}
object {ladder_step translate y*-6}
object {ladder_step translate y*-8}
object {ladder_step translate y*-10}
object {ladder_step translate y*-12}
object {ladder_step translate y*-14}
object {ladder_step translate y*-16}
object {ladder_step translate y*-18}
object {ladder_step translate y*-20}
object {ladder_step translate y*-22}
object {ladder_step translate y*-24}
object {ladder_step translate y*-26}
object {ladder_step translate y*-28}
object {ladder_step translate y*-30}
object {ladder_step translate y*-32}
object {ladder_step translate y*-34}
object {ladder_step translate y*-36}
object {ladder_step translate y*2}
}
//bottom ladder
#declare ladder_group = union{
object {ladder_p1}
object {ladder_p2}
object {ladder_p2 translate x*-6}
object {ladder_steps_group}
translate <2.5,>
}
//bottom legs
#declare legs_group = union{
object {ladder_p1}
//object {ladder_bottom}
translate <2.5,>
}
//LADDER 2
#declare ladder2_p2 = cylinder {
<-22, -12.1, -26>,
<-22, 25.8, -26>, 0.2
}
#declare ladder2_step = cylinder {
<-22, 24, -26>,
<-28, 24, -26>, 0.2
}
#declare ladder2_steps_group = union{
object {ladder2_step}
object {ladder2_step translate y*-2}
object {ladder2_step translate y*-4}
object {ladder2_step translate y*-6}
object {ladder2_step translate y*-8}
object {ladder2_step translate y*-10}
object {ladder2_step translate y*-12}
object {ladder2_step translate y*-14}
object {ladder2_step translate y*-16}
object {ladder2_step translate y*-18}
object {ladder2_step translate y*-20}
object {ladder2_step translate y*-22}
object {ladder2_step translate y*-24}
object {ladder2_step translate y*-26}
object {ladder2_step translate y*-28}
object {ladder2_step translate y*-30}
object {ladder2_step translate y*-32}
object {ladder2_step translate y*-34}
object {ladder2_step translate y*-36}
object {ladder2_step translate y*2}
}
#declare ladder2_handles = cylinder {
<-1, 66, -6>,
<-8.5, 66, -13>, 0.3
}
#declare ladder2_group = union{
object {ladder2_p2}
object {ladder2_p2 translate x*-6}
object {ladder2_steps_group}
translate <2.5,>
}
#declare ladder_handles = cylinder {
<-1, 66, -6>,
<-8.5, 66, -13>, 0.3
}
///////////////BARRIER
#declare barrier1 = cylinder {
<-16.75, 25.5, -22>,
<-16.75, 31.1, -22>, 0.3
}
#declare barrier2 = cylinder {
<-17, 31, -22>,
<7,>, 0.3
}
#declare barrier = union{
object {barrier1 }
object {barrier1 translate x*23.5 }
object {barrier2 }
}
#declare barrier_group = union{
object {barrier}
object {barrier rotate y*90 }
object {barrier rotate y*180 }
object {barrier rotate y*-90 }
object {barrier rotate y*90 translate <28.7,> }
}
/////////////CONTAINERS
#declare container_cylinder = cylinder{
<8,>,
<8,>, 7.5
}
#declare container_sphere = sphere {
<8,>
7.5
}
#declare container_ring = torus {
7,
0.6
texture {T_Gold_1A
pigment {P_Brass1}
}
}
#declare container_object = merge{
object {container_cylinder}
object {container_sphere}
object {container_sphere translate y*12}
object {container_ring translate <8,> }
object {container_ring translate <8,>}
}
#declare object1 = sphere {
<16,>
6
}
#declare object2 = cylinder{
<11,>,
<11,>, 3.5
}
#declare object3 = cylinder{
<-19, 26, 15>,
<-19, 30, 15>, 2.5
}
#declare object4 = sphere {
<-19, 30, 15>
2.5
}
#declare object5 = cylinder{
<-15, 26, 18>,
<-15, 30, 18>, 3.5
}
#declare container_group = union{
//////////////bottom level
object {container_object texture {T_Silver_5A pigment {P_Chrome5}}translate y*1}
object {container_object translate x*-16 translate y*1}
object {container_object translate <-16, 0, 42> translate y*1}
object {container_object translate z*42 translate y*1}
object {container_object translate <13,> translate y*1}
object {container_object translate <13,> translate y*1}
object {container_object translate <-29, 0, 13> translate y*1}
object {container_object translate <-29, 0, 29> translate y*1}
/////////////////top level
object {container_object translate < -8, 31, 35> scale 0.8 translate y*3}
object {container_object translate <-22, 31, 20> scale 0.8 translate y*3}
object {container_object translate <-8, 31, 8> scale 0.8 translate y*3}
object {object1}
object {object2 texture {T_Silver_5A pigment {P_Chrome5}} scale 0.9 translate <-1, 3, 0>}
object {object3 texture {T_Silver_5A pigment {P_Chrome5}} translate <1,>}
object {object4 texture {T_Silver_5A pigment {P_Chrome5}} }
object {object5 texture {T_Silver_5A pigment {Yellow}translate <3,>} }
texture {T_Gold_1A
pigment {White_Wood }
finish{F_MetalA}
}
finish {
phong 1
phong_size 60
}
}
#declare spaceship = union{
object {curve pigment {White}}
object {door pigment {White}}
object {metal_large_group pigment {Yellow} finish{F_MetalD}}
object {metal_large_group translate y*39 scale 0.65 pigment {Yellow} finish{F_MetalD}}
object {sattelite_dish rotate y*105}
object {lamp}
object {lamp translate <12,>}
object {ladder_handles pigment {White} finish{F_MetalD}}
object {ladder_handles translate <-4.2, 0, 4.2> pigment {White} finish{F_MetalD}}
object {ladder_group rotate <35,> translate <-4, -9, -35> pigment{White} finish{F_MetalD}}
object {ladder2_group rotate <0,> translate <22,> pigment{White} finish{F_MetalD}}
object {legs_group rotate <35,> translate <4,> pigment{Yellow} finish{F_MetalD}}
object {legs_group rotate <35,> translate <36,> pigment{Yellow} finish{F_MetalD}}
object {legs_group rotate <35,> translate <-36, -9, 4> pigment{Yellow} finish{F_MetalD}}
object {container_group scale 0.95}
object {barrier_group pigment {Yellow} finish{F_MetalD}}
object {ladder_bottom pigment {Yellow} finish{F_MetalD}}
object {ladder_bottom rotate <0,> pigment {Yellow} finish{F_MetalD}}
object {ladder_bottom rotate <0,> pigment {Yellow} finish{F_MetalD}}
object {ladder_bottom rotate <0,> pigment {Yellow} finish{F_MetalD}}
object {second_level_support_group}
object {stem pigment {White}finish{F_MetalD}}
finish {
phong 1
phong_size 60
}
}
object {spaceship translate y*50}