File talk:MovableBridge transport.gif
跳转到导航
跳转到搜索
POVRay source file
[编辑]To render the scene file below, two include files (vehicles.inc and puppet.inc) are required.
//movable bridge -- 12:transporter 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 "vehicles.inc" #include "puppet.inc" //camera camera { angle 15 location <0.0, 0.0, 40> 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 ship1Pos = (clock -0.35)*90; #declare deckPos = 0; #declare deckL = 0; #declare deckR = 0; #switch (clock) #range (0.0, 0.05) #declare deckPos = -3; #declare deckL = 0; #declare deckR = clock*20; #break #range (0.05, 0.35) #declare deckPos = -3; #declare deckL = 0; #declare deckR = 1; #break #range (0.35, 0.40) #declare deckPos = -3; #declare deckL = 0; #declare deckR = (0.40-clock)*20; #break #range (0.40, 0.50) #declare deckPos = -(0.45-clock)*20*3; #declare deckL = 0; #declare deckR = 0; #break #range (0.50, 0.55) #declare deckPos = 3; #declare deckL = (clock-0.5)*20; #declare deckR = 0; #break #range (0.55, 0.85) #declare deckPos = 3; #declare deckL = 1; #declare deckR = 0; #break #range (0.85, 0.90) #declare deckPos = 3; #declare deckL = (0.90-clock)*20; #declare deckR = 0; #break #range (0.90, 1.00) #declare deckPos = -(clock-0.95)*20*3; #declare deckL = 0; #declare deckR = 0; #break #default #declare counter = 0; #break #end //car1Pos #switch (clock) #range (0.0, 0.10) #declare car1Pos = <-3+0.2,0, -0.3>; #break #range (0.10, 0.5) #declare car1Pos = <-3+0.2,0, -0.3>+<-(clock-0.10)*15,0,min( (clock-0.10)*10, 0.75)>; #break #range (0.5, 0.85) #declare car1Pos = <3+0.2,0, -0.3>+<(0.85-clock)*18,0,min( (0.85-clock)*10,0.75)>; #break #range (0.85, 1.0) #declare car1Pos = <deckPos+0.2,0, -0.3>; #break #default #declare car1Pos = <-9,0,0>; #break #end //car2Pos #switch (clock) #range (0.0, 0.05) #declare car2Pos = <-3-0.5,0, 0.45>; #break #range (0.05, 0.50) #declare car2Pos = <-3-0.5,0, 0.45>-<(clock-0.05)*20,0,0>; #break #range (0.50, 0.80) #declare car2Pos = <3-0.5,0, 0.45>-<-(0.80-clock)*20,0,min(0.2, (0.80-clock)*20)>; #break #range (0.80, 1.00) #declare car2Pos = <deckPos-0.5,0, 0.45>; #break #default #declare car2Pos = <-9,0,0>; #break #end //car3Pos #switch (clock) #range (0.0, 0.35) #declare car3Pos = <-3-0.2,0, 0.3>+<-(0.35-clock)*18,0,-min( (0.35-clock)*10,0.75)>; #break #range (0.35, 0.6) #declare car3Pos = <deckPos-0.2,0, 0.3>; #break #range (0.60, 1.0) #declare car3Pos = <3+0.2,0, 0.3>-<-(clock-0.60)*15,0,min( (clock-0.10)*10, 0.75)>; #break #default #declare car3Pos = <-9,0,0>; #break #end //car4Pos #switch (clock) #range (0.0, 0.30) #declare car4Pos = <-3+0.5,0, -0.45>+<-(0.30-clock)*20,0,min(0.2, (0.30-clock)*20)>; #break #range (0.30, 0.55) #declare car4Pos = <deckPos+0.5,0, -0.45>; #break #range (0.55, 1) #declare car4Pos = <deckPos+0.5,0, -0.45>+<(clock-0.55)*20,0,0>; #break #default #declare car4Pos = <-9,0,0>; #break #end #declare walk = sin( clock*2*pi*17); #declare pAngle = array[4]; //puppet1Pos #declare pAngle[0] = array[6]{0,0,0,0,0,0}; #switch (clock) #range (0.0, 0.05) #declare puppet1Pos = <deckPos,0,0>+<0.5,0,0.7>; #declare pAngle[0] = array[6]{0,0,0,0,0,0}; #break #range (0.05, 1.0) #declare puppet1Pos = <-3,0,0>+<0.5,0,0.7>-<(clock-0.05)*8,0,0>; #declare pAngle[0] = array[6]{15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk}; #break #default #declare puppet1Pos = <-9,0,0>; #declare pAngle[0] = array[6]{0,0,0,0,0,0}; #break #end //puppet3Pos #declare pAngle[2] = array[6]{0,0,0,0,0,0}; #switch (clock) #range (0.0, 0.4) #declare pAngle[2] = array[6]{15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk}; #declare puppet3Pos = <4.5,0,0.7>+<(0.4-clock)*8,0,0>; #break #range (0.4, 0.55) #declare pAngle[2] = array[6]{0,0,0,0,0,0}; #declare puppet3Pos = <4.5,0,0.7>; #break #range (0.55, 0.7) #declare pAngle[2] = array[6]{15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk}; #declare puppet3Pos = <deckPos,0,0>+<max( 1+0.5-(clock-0.55)*8,0.5),0,0.7>; #break #range (0.7, 1.0) #declare pAngle[2] = array[6]{0,0,0,0,0,0}; #declare puppet3Pos = <deckPos,0,0>+<0.5,0,0.7>; #break #default #declare pAngle[0] = array[6]{0,0,0,0,0,0}; #declare puppet3Pos = <-9,0,0>; #break #end //puppet2Pos #declare pAngle[1] = array[6]{0,0,0,0,0,0}; #switch (clock) #range (0.0, 0.05) #declare pAngle[1] = array[6]{0,0,0,0,0,0}; #declare puppet2Pos = <deckPos,0,0>+<-1-0.5,0,-0.7>; #break #range (0.05, 0.2) #declare pAngle[1] = array[6]{15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk}; #declare puppet2Pos = <deckPos,0,0>+<min(-1-0.5+(clock-0.05)*8, -0.5),0,-0.7>; #break #range (0.2, 0.55) #declare pAngle[1] = array[6]{0,0,0,0,0,0}; #declare puppet2Pos = <deckPos,0,0>+<-0.5,0,-0.7>; #break #range (0.55, 1.0) #declare pAngle[1] = array[6]{15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk}; #declare puppet2Pos = <3,0,0>+<-0.5,0,-0.7>+<(clock-0.55)*8,0,0>; #break #default #declare pAngle[1] = array[6]{0,0,0,0,0,0}; #declare puppet2Pos = <-9,0,0>; #break #end //puppet4Pos #declare pAngle[3] = array[6]{0,0,0,0,0,0}; #switch (clock) #range (0.0, 0.5) #declare pAngle[3] = array[6]{0,0,0,0,0,0}; #declare puppet4Pos = <-999,0,0>; #break #range (0.5, 0.9) #declare pAngle[3] = array[6]{15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk}; #declare puppet4Pos = <-4.5,0,-0.7>+<(clock-0.9)*8,0,0>; #break #range (0.9, 1.0) #declare pAngle[3] = array[6]{0,0,0,0,0,0}; #declare puppet4Pos = <-4.5,0,-0.7>; #break #default #declare pAngle[3] = array[6]{0,0,0,0,0,0}; #declare puppet4Pos = <-9,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 rLineTexture = texture{ pigment{color rgb 0.8} finish{ambient 0.2 diffuse 0.8} } //movavle parts union{ box{<1,-0.25,-1>, <-1, 0, 1>} box{<0.99,0.00,.99>, <-0.99,0.3,0.95>} box{<0.99,0.00,-.99>, <-0.99,0.3,-0.95>} box{<0.85, 0.05, 0.95>, <0.9, 0.28, -0.95> translate deckL*1*y} box{<-0.85, 0.05, 0.95>, <-0.9, 0.28, -0.95> translate deckR*1*y} cylinder{<0.8, 0, 0.97>, <0.8, 2.1, 0.97>, 0.05} cylinder{<0.8, 0, -0.97>, <0.8, 2.1, -0.97>, 0.05} cylinder{<-0.8, 0, 0.97>, <-0.8, 2.1, 0.97>, 0.05} cylinder{<-0.8, 0, -0.97>, <-0.8, 2.1, -0.97>, 0.05} box{<0.9,2.2,1.2>, <-0.9, 2.0, 0.95> } box{<0.9,2.2,-1.2>, <-0.9, 2.0, -0.95> } box{<0.8,2.1,-1.2>, <0.6, 2.12, 1.2> } box{<-0.8,2.1,-1.2>, <-0.6, 2.12, 1.2> } cylinder{<0.7,0,1.2>, <-0.7, 0, -1.2> ,0.05 scale <1,0.2,1> translate 2.05*y} translate deckPos*x texture{bridgeTexture} } //static parts and road union{ box{<-4,0,1.1>,<-999,-0.4,-1.1>} box{<-6, 0.01, -0.05>, <-999, 0, 0.05> texture{rLineTexture} }//center line box{<-4,-0.01,1.07>,<-10,0.15,1.02>} box{<-4,-0.01,1.07>,<-4.15,2,1.02>} box{<-5,-0.01,1.07>,<-5.15,2,1.02>} box{<-4,2,1.07>,<-5.15,2.15,1.02>} cylinder{ <-5, 2, 0>, <-4.15, 0.15, 0>, 0.05 scale <1,1,0.2> translate 1.04*z} cylinder{ <-5, 2, 0>, <-10, 0.15, 0>, 0.05 scale <1,1,0.2> translate 1.04*z} box{<-4,-0.01,-1.07>,<-10,0.15,-1.02>} box{<-4,-0.01,-1.07>,<-4.15,2,-1.02>} box{<-5,-0.01,-1.07>,<-5.15,2,-1.02>} box{<-4,2,-1.07>,<-5.15,2.15,-1.02>} cylinder{ <-5, 2.15, 0>, <-4.15, 0.15, 0>, 0.05 scale <1,1,0.2> translate -1.04*z} cylinder{ <-5, 2.15, 0>, <-10, 0.15, 0>, 0.05 scale <1,1,0.2> translate -1.04*z} box{<4,0,1.1>,<999,-0.4,-1.1>} box{<6, 0.01, -0.05>, <999, 0, 0.05> texture{rLineTexture} }//center line box{<4,-0.01,1.07>,<10,0.15,1.02>} box{<4,-0.01,1.07>,<4.15,2,1.02>} box{<5,-0.01,1.07>,<5.15,2,1.02>} box{<4,2,1.07>,<5.15,2.15,1.02>} cylinder{ <5, 2, 0>, <4.15, 0.15, 0>, 0.05 scale <1,1,0.2> translate 1.04*z} cylinder{ <5, 2, 0>, <10, 0.15, 0>, 0.05 scale <1,1,0.2> translate 1.04*z} box{<4,-0.01,-1.07>,<10,0.15,-1.02>} box{<4,-0.01,-1.07>,<4.15,2,-1.02>} box{<5,-0.01,-1.07>,<5.15,2,-1.02>} box{<4,2,-1.07>,<5.15,2.15,-1.02>} cylinder{ <5, 2, 0>, <4.15, 0.15, 0>, 0.05 scale <1,1,0.2> translate -1.04*z} cylinder{ <5, 2, 0>, <10, 0.15, 0>, 0.05 scale <1,1,0.2> translate -1.04*z} box{<-4.15,1.9,-1.07>,<4.15,2.1,-1.02>} box{<-4.15,1.9,1.07>,<4.15,2.1,1.02>} cylinder{-0.2*y,-2*y,0.4 translate 5*x } cylinder{-0.2*y,-2*y,0.4 translate -5*x } texture{roadTexture} } //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 -13*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 13*x } texture{ pigment{color rgb <0.3,0.5,0.1>} finish{ambient 0.2 diffuse 0.8} normal{bozo 5 scale 0.2} } } //Ship1 object{Ship translate <1.0, 0, ship1Pos> } //Car1 object {Car scale 0.7 rotate -180*y translate car1Pos texture{ pigment{color rgb 0.9} finish{ambient 0.2 diffuse 0.8} } } //Car2 object {Car scale 0.7 rotate -180*y translate car2Pos texture{ pigment{color rgb <1,0,0>} finish{ambient 0.2 diffuse 0.8} } } //Car3 object {Car scale 0.7 translate car3Pos texture{ pigment{color rgb 0.4} finish{ambient 0.2 diffuse 0.8} } } //Car4 object {Car scale 0.7 translate car4Pos texture{ pigment{color rgb <1,1,0>} finish{ambient 0.2 diffuse 0.8} } } //puppet2 object {puppet(pAngle[1][0],pAngle[1][1],pAngle[1][2],pAngle[1][3],pAngle[1][4],pAngle[1][5]) translate (1.85+0.15+0.5)*y scale 0.07 rotate 90*y translate puppet2Pos } //puppet4 object {puppet(pAngle[3][0],pAngle[3][1],pAngle[3][2],pAngle[3][3],pAngle[3][4],pAngle[3][5]) translate (1.85+0.15+0.5)*y scale 0.07 rotate 90*y translate puppet4Pos } #declare SkinTexture= texture{ pigment{color rgb <1,0.9,0.7>} finish{ambient 0.4 diffuse 0.6} } #declare HandTexture= texture{ pigment{color rgb <1,0.9,0.7>} finish{ambient 0.4 diffuse 0.6} } #declare HairTexture= texture{ pigment{color rgb <1.0,1.0,0.4>} finish{ambient 0.4 diffuse 0.6} } #declare BodyTexture1= texture{ pigment{color rgb <1,0.0,0.0>} finish{ambient 0.4 diffuse 0.6} } #declare BodyTexture2= texture{ pigment{color rgb <0.2,0.2,0.2>} finish{ambient 0.4 diffuse 0.6} } #declare FootTexture1= texture{ pigment{color rgb <0.2,0.2,1.0>} finish{ambient 0.4 diffuse 0.6} } #declare FootTexture2= texture{ pigment{color rgb <0.2,0.2,1.0>} finish{ambient 0.4 diffuse 0.6} } #declare ArmTexture= texture{ pigment{color rgb <1,0.0,0.0>} finish{ambient 0.4 diffuse 0.6} } //puppet1 object {puppet(pAngle[0][0],pAngle[0][1],pAngle[0][2],pAngle[0][3],pAngle[0][4],pAngle[0][5]) translate (1.85+0.15+0.5)*y scale 0.07 rotate -90*y translate puppet1Pos } //puppet3 object {puppet(pAngle[2][0],pAngle[2][1],pAngle[2][2],pAngle[2][3],pAngle[2][4],pAngle[2][5]) translate (1.85+0.15+0.5)*y scale 0.07 rotate -90*y translate puppet3Pos } 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> } } }