File talk:MovableBridge tilt.gif

来自Wikimedia Commons
跳转到导航 跳转到搜索

POVRay source file[编辑]

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