できるだけ単純にAlternativa3D使用実験

by siouxcitizen
あまりよく理解できてないAlternativa3Dなので、
できるだけ単純に動かせないか実験
♥0 | Line 55 | Modified 2010-11-05 02:17:42 | MIT License
play

ActionScript3 source code

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

//あまりよく理解できてないAlternativa3Dなので、
//[Alternativa3D] Basic Template
//http://wonderfl.net/c/4XjX
//と
//Alternativa3D demo
//http://wonderfl.net/c/a0T7
//を参考にさせてもらって、できるだけ単純にAlternativa3Dを動かせないか実験。
//onResizeって必ず必要なんかな? ←このへんコピペしただけなのででよくわかってません。。。
package {
    import alternativ5.engine3d.controllers.CameraController;
    import alternativ5.engine3d.core.Camera3D;
    import alternativ5.types.Point3D;
    import alternativ5.engine3d.core.Object3D;
    import alternativ5.engine3d.core.Scene3D;
    import alternativ5.engine3d.display.View;
    import alternativ5.engine3d.materials.DevMaterial;
    import alternativ5.engine3d.primitives.Plane;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Matrix;
    [SWF(width = 465, height = 465, frameRate = 60)]
    public class Main extends Sprite {
        private var scene:Scene3D;
        private var view:View;
        private var camera:Camera3D;
        private var cameraController:CameraController;
        private var plane:Plane;
        public function Main():void {
            scene = new Scene3D();
            scene.root = new Object3D();

            // カメラをセットします
            camera = new Camera3D();
            camera.z = -1000;
            scene.root.addChild(camera);
        
            // カメラコントローラー
            cameraController = new CameraController(this);
            cameraController.camera = camera;
        
            // ビューをセットします
            view = new View();
            view.camera = camera;
            addChild(view);

            // マテリアルを作成します
            var material:DevMaterial = new DevMaterial();
            
            // プリミティブを作成します
            plane = new Plane(600, 600);
            plane.cloneMaterialToAllSurfaces(material);
            
            // 3Dシーンのルートに追加します
            scene.root.addChild(plane);

            stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
            stage.addEventListener(Event.RESIZE, onResize);
            onResize(null);
        }

        private function onEnterFrame(e:Event):void {
            // Planeオブジェクトを回転させます (角度はラジアン)
            plane.rotationX = mouseX * Math.PI / 180;
            plane.rotationY = mouseY * Math.PI / 180;

            // カメラの座標を中央に向かせる
            cameraController.lookAt(new Point3D());

            scene.calculate();
        }

        private function onResize(event:Event = null):void {
            view.width = stage.stageWidth;
            view.height = stage.stageHeight;
            
            // BackGround Color
            var bgMatrix:Matrix = new Matrix();
            bgMatrix.rotate(90 * Math.PI / 180);
            graphics.clear()
            graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix);
            graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
        }

    }
}