東京てら子11 Alternativa3Dについて その5

by narutohyper
東京てら子11で使用したサンプルその5

6面にテクスチャーを張り分けてみよう!

http://marubayashi.net/alternativa3d7/tokyoteraco11/index.html

2011/01/12 7.5から7.6仕様に変更
♥0 | Line 98 | Modified 2012-10-23 16:11:41 | MIT License
play

ActionScript3 source code

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

package
{
    import alternativ7.engine3d.materials.TextureMaterial;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import alternativ7.engine3d.containers.ConflictContainer
    import alternativ7.engine3d.core.View
    import alternativ7.engine3d.core.Camera3D
    import alternativ7.engine3d.controllers.SimpleObjectController
    import alternativ7.engine3d.primitives.Box
    import alternativ7.engine3d.materials.FillMaterial
    
    
    /**
     * TokyoTeraco11 その5
     * 6面にテクスチャーを張り分けてみよう!
     *
     * @author narutohyper
     */
    [SWF(backgroundColor="#000000", frameRate="60")]
    public class Main extends Sprite
    {
        
        public function Main():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            
            //ルートオブジェクト(Root Object)
            var container:ConflictContainer = new ConflictContainer();

            //ビューを作る
            var view:View = new View(stage.stageWidth, stage.stageHeight);
            addChild(view);

            //カメラを作る
            var camera:Camera3D = new Camera3D();

            //カメラとビューを関連付ける
            camera.view = view;

            //カメラを撮影する3D空間に配置する
            container.addChild(camera);

            //カメラの位置を調整
            camera.x = 0;
            camera.y = -500;
            camera.z = 0;

            //カメラをコントローラ
            var cameraController:SimpleObjectController = new SimpleObjectController(stage, camera, 10);
            cameraController.mouseSensitivity = 0
            cameraController.unbindAll()
            cameraController.lookAtXYZ(0, 0, 0)
            
            
            //BitmapDataを作成
            var bmdArry:Vector.<BitmapData> = new Vector.<BitmapData>(6)
            var matArry:Vector.<TextureMaterial> = new Vector.<TextureMaterial>(6)
            for (var i:int = 0; i < 6; i++)
            {
                bmdArry[i] = new BitmapData(300, 300, false, 0xFFFFFFFF);
                matArry[i] = new TextureMaterial(bmdArry[i])
            }
            
            var canvas:Sprite = new Sprite()

            //丸1
            canvas.graphics.beginFill(0xFF0000);
            canvas.graphics.drawCircle(150, 150, 50)
            
            bmdArry[0].draw(canvas);
            
            //丸2
            canvas.graphics.clear();
            canvas.graphics.beginFill(0x000000);
            canvas.graphics.drawCircle(80, 80, 30)
            canvas.graphics.drawCircle(220, 220, 30)
            bmdArry[1].draw(canvas);

            //丸3
            canvas.graphics.clear();
            canvas.graphics.beginFill(0x000000);
            canvas.graphics.drawCircle(70, 70, 30)
            canvas.graphics.drawCircle(150, 150, 30)
            canvas.graphics.drawCircle(230, 230, 30)
            bmdArry[2].draw(canvas);
            
            //丸4
            canvas.graphics.clear();
            canvas.graphics.beginFill(0x000000);
            canvas.graphics.drawCircle(70, 70, 30)
            canvas.graphics.drawCircle(230, 70, 30)
            canvas.graphics.drawCircle(70, 230, 30)
            canvas.graphics.drawCircle(230, 230, 30)
            bmdArry[3].draw(canvas);
            
            //丸5
            canvas.graphics.clear();
            canvas.graphics.beginFill(0x000000);
            canvas.graphics.drawCircle(70, 70, 30)
            canvas.graphics.drawCircle(70, 230, 30)
            canvas.graphics.drawCircle(150, 150, 30)
            canvas.graphics.drawCircle(230, 70, 30)
            canvas.graphics.drawCircle(230, 230, 30)
            bmdArry[4].draw(canvas);
            
            //丸6
            canvas.graphics.clear();
            canvas.graphics.beginFill(0x000000);
            canvas.graphics.drawCircle(80, 70, 30)
            canvas.graphics.drawCircle(80, 150, 30)
            canvas.graphics.drawCircle(80, 230, 30)
            canvas.graphics.drawCircle(210, 70, 30)
            canvas.graphics.drawCircle(210, 150, 30)
            canvas.graphics.drawCircle(210, 230, 30)
            bmdArry[5].draw(canvas);
            
            
            //オブジェクトを作成して3D空間(コンテナ)に追加
            var box:Box = new Box(100, 100, 100, 1, 1, 1, false,false,matArry[0],matArry[5],matArry[1],matArry[4],matArry[2],matArry[3])
            container.addChild(box)


            //オブジェクトコントローラを追加
            var objectController:SimpleObjectController = new SimpleObjectController(stage, box, 10);
            objectController.mouseSensitivity = 1
            objectController.unbindAll()

            addEventListener(Event.ENTER_FRAME, onEnterFrame)

            var RADIAN:Number = Math.PI/180

            function onEnterFrame(e:Event):void
            {
                //box.rotationY += RADIAN
                //カメラコントローラの操作をコントロールオブジェクトに反映
                cameraController.update();
                
                //オブジェクトコントローラの操作をコントロールオブジェクトに反映
                objectController.update();
                
                //レンダリング
                camera.render();
            }

            
        }
        

        
    }
    
}