PDA

View Full Version : Merry Xmas Settlers!



Gerontius
11.12.14, 11:14
I always make a digital/electronic xmas card rather than sending out paper ones. I modified my card this year to send a special message out to the settlers!

http://i.imgur.com/OPdTYBl.gif

It was produced using the free POV-Ray raytracer. You can make your own using this file!

// PoVRay 3.7 Scene File
#version 3.7;
global_settings{ assumed_gamma 1.0
radiosity{}
}
background {rgb <0.1,0.1,0.25>*0.25}
#default{ finish{ ambient 0.0 diffuse 0.9 }}

// camera ------------------------------------------------------------------
#declare mclock=clock;

#declare endflyink=1;
#declare starttextk=1.3;
#declare endtextk=18;
#declare maxk=endtextk-starttextk;
#declare flyoutstartk=20;
#declare endk=21;
#declare rotx=1;
#declare roty=-1;
#declare rotz=1;
#declare rotatenum=maxk*(1-cos((mclock-starttextk)*pi/maxk))/2;

camera {perspective angle 50
location <0 , 0 ,-9>
right x*image_width/image_height
look_at <0.0 , 0 , 0.0>
}

// sun ----------------------------------------------------------------------

light_source{< 100,100,-200> color rgb 0.5 }

// sky/snowflakes------------------------------------------------------------------

#declare n=0;
#declare maxn=1000; //default: 1000
#declare R1=seed(0);

#while(n<maxn)
sphere{ <0,0,0>, .07
pigment { colour rgb 1}
finish { diffuse 0 ambient 0 emission 0.75 }
no_shadow
no_radiosity

translate <(rand(R1)+2)*4,3*sin(4*pi*mclock/21),3*cos(4*pi*mclock/21)>
rotate<rand(R1)*360,rand(R1)*360,rand(R1)*360>

}

#declare n=n+1;
#end

//---------------------------------------------------------------------------
//---------------------------- objects in scene ----------------------------
//---------------------------------------------------------------------------

#include "shapes.inc"
#declare edgenum=0.075;
#declare startblock=object{ Round_Box(<-2,-1,-1>,<2,1,1>, edgenum , 1) }

#declare chipsize=1;
#declare chipover=0.01;
#declare cutbox=object{ box{<-chipover,-chipover,-chipover>,<chipsize+chipover,chipsize+chipover,chipsize+chipo ver>} }
#declare chippiecebox=object{ Round_Box(<-chipsize/2,-chipsize/2,-chipsize/2>,<chipsize/2,chipsize/2,chipsize/2>,0.035,1) }
#declare chipremove=object{cutbox translate 1000}
#declare chiparraysize=16;

#declare chiparray=array[chiparraysize]{
<-2,-1,-1>,<-1,-1,-1>,<0,-1,-1>,<1,-1,-1>,
<-2,0,-1>,<-1,0,-1>,<0,0,-1>,<1,0,-1>,

<-2,-1,0>,<-1,-1,0>,<0,-1,0>,<1,-1,0>,
<-2,0,0>,<-1,0,0>,<0,0,0>,<1,0,0>
}

#macro Sort_Swap_Data(Array, IdxA, IdxB)
#local Tmp = Array[IdxA];
#declare Array[IdxA] = Array[IdxB];
#declare Array[IdxB] = Tmp;
#end

#declare n=0;
#declare R2=seed(1);

#while(n<10000)
Sort_Swap_Data(chiparray, floor(rand(R2)*0.9999999*dimension_size(chiparray, 1)), floor(rand(R2)*0.9999999*dimension_size(chiparray, 1)))
#declare n=n+1;
#end

#declare starttimearray=array[2][chiparraysize]{
{0, 2.5, 4, 4.9, 5.75, 6.5, 7, 7.5, 8.5, 9, 9.75, 11, 12, 13, 14.5, 16}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
}

#declare n=0;
#while(n<chiparraysize)
#declare starttimearray[1][n]=maxk*(1-cos(starttimearray[0][n]*pi/maxk))/2;
#declare starttimearray[0][n]=starttimearray[0][n]+starttextk;
#if(mclock>=starttimearray[0][n])
#declare currentn=n;
#end
#declare n=n+1;
#end

#if(mclock>=starttimearray[0][0])
#if(mclock>=starttimearray[0][chiparraysize-1])
#declare chipremove=object{box{<-3,-2,-2>,<3,2,2>}}
#else
#declare chipremove=
union{
object{cutbox translate 1000}
#while(currentn>=0)
object{cutbox scale 1 translate chiparray[currentn]}
#declare currentn=currentn-1;
#end
}
#end
#end



