forked from: forked from: flash on 2013-2-18
forked from forked from: flash on 2013-2-18 (diff: 55)
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);
}
}