File talk:MovableBridge curl.gif

出典:ウィキメディア・コモンズ (Wikimedia Commons)
ナビゲーションに移動 検索に移動

POVRay source file[編集]

To render the scene file below, two include files (vehicles.inc and puppet.inc) are required.

//movable bridge -- 7:curling 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, 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 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-1.8*clock*(15/1.8);
            #declare walk = sin( (clock-0.2)*2*pi*8);
            #declare pAngle = array[6] {15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk};
        #break
    #range (0.2, 0.55)
        #declare puppetPos = 4;
        #declare pAngle = array[6] {min(60, max(-50, atan2( (clock -0.35)*85,4)/pi*180 ) ),0,0,0,0,0}
        #break
    #range (0.55, 0.6)
        #declare puppetPos = 4;
        #declare pAngle = array[6] {0,0,0,0,0,0}
        #break
    #range (0.6, 1)
        #declare puppetPos = 4-2.5*(clock-0.6)*10;
            #declare walk = sin( (clock-0.6)*2*pi*8);
            #declare pAngle = array[6] {15*walk, -10*walk, 30*walk,-30*walk,-60*walk,60*walk};
        #break
    #default
        #declare puppetPos = 9;
        #declare pAngle = array[6] {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}
}

//movable parts

#declare bridgePart =
union{
    box{<0.94,-0.05,-1>, <0, 0.15, 1>}

    prism{linear_sweep
        linear_spline
        0,0.05,
        9,
        <0, 0>,
        <0.7*sin( (180-360/8)/2/180*pi), 0.7*cos( (180-360/8)/2/180*pi)>,
        <0.7*sin( (180-360/8)/2/180*pi), 1-0.7*cos( (180-360/8)/2/180*pi)>,
        <0,1>,
        <0, 1-0.2>,
        <0.5*sin( (180-360/8)/2/180*pi), 1-0.2-0.5*cos( (180-360/8)/2/180*pi)>,
        <0.5*sin( (180-360/8)/2/180*pi), 0.2+0.5*cos( (180-360/8)/2/180*pi)>,
        <0, 0.2>,
        <0,0>
        rotate <-90,0,90>
        translate 0.5*x
        scale <0.8,0.8,1>
        translate <0.47,0.15,-0.85>
    }

    prism{linear_sweep
        linear_spline
        0,-0.05,
        9,
        <0, 0>,
        <0.7*sin( (180-360/8)/2/180*pi), 0.7*cos( (180-360/8)/2/180*pi)>,
        <0.7*sin( (180-360/8)/2/180*pi), 1-0.7*cos( (180-360/8)/2/180*pi)>,
        <0,1>,
        <0, 1-0.2>,
        <0.5*sin( (180-360/8)/2/180*pi), 1-0.2-0.5*cos( (180-360/8)/2/180*pi)>,
        <0.5*sin( (180-360/8)/2/180*pi), 0.2+0.5*cos( (180-360/8)/2/180*pi)>,
        <0, 0.2>,
        <0,0>
        rotate <-90,0,90>
        translate 0.5*x
        scale <0.8,0.8,1>
        translate <0.47,0.15,0.85>
    }
}
    

union{
    union{
        union{
            union{
                union{
                    union{
                        union{
                            object{bridgePart rotate  (352/8)*counter*z  translate 1*x}
                            object{bridgePart}
                            rotate  (352/8)*counter*z
                            translate 1*x
                        }
                    object{bridgePart}
                    rotate  (352/8)*counter*z
                    translate 1*x
                    }
                    object{bridgePart}
                    rotate (352/8)*counter*z
                    translate 1*x
                }
                object{bridgePart}
                rotate (352/8)*counter*z
                translate 1*x
            }
            object{bridgePart}
            rotate (352/8)*counter*z
            translate 1*x
        }
        object{bridgePart}
        rotate (352/8)*counter*z
        translate 1*x
    }
    object{bridgePart}
    scale <7/8,1,1>
    translate -4*x
    texture{bridgeTexture}    
}



//static parts and road
union{
    box{<-2.25,-0.05,1.1>,<-999,-0.4,-1.1>}
    box{<-2.25,-0.05,1.1>,<-9,0.20,1.02>}
    box{<-2.25,-0.05,-1.1>,<-9,0.20,-1.02>}

    box{<2.25,-0.05,1.1>,<999,-0.4,-1.1>}
    box{<2.25,-0.05,1.1>,<9,0.20,1.02>}

    box{<3.05,0.15,1.1>,<999,-0.4,-1.1>}
    box{<-4.05,0.15,1.1>,<-999,-0.4,-1.1>}

    box{<2.25,-0.05,-1.1>,<9,0.20,-1.02>}


    cylinder{-0.2*y,-2*y,0.1 translate <2.5,0,0.8> }
    cylinder{-0.2*y,-2*y,0.1 translate <2.5,0,-0.8> }
    cylinder{-0.2*y,-2*y,0.1 translate <-2.5,0,0.8> }
    cylinder{-0.2*y,-2*y,0.1 translate <-2.5,0,-0.8> }

    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*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*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
    translate <0,0,shipPos>
}

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 -90*y
    translate <puppetPos,0,0>
}

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