forked from: [Papervision3D]BitmapMaterialの練習

by siouxcitizen forked from [Papervision3D]BitmapMaterialの練習 (diff: 14)
♥0 | Line 51 | Modified 2010-07-29 18:12:21 | MIT License | (replaced)
play

Related images

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/6JU7
 */

// forked from Nicolas's [Papervision3D]BitmapMaterialの練習
// forked from Nicolas's [Papervision3D]頂点制御の練習
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.display.Loader;
    import flash.system.LoaderContext;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.display.Bitmap;
    import flash.display.BitmapData; 
    import org.papervision3d.core.geom.*;
    import org.papervision3d.core.geom.renderables.*;
    import org.papervision3d.view.*;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.materials.*;
    public class FlashTest extends BasicView {
        private var plane:Plane;
        private var time:int = 0;
        private var h1:Number = 0;
        private var h2:Number = 0;
        private var bmp:Bitmap;
        private var bmd:BitmapData;
        private var loader:Loader; 
        public function FlashTest() {
                var url:String = "http://assets.wonderfl.net/images/related_images/1/19/19c0/19c0967e02f10579880511d29d725a4a9f983f1a"
                var urlReq:URLRequest = new URLRequest(url);
                loader = new Loader();
                loader.load(urlReq, new LoaderContext(true)); 
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
                
                          
            
        }
        
        private function onComplete(e:Event):void { 
            bmd = new BitmapData(loader.width, loader.height, true, 0x000000);
            bmd.draw(loader);
            //bmp = addChild(new Bitmap(bmd)) as Bitmap;
            
            var material:BitmapMaterial = new BitmapMaterial(bmd, true);
            //平面を作る。引数は(material, width, height, segmentsW, segmentsH)
            plane = new Plane(material, 500, 500, 1, 1);
            plane.rotationX = 90;
            //sceneに追加
            scene.addChild(plane);
            //カメラ設定
            camera.y = 800;
            camera.zoom = 80;
            //レンダリング開始
            startRendering();
            //毎フレーム頂点をいじるよ
            addEventListener(Event.ENTER_FRAME, loop);
            
        }
        
        private function loop(e:Event):void{
                //左の高さh1と右の高さh2を計算
            h1 = 200 * Math.sin(time * Math.PI / 180);
            h2 = 200 * Math.sin((time + 90) * Math.PI / 180);//位相が90度ずれている
            var v:Array = plane.geometry.vertices;//3Dオブジェクトの各頂点が含まれる配列
            //segmentがW,Hともに1ならば、[0]と[1]が左側、[2]と[3]が右側の頂点を表す
            v[0].z = v[1].z = h1;
            v[2].z = v[3].z = h2;
            
            time += 2;
        }
    }
}

Forked