File talk:MovableBridge tilt.gif
POVRay source file
editTo render the scene file below, two include files (vehicles.inc and puppet.inc) are required.
//movable bridge -- 9:tilt bridge //for POV-Ray3.6 (created by MacMegaPOV) //by Y tambe //You can use this source file under either GFDL or CC-by-sa (dual license) //You can use the images you render as free. #include "puppet.inc" #include "vehicles.inc" //camera camera { angle 15 location <0.0, 0.0, 45> look_at <0.0, 0.0, 0.0> rotate -20*x rotate -10*y } //lights light_source {//main light <0, 50,10> rgb <1, 1, 1> shadowless } light_source {//sub <0, 0,100> rgb <1, 1, 1>*.2 shadowless } //for animation #declare shipPos = (clock -0.35)*90; #declare counter = clock; #switch (clock) #range (0.0, 0.2) #declare counter = clock *5; #break #range (0.2, 0.4) #declare counter = 1; #break #range (0.4, 0.6) #declare counter = (0.6-clock)*5; #break #range (0.6, 1.0) #declare counter = 0; #break #default #declare counter = 0; #break #end //puppetPos #switch (clock) #range (0.0, 0.2) #declare puppetPos = <7.5-1.8*clock*(10/1.8),0,0>; #declare walk = sin( (clock-0.2)*2*pi*8); #declare pAngle = array[7] {15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk,-90}; #break #range (0.2, 0.55) #declare puppetPos = <5.5,0,0>; #declare pAngle = array[7] {min(60, max(-50, atan2( (clock -0.35)*85,5.5)/pi*180 ) ),0,0,0,0,0,-90} #break #range (0.55, 0.6) #declare puppetPos = <5.5,0,0>; #declare pAngle = array[7] {0,0,0,0,0,0,-90} #break #range (0.6, 0.95) #declare puppetPos = vaxis_rotate(<5,0,0>,-y,180*(clock-0.6)/0.35); #declare puppetPos = <puppetPos.x, puppetPos.y, puppetPos.z*.6-abs(clock-(0.95+0.6)/2)*4>; #declare walk = sin( (clock-0.6)*2*pi*8); #declare pAngle = array[7] {15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk,atan2(puppetPos.y, puppetPos.x-5.5)/pi*180+90}; #break #range (0.95, 1.0) #declare puppetPos = <-5.5-1.8*(clock-0.95)*(10/1.8),0,0>; #declare walk = sin( (clock-0.2)*2*pi*8); #declare pAngle = array[7] {15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk,-90}; #break #default #declare puppetPos = <9,0,0>; #declare pAngle = array[7] {0,0,0,0,0,0,0} #break #end //#declare counter = 1; #declare bridgeTexture = texture{ pigment{color rgb <0.8,0.0,0.2>} finish{ambient 0.2 diffuse 0.8} } #declare roadTexture = texture{ pigment{color rgb 0.6} finish{ambient 0.2 diffuse 0.8} } #declare road2Texture = texture{ pigment{color rgb 0.2} finish{ambient 0.4 diffuse 0.8} } //movable parts union{ union{ prism{linear_sweep bezier_spline -0.05, 0.15, 16, <-5,1>, <-3,5>, <3,5>, <5,1>, <5,1>, <5,1>, <5,-1.5>, <5,-1.5>, <5,-1.5>, <3,3.5>, <-3,3.5>, <-5,-1.5>, <-5,-1.5>, <-5,-1.5>, <-5,1>, <-5,1> } prism{linear_sweep bezier_spline 0.15, 0.35, 16, <-5,0.95>, <-3,4.95>, <3,4.95>, <5,0.95>, <5,0.95>, <5,0.95>, <5,0.92>, <5,0.92>, <5,0.92>, <3,4.92>, <-3,4.92>, <-5,0.92>, <-5,0.92>, <-5,0.92>, <-5,0.95>, <-5,0.95> } prism{linear_sweep bezier_spline -0.15, 0.40, 16, <-5,-1.42>, <-3,3.42>, <3,3.42>, <5,-1.42>, <5,-1.42>, <5,-1.42>, <5,-1.45>, <5,-1.45>, <5,-1.45>, <3,3.45>, <-3,3.45>, <-5,-1.45>, <-5,-1.45>, <-5,-1.45>, <-5,-1.42>, <-5,-1.42> } translate 1*z } intersection{ torus{4.9,0.1 scale <1,2,1> rotate 60*x} box{<-100,-100,-100>,<100,100,0>} } rotate -counter*30*x translate -1*z texture{bridgeTexture} } //static parts and road union{ box{<-4.0,-0.05,3>,<-999,-3,-3>} difference{ box{<-4,0.14,4>,<-999,-3,0>} cylinder{<-4,1,0>,<-4,-4,0>,1 scale <1,1,2>} box{<-5.05,1,-0>,<-1,-4,-999>} translate 1*z } box{<4.0,-0.05,3>,<999,-3,-3>} difference{ box{<4,0.14,4>,<999,-3,-4>} box{<5.05,1,-0>,<1,-4,-999>} cylinder{<4,1,0>,<4,-4,0>,1 scale <1,1,2>} translate 1*z } // box{<3.05,0.15,1.1>,<999,-0.4,-1.1>} texture{road2Texture} } union{ box{<-5.05,0.15,1.1>,<-999,-0.4,-1.1>} box{<-5.05,0.15,1.1>,<-9,0.30,1.02>} box{<-5.05,0.15,-1.1>,<-9,0.30,-1.02>} box{<5.05,0.15,1.1>,<999,-0.4,-1.1>} box{<5.05,0.15,1.1>,<9,0.30,1.02>} box{<5.05,0.15,-1.1>,<9,0.30,-1.02>} texture{roadTexture} } difference{ //ground union{ prism{ linear_sweep cubic_spline 20, -20, 7, <2,1>,<2,-1>,<-2,-1>,<-2,1>,<2,1>,<2,-1>,<-2,-1> scale <2,2,2> rotate 90*x translate -2.5*y translate -8.7*x } prism{ linear_sweep cubic_spline 20, -20, 7, <2,1>,<2,-1>,<-2,-1>,<-2,1>,<2,1>,<2,-1>,<-2,-1> scale <2,2,2> rotate 90*x translate -2.5*y translate 8.7*x } texture{ pigment{color rgb <0.3,0.5,0.1>} finish{ambient 0.2 diffuse 0.8} normal{bozo 5 scale 0.2} } } box{<999,-0.4,1.1>,<-999,1,-1.1>} } object{Ship scale 1.2 translate shipPos*z } object {puppet(pAngle[0], pAngle[1], pAngle[2], pAngle[3], pAngle[4], pAngle[5]) translate (1.85+0.15+0.5)*y scale 0.25 rotate pAngle[6]*y translate puppetPos } plane{y,-1.5 texture{ pigment{color rgbt <.3,.6,1,0>} finish{ambient 0.5 diffuse 0.7} normal{ bozo 5 scale <0.2,0.2,1> } } }