#declare mainmat=
material{
texture{
normal{bumps 0.15 scale 0.1}

pigment{ color rgbt <0.65,0.65,1,0.85> }
finish {
emission 0.5
ambient 0.5 // ambient surface reflection color [0.1]
diffuse 0.6 // amount [0.6]
brilliance 1.0 // tightness of diffuse illumination [1.0]
specular 0.99 // amount [0.0]
roughness 0.00005 // (~1.0..0.0005) (dull->highly polished) [0.05]

reflection {
0.25 // minimal reflection value (for variable reflection)
0.6 // reflection amount (maximum for variable reflection)
fresnel on // realistic variable reflection
falloff 1.0 // falloff exponent for variable reflection
exponent 1.0 // influence surface reflection characteristic
}
conserve_energy // more realistic
} // finish
}
interior { ior 1.3 dispersion 1.1}
}


#declare simplemat=
material{
texture{
normal{bumps 0.15 scale 0.1}

pigment{ color rgbt <0.65,0.65,1,0.85> }
finish {
emission 0.5
ambient 0.5 // ambient surface reflection color [0.1]
// (---diffuse lighting---)
diffuse 0.6 // amount [0.6]
brilliance 1.0 // tightness of diffuse illumination [1.0]
specular 0.99 // amount [0.0]
roughness 0.00005 // (~1.0..0.0005) (dull->highly polished) [0.05]
reflection { 0.6 }
} // finish
}
interior { ior 1.3 }//dispersion 1.1}
}

#declare mymat1=
material{texture{
pigment{colour rgb <0.65, 0.65, 1>}
finish{emission 0.5}
}}

#declare thick=0.2;
#declare letscale=0.6;

#declare settlers=
text { ttf "tramp.ttf", "MERRY XMAS", thick/letscale, 0.0
scale letscale translate<-1.9,0.2,0.5> }

#declare letscale=0.76;
#declare xmas= text { ttf "tramp.ttf", "SETTLERS", thick/letscale, 0.0
scale letscale translate<-1.85,-0.6,-0.9> }

object{
merge{
difference{
object{startblock}
object{chipremove}
}// end diff
object{settlers}
object{xmas}
}//end merge
material{mainmat}

#if(clock<endflyink)
translate 6.6*x*(1-clock/endflyink)
#end

#if(clock>=starttextk & clock<=endtextk)
rotate <rotatenum*360*rotx/maxk,rotatenum*360*roty/maxk,rotatenum*360*rotz/maxk>
#end

#if(clock>=flyoutstartk)
translate -x*6.5*(clock-flyoutstartk)/(endk-flyoutstartk)
#end
}

#declare n=0;
#while(n<chiparraysize)

#declare R1=seed(n+10);
#declare exps1=1+1*rand(R1); //speed of pieces
#declare exps1a=1.75; //variation between pieces
#declare exps2=0.8+.08*rand(R1); //speed of centre of mass
#declare exps3=1+1*rand(R1); //speed of rotation of mass
#declare exps4=5+5*rand(R1); //speed of rotation of pieces
#declare expd=2+2*rand(R1); //number of clocks explosion lasts

#declare ntime=starttimearray[0][n];
#declare noffset=starttimearray[1][n];

#declare randdirection=vrotate(vnormalize(chiparray[n]),<noffset*360*rotx/maxk,noffset*360*roty/maxk,noffset*360*rotz/maxk>);

#if(mclock>=ntime & mclock-ntime<=expd)

union{
object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate <-chipsize/4,-chipsize/4,-chipsize/4>
translate <-chipsize/4,-chipsize/4,-chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}

object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate < chipsize/4,-chipsize/4,-chipsize/4>
translate < chipsize/4,-chipsize/4,-chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}

object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate <-chipsize/4, chipsize/4,-chipsize/4>
translate <-chipsize/4, chipsize/4,-chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}

object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate < chipsize/4, chipsize/4,-chipsize/4>
translate < chipsize/4, chipsize/4,-chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}

object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate <-chipsize/4,-chipsize/4, chipsize/4>
translate <-chipsize/4,-chipsize/4, chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}

object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate < chipsize/4,-chipsize/4, chipsize/4>
translate < chipsize/4,-chipsize/4, chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}

object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate <-chipsize/4, chipsize/4, chipsize/4>
translate <-chipsize/4, chipsize/4, chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}

object{chippiecebox scale 0.5-0.499*(mclock-ntime)/expd rotate <90*rand(R1),90*rand(R1),90*rand(R1)>*(mclock-ntime)*exps4/expd translate < chipsize/4, chipsize/4, chipsize/4>
translate < chipsize/4, chipsize/4, chipsize/4>*(mclock-ntime)*(exps1+exps1a*rand(R1))
}
material{mymat1}
translate <chipsize/2,chipsize/2,chipsize/2>+chiparray[n]
rotate<noffset*360*rotx/maxk,noffset*360*roty/maxk,noffset*360*rotz/maxk>
translate randdirection*(mclock-ntime)*exps2

}

#end //end if

#declare n=n+1;
#end //end while

Thejollyone
11.12.14, 15:16
Happy Xmas smart ass x ;)

Caerlyon
27.12.14, 10:11
Nice,

where is tramp.ttf path defined, parse error

Gerontius
27.12.14, 22:59
Copy the font (probably from Windows directory) into your include directory or change it to a different font if you don't have tramp. I only used that font because it had nice curves that could have been chipped from ice.