Friday, December 12, 2008

Source code 6

#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}

No comments: