forked from: forked from: flash on 2013-2-18

by ohisama forked from forked from: flash on 2013-2-18 (diff: 55)
♥0 | Line 88 | Modified 2013-02-19 07:34:49 | MIT License
play

ActionScript3 source code

/**
 * Copyright ohisama ( http://wonderfl.net/user/ohisama )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/iWkk
 */

package  
{
    import org.papervision3d.view.BasicView;
    import org.papervision3d.core.animation.channel.Channel3D;
    import org.papervision3d.core.proto.MaterialObject3D;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.core.animation.channel.Channel3D;
    import org.papervision3d.core.animation.channel.transform.MatrixChannel3D;
    import org.papervision3d.core.animation.curve.Curve3D;
    import org.papervision3d.core.animation.key.LinearCurveKey3D;
    import org.papervision3d.core.animation.channel.transform.TranslationChannel3D;
    import org.papervision3d.lights.*;
    import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
    public class test0 extends BasicView
    {
        public function test0() 
        {
            var light : PointLight3D;
            light = new PointLight3D();
            light.x = -200;
            light.y = -200;
            light.z = -200;
            var obj : Tri = new Tri(new FlatShadeMaterial(light, 0xffff99, 0xffbb00));
            var chTr : TranslationChannel3D = new TranslationChannel3D(null);
            var cvTrX : Curve3D = new Curve3D();
            var cvTrY : Curve3D = new Curve3D();
            var cvTrZ : Curve3D = new Curve3D();
            cvTrX.addKey(new LinearCurveKey3D(0, -50));
            cvTrX.addKey(new LinearCurveKey3D(1, 50));
            //cvTrX.addKey(new LinearCurveKey3D(2, -50));
            cvTrY.addKey(new LinearCurveKey3D(0, 0));
            //cvTrY.addKey(new LinearCurveKey3D(0.5, 50));
            //cvTrY.addKey(new LinearCurveKey3D(1, 0));
            cvTrZ.addKey(new LinearCurveKey3D(0, 0));
            chTr.addCurve(cvTrX);
            chTr.addCurve(cvTrY);
            chTr.addCurve(cvTrZ);
            obj.animation.addChannel(chTr);
            scene.addChild(obj);
            camera.x = 0;
            camera.y = 200;
            camera.z = -400;
            startRendering();
            obj.animation.play();
        }
    }
}
import org.papervision3d.core.controller.AnimationController;
import org.papervision3d.core.animation.channel.transform.TranslationChannel3D;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.core.render.data.RenderSessionData;
import org.papervision3d.core.geom.TriangleMesh3D;
import org.papervision3d.core.geom.renderables.Triangle3D;
import org.papervision3d.core.geom.renderables.Vertex3D;
import org.papervision3d.core.proto.MaterialObject3D;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.core.math.NumberUV;
class Tri extends TriangleMesh3D
{
    public var animation : AnimationController = new AnimationController();
    public function Tri(tMaterial : MaterialObject3D = null)
    {
        super(tMaterial, new Array(), new Array(), null);
        var v0 : Vertex3D = new Vertex3D(-100, -100,  100);
        var v1 : Vertex3D = new Vertex3D( 100, -100,  100);
        var v2 : Vertex3D = new Vertex3D(   0,  100,    0);
        var v3 : Vertex3D = new Vertex3D(-100, -100, -100);
        var v4 : Vertex3D = new Vertex3D( 100, -100, -100);
        this.geometry.vertices.push(v0);
        this.geometry.vertices.push(v1);
        this.geometry.vertices.push(v2);
        this.geometry.vertices.push(v3);
        this.geometry.vertices.push(v4);
        var uvA : NumberUV = new NumberUV(0, 0);
        var uvC : NumberUV = new NumberUV(1, 0);
        var uvB : NumberUV = new NumberUV(0, 1);
        this.geometry.faces.push(new Triangle3D(this, new Array(v2, v1, v0), null, new Array(uvA, uvC, uvB)));
        this.geometry.faces.push(new Triangle3D(this, new Array(v2, v3, v4), null, new Array(uvA, uvC, uvB)));
        this.geometry.faces.push(new Triangle3D(this, new Array(v2, v0, v3), null, new Array(uvA, uvC, uvB)));
        this.geometry.faces.push(new Triangle3D(this, new Array(v2, v4, v1), null, new Array(uvA, uvC, uvB)));
        this.geometry.faces.push(new Triangle3D(this, new Array(v1, v3, v0), null, new Array(uvA, uvC, uvB)));
        this.geometry.faces.push(new Triangle3D(this, new Array(v1, v4, v3), null, new Array(uvA, uvC, uvB)));
        this.geometry.ready = true;
    }
    public override function project(parent : DisplayObject3D, renderSessionData : RenderSessionData) : Number
    { 
        animation.update();
        this.transform = TranslationChannel3D(animation.channels[0]).transform;
        return super.project(parent, renderSessionData);
    }
}