ホーム > Flash (ActionScript) > [AS3D #1] 自作 3D ライブラリを Snippets にコミットしました

[AS3D #1] 自作 3D ライブラリを Snippets にコミットしました

Papervision3D や Sandy など優秀な 3D ライブラリがある中、自学のため 3D ライブラリを作っているのですが、ある程度の形が出来たので Snippets にコミットしてみました。Snippets の AS3D からチェックアウトして試していただけるとありがたいです。

デモはこちら

まだまだ上手く動いてないところや未実装な部分も多く、実用的ではありませんが・・・。

コードは下記の通り。

package
{
    import as3d.camera.Camera3D;
    import as3d.display.*;
    import as3d.display.primitive.*;
    import as3d.geom.*;
    import flash.display.*;
    import flash.events.*;
    import mx.core.BitmapAsset;

    [SWF(width=300, height=300, backgroundColor=0x000000, frameRate=30)]
    public class Sample01 extends Sprite
    {
        [Embed(source="images/texture01.gif")]
        private var Texture:Class;

        public function Sample01():void
        {
            var viewPort:ViewPort3D =
            new ViewPort3D(0, 0, stage.stageWidth, stage.stageHeight);
            var scene:Scene3D = Scene3D(addChild(new Scene3D(viewPort)));
            scene.startRendering();

            var plane:Plane = Plane(scene.addChild3D(new Plane()));

            var cone:Cone = Cone(scene.addChild3D(new Cone(100, 50)));
            cone.shadingType = ShadingType.FLAT;

            var torus:Torus = Torus(scene.addChild3D(new Torus(20, 40)));
            torus.shadingType = ShadingType.GOURAUD;
            torus.texture = BitmapAsset(new Texture()).bitmapData;

            var camera:Camera3D = scene.camera;
            camera.lookAt = torus.position;

            var dld:Vector3D = scene.directionalLight.direction;

            var angle:Number = 0;

            addEventListener(Event.ENTER_FRAME, function ():void
            {
                torus.rotationX += 2;
                torus.rotationZ += 4;

                torus.x = Math.cos(angle    ) * 200;
                torus.y = Math.sin(angle / 2) * 100 + 150;
                torus.z = Math.sin(angle    ) * 100;

                camera.x = Math.cos(-angle / 2) * 400;
                camera.y = Math.sin(-angle / 4) * 200 + 300;
                camera.z = Math.sin(-angle / 2) * 200;

                dld.x = Math.cos(angle);
                dld.z = Math.sin(angle);

                angle += 0.05;
            });
        }
    }
}
カテゴリー: Flash (ActionScript) タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。