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