Forked from: clockmaker's [PV3D] Field of Blur diff:124 003:forked from: [PV3D] Field of Blur umhr forked:4favorite:5lines:81license : MIT License modified : 2010-01-26 19:29:30 Embed Tweet package { import flash.display.Sprite; import flash.events.Event; import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.ColorTransform; import flash.geom.Rectangle; [SWF(backgroundColor="0x000000")] public class Main extends Sprite{ private var _red:Sample5; private var _blue:Sample5; private var _bitmapData:BitmapData; public function Main():void { _red = new Sample5(-50); this.addChild(_red); _blue = new Sample5(50); this.addChild(_blue); _bitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000); addChild(new Bitmap(_bitmapData)) addEventListener(Event.ENTER_FRAME, loop); } private function loop(e:Event):void { _red.loop(null); _blue.loop(null); _bitmapData.lock(); _bitmapData.fillRect(new Rectangle(0,0,stage.stageWidth,stage.stageHeight), 0x000000); _bitmapData.draw(_red, null,new ColorTransform(1,0,0,1,0,0,0,0)); _bitmapData.draw(_blue, null,new ColorTransform(0,1,1,1,0,0,0,0), "add"); _bitmapData.unlock(); } } } /** * Papervision3Dで被写界深度 * 参照: http://clockmaker.jp/blog/2008/07/pv3d_gw_blur/ */ import flash.display.*; import flash.events.*; import flash.filters.*; import org.papervision3d.view.*; import org.papervision3d.materials.*; import org.papervision3d.objects.*; import org.papervision3d.objects.primitives.* [SWF(width = "465", height = "465", frameRate = "60", backgroundColor = "#000000")] class Sample5 extends BasicView { // const vars static private const OBJ_LENGTH :int = 20; static private const CIRCLE_RANGE :int = 500; // 3d vars private var list :Array = [] private var wrap :DisplayObject3D; /** * Constructor */ public function Sample5(dX:Number) { //camera camera.x = -dX; camera.y = 200; camera.z = 1000; camera.rotationX = 5; // wrap wrap = new DisplayObject3D(); scene.addChild(wrap); wrap.x = -dX / 3; for (var i:int = 0; i < OBJ_LENGTH; i++) { var rot:Number = 360 * i / OBJ_LENGTH ; var m:ColorMaterial = new ColorMaterial(0xFFFFFF); m.doubleSided = true; var o:Plane = new Plane(m, 100, 100); o.x = CIRCLE_RANGE * Math.sin(rot * Math.PI / 180); o.y = 0; o.z = CIRCLE_RANGE * Math.cos(rot * Math.PI / 180); o.rotationY = rot; o.useOwnContainer = true; //ココ重要 // 配列に追加 & wrapの子供にする list.push(wrap.addChild(o)); } //addEventListener(Event.ENTER_FRAME, loop); startRendering(); } // loop public function loop(event:Event):void { wrap.yaw(-1); // 被写界深度 for (var i:int = 0; i < list.length; i++) { var o:DisplayObject3D = list[i] as DisplayObject3D; var blur:Number = Math.ceil((CIRCLE_RANGE - o.sceneZ) / 50); o.filters = [new BlurFilter(blur, blur, 2)]; } } } Code Fullscreen Preview Fullscreen kleinschmidt.. jojo kitsionchen SetzerWolf clockmaker : wonderfl本刊行記念イベント Anaglyph wonderfl本刊行記念イベント frameRate sceneZ useOwnContainer doubleSided rotationX rotationY filters draw Math.ceil unlock lock fillRect stageWidth width addEventListener height stageHeight Math.PI Rectangle BlurFilter sort new page view favorite forked pv741 forked from: 003:forked from: .. hacker_dgd_jz8f forked:4 favorite:2lines:81 (diff:2) tag: blur pv3d pv499 forked from: 003:forked from: .. hacker_dgd_jz8f forked:1 favorite:2lines:81 (diff:2) pv234 forked from: 003:forked from: .. hacker_oes_zsqe forked:0 favorite:3lines:81 (diff:5) pv4261 003b:アップルグリフ umhr forked:11 favorite:33lines:195 (diff:261) tag: 3D Anaglyph Bitmap BitmapData ColorTransform beautifl bytearray filter photo pv3d umhr_demo wonderfl本刊行記念イベント