※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


FORKED
  1. // forked from paq's [Stardust] Pixel3D with a brilliant radiance
  2. package 
  3. {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.events.Event;
  9.     import flash.events.MouseEvent;
  10.     import flash.filters.BlurFilter;
  11.     import flash.geom.Matrix;
  12.     import flash.geom.Point;
  13.     import frocessing.color.FColor;
  14.     import idv.cjcat.stardust.common.clocks.SteadyClock;
  15.     import idv.cjcat.stardust.common.emitters.Emitter;
  16.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObject3DRenderer;
  17.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObjectRenderer;
  18.     import org.papervision3d.core.effects.BitmapLayerEffect;
  19.     import org.papervision3d.core.effects.view.ReflectionView;
  20.     import org.papervision3d.core.geom.Pixels;
  21.     import org.papervision3d.core.geom.renderables.Pixel3D;
  22.     import org.papervision3d.core.math.Number3D;
  23.     import org.papervision3d.materials.WireframeMaterial;
  24.     import org.papervision3d.objects.DisplayObject3D;
  25.     import org.papervision3d.objects.primitives.Plane;
  26.     import org.papervision3d.objects.primitives.Sphere;
  27.     import org.papervision3d.view.BasicView;
  28.     import org.papervision3d.view.layer.BitmapEffectLayer;
  29.     
  30.     /**
  31.      * ...
  32.      * @author paq89
  33.      */
  34.     [SWF(width = 465, height = 465, backgroundColor = 0xFFFFFF, frameRate = 60)]
  35.     public class Main extends BasicView
  36.     {
  37.         private const ZERO_POINT:Point = new Point(00);
  38.         private const BLUR:BlurFilter = new BlurFilter(441);
  39.         
  40.         private var _emitter:Pixel3DEmitter;
  41.         private var _pixels:Pixels;
  42.         private var _canvas:BitmapData;
  43.         private var _matrix:Matrix;
  44.         private var _rotation:Number = 0;
  45.         
  46.         public function Main():void 
  47.         {
  48.             if (stage) init();
  49.             else addEventListener(Event.ADDED_TO_STAGE, init);
  50.         }
  51.         
  52.         private function init(e:Event = null):void 
  53.         {
  54.             removeEventListener(Event.ADDED_TO_STAGE, init);
  55.             
  56.             // 背景色を設定
  57.             opaqueBackground = 0x000000;
  58.             
  59.             // レンダリング開始
  60.             startRendering();
  61.             
  62.             // キラキラエフェクト用BitmapEffectLayer
  63.             var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 465465true0"clear_pre"true);
  64.             layer.clearBeforeRender = true;
  65.             viewport.containerSprite.addLayer(layer);
  66.             
  67.             // Pixels
  68.             _pixels = new Pixels(layer);
  69.             scene.addChild(_pixels);
  70.             
  71.             // エミッター
  72.             _emitter = new Pixel3DEmitter(new SteadyClock(10));
  73.             
  74.             // レンダラー
  75.             var renderer:PV3DPixelsRenderer = new PV3DPixelsRenderer(_pixels);
  76.             renderer.addEmitter(_emitter);
  77.             
  78.             // キラキラエフェクト
  79.             _canvas=new BitmapData(465 / 4465 / 4false, 0x000000);
  80.             var bmp:Bitmap=new Bitmap(_canvas, "never"true);
  81.             bmp.scaleX=bmp.scaleY=4;
  82.             bmp.smoothing=true;
  83.             bmp.blendMode=BlendMode.ADD;
  84.             addChild(bmp);
  85.             _matrix = new Matrix(0.25000.25);
  86.             
  87.             // イベントリスナー
  88.             addEventListener(Event.ENTER_FRAME, loop);
  89.         }
  90.         
  91.         private function loop(e:Event):void 
  92.         {
  93.             // キラキラ
  94.             //_canvas.fillRect(_canvas.rect, 0x000000);
  95.             _canvas.applyFilter(_canvas, _canvas.rect, ZERO_POINT, BLUR);
  96.             _canvas.draw(viewport, _matrix);
  97.             
  98.             // パーティクルの発生元をくるくる
  99.             _rotation += 3;
  100.             _emitter.pointA.x = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  101.             _emitter.pointA.y = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  102.             _emitter.pointB.z = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  103.             _emitter.pointB.y = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  104.             _emitter.sphereCap.rotationX = 90;
  105.             _emitter.sphereCap.rotationZ = -_rotation - 90;
  106.             _pixels.rotationX += 0.2;
  107.             _pixels.rotationY += 1;
  108.             
  109.             // エミッター更新
  110.             _emitter.step();
  111.         }
  112.         
  113.     }
  114.     
  115. }
  116. import frocessing.color.ColorHSV;
  117. import idv.cjcat.stardust.common.actions.Age;
  118. import idv.cjcat.stardust.common.actions.DeathLife;
  119. import idv.cjcat.stardust.common.clocks.Clock;
  120. import idv.cjcat.stardust.common.events.EmitterEvent;
  121. import idv.cjcat.stardust.common.initializers.CompositeInitializer;
  122. import idv.cjcat.stardust.common.initializers.SwitchInitializer;
  123. import idv.cjcat.stardust.common.particles.ParticleIterator
  124. import idv.cjcat.stardust.common.initializers.Life;
  125. import idv.cjcat.stardust.common.math.UniformRandom;
  126. import idv.cjcat.stardust.common.renderers.Renderer;
  127. import idv.cjcat.stardust.threeD.actions.Accelerate3D;
  128. import idv.cjcat.stardust.threeD.actions.Move3D;
  129. import idv.cjcat.stardust.threeD.emitters.Emitter3D;
  130. import idv.cjcat.stardust.threeD.initializers.DisplayObjectClass3D;
  131. import idv.cjcat.stardust.threeD.initializers.Position3D;
  132. import idv.cjcat.stardust.threeD.initializers.Velocity3D;
  133. import idv.cjcat.stardust.threeD.particles.Particle3D;
  134. import idv.cjcat.stardust.threeD.zones.SinglePoint3D;
  135. import idv.cjcat.stardust.threeD.zones.SphereCap;
  136. import org.papervision3d.core.geom.Pixels;
  137. import org.papervision3d.core.geom.renderables.Pixel3D;
  138. /**
  139.  * エミッター
  140.  * @author paq89
  141.  */
  142. class Pixel3DEmitter extends Emitter3D
  143. {
  144.     public var pointA:SinglePoint3D = new SinglePoint3D();
  145.     public var pointB:SinglePoint3D = new SinglePoint3D();
  146.     public var sphereCap:SphereCap = new SphereCap(0001040);
  147.     
  148.     public function Pixel3DEmitter(clock:Clock)
  149.     {
  150.         super(clock);
  151.         
  152.         var compInitA:CompositeInitializer = new CompositeInitializer();
  153.         compInitA.addInitializer(new Position3D(pointA));
  154.         compInitA.addInitializer(new DisplayObjectClass3D(PixelParticleA));
  155.         var compInitB:CompositeInitializer = new CompositeInitializer();
  156.         compInitB.addInitializer(new Position3D(pointB));
  157.         compInitB.addInitializer(new DisplayObjectClass3D(PixelParticleB));
  158.         var switchInit:SwitchInitializer = new SwitchInitializer([compInitA, compInitB],[1,1]);
  159.         addInitializer(switchInit);
  160.         addInitializer(new Life(new UniformRandom(900)));
  161.         addInitializer(new Velocity3D(sphereCap));
  162.         
  163.         addAction(new Move3D());
  164.         addAction(new Age());
  165.         addAction(new DeathLife());
  166.         addAction(new Accelerate3D(0.05));
  167.     }
  168. }
  169. /**
  170.  * パーティクル
  171.  * @author paq89
  172.  */
  173. class PixelParticleA extends Pixel3D
  174. {
  175.     private static var hsv:ColorHSV = new ColorHSV(010.7);
  176.     
  177.     public function PixelParticleA()
  178.     {
  179.         hsv.h += 0.1;
  180.         super(hsv.value32);
  181.     }
  182. }
  183. class PixelParticleB extends Pixel3D
  184. {
  185.     private static var hsv:ColorHSV = new ColorHSV(7010.7);
  186.     
  187.     public function PixelParticleB()
  188.     {
  189.         hsv.h += 0.1;
  190.         super(hsv.value32);
  191.     }
  192. }
  193. /**
  194.  * Pixel3D専用レンダラー
  195.  * @author paq89
  196.  */
  197. class PV3DPixelsRenderer extends Renderer
  198. {
  199.     private var container:Pixels;
  200.     
  201.     public function PV3DPixelsRenderer(container:Pixels = null)
  202.     {
  203.         this.container = container;
  204.     }
  205.     
  206.     override protected function particlesAdded(e:EmitterEvent):void
  207.     {
  208.         if (!container) return;
  209.         var particle:Particle3D;
  210.         var iter:ParticleIterator = e.particles.getIterator();
  211.         while (particle = iter.particle as Particle3D)
  212.         {
  213.             var pixel:Pixel3D = particle.target;
  214.             container.addPixel3D(pixel);
  215.             particle.dictionary[PV3DPixelsRenderer] = container;
  216.             
  217.             iter.next();
  218.         }
  219.     }
  220.     
  221.     override protected function particlesRemoved(e:EmitterEvent):void
  222.     {
  223.         var particle:Particle3D;
  224.         var iter:ParticleIterator = e.particles.getIterator();
  225.         while (particle = iter.particle as Particle3D)
  226.         {
  227.             var pixel:Pixel3D = particle.target;
  228.             var container:Pixels = particle.dictionary[PV3DPixelsRenderer] as Pixels;
  229.             
  230.             container.removePixel3D(pixel);
  231.             
  232.             iter.next();
  233.         }
  234.     }
  235.     
  236.     override protected function render(e:EmitterEvent):void
  237.     {
  238.         var particle:Particle3D;
  239.         var iter:ParticleIterator = e.particles.getIterator();
  240.         while (particle = iter.particle as Particle3D)
  241.         {
  242.             var pixel:Pixel3D = particle.target;
  243.             
  244.             pixel.x = particle.x;
  245.             pixel.y = particle.y;
  246.             pixel.z = particle.z;
  247.             
  248.             iter.next();
  249.         }
  250.     }
  251. }
noswf
  1. // forked from paq's [Stardust] Pixel3D with a brilliant radiance
  2. package 
  3. {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.events.Event;
  9.     import flash.events.MouseEvent;
  10.     import flash.filters.BlurFilter;
  11.     import flash.geom.Matrix;
  12.     import flash.geom.Point;
  13.     import frocessing.color.FColor;
  14.     import idv.cjcat.stardust.common.clocks.SteadyClock;
  15.     import idv.cjcat.stardust.common.emitters.Emitter;
  16.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObject3DRenderer;
  17.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObjectRenderer;
  18.     import org.papervision3d.core.effects.BitmapLayerEffect;
  19.     import org.papervision3d.core.effects.view.ReflectionView;
  20.     import org.papervision3d.core.geom.Pixels;
  21.     import org.papervision3d.core.geom.renderables.Pixel3D;
  22.     import org.papervision3d.core.math.Number3D;
  23.     import org.papervision3d.materials.WireframeMaterial;
  24.     import org.papervision3d.objects.DisplayObject3D;
  25.     import org.papervision3d.objects.primitives.Plane;
  26.     import org.papervision3d.objects.primitives.Sphere;
  27.     import org.papervision3d.view.BasicView;
  28.     import org.papervision3d.view.layer.BitmapEffectLayer;
  29.     
  30.     /**
  31.      * ...
  32.      * @author paq89
  33.      */
  34.     [SWF(width = 465, height = 465, backgroundColor = 0xFFFFFF, frameRate = 60)]
  35.     public class Main extends BasicView
  36.     {
  37.         private const ZERO_POINT:Point = new Point(00);
  38.         private const BLUR:BlurFilter = new BlurFilter(441);
  39.         
  40.         private var _emitter:Pixel3DEmitter;
  41.         private var _pixels:Pixels;
  42.         private var _canvas:BitmapData;
  43.         private var _matrix:Matrix;
  44.         private var _rotation:Number = 0;
  45.         
  46.         public function Main():void 
  47.         {
  48.             if (stage) init();
  49.             else addEventListener(Event.ADDED_TO_STAGE, init);
  50.         }
  51.         
  52.         private function init(e:Event = null):void 
  53.         {
  54.             removeEventListener(Event.ADDED_TO_STAGE, init);
  55.             
  56.             // 背景色を設定
  57.             opaqueBackground = 0x000000;
  58.             
  59.             // レンダリング開始
  60.             startRendering();
  61.             
  62.             // キラキラエフェクト用BitmapEffectLayer
  63.             var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 465465true0"clear_pre"true);
  64.             layer.clearBeforeRender = true;
  65.             viewport.containerSprite.addLayer(layer);
  66.             
  67.             // Pixels
  68.             _pixels = new Pixels(layer);
  69.             scene.addChild(_pixels);
  70.             
  71.             // エミッター
  72.             _emitter = new Pixel3DEmitter(new SteadyClock(10));
  73.             
  74.             // レンダラー
  75.             var renderer:PV3DPixelsRenderer = new PV3DPixelsRenderer(_pixels);
  76.             renderer.addEmitter(_emitter);
  77.             
  78.             // キラキラエフェクト
  79.             _canvas=new BitmapData(465 / 4465 / 4false, 0x000000);
  80.             var bmp:Bitmap=new Bitmap(_canvas, "never"true);
  81.             bmp.scaleX=bmp.scaleY=4;
  82.             bmp.smoothing=true;
  83.             bmp.blendMode=BlendMode.ADD;
  84.             addChild(bmp);
  85.             _matrix = new Matrix(0.25000.25);
  86.             
  87.             // イベントリスナー
  88.             addEventListener(Event.ENTER_FRAME, loop);
  89.         }
  90.         
  91.         private function loop(e:Event):void 
  92.         {
  93.             // キラキラ
  94.             //_canvas.fillRect(_canvas.rect, 0x000000);
  95.             _canvas.applyFilter(_canvas, _canvas.rect, ZERO_POINT, BLUR);
  96.             _canvas.draw(viewport, _matrix);
  97.             
  98.             // パーティクルの発生元をくるくる
  99.             _rotation += 3;
  100.             _emitter.pointA.x = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  101.             _emitter.pointA.y = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  102.             _emitter.pointB.z = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  103.             _emitter.pointB.y = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  104.             _emitter.sphereCap.rotationX = 90;
  105.             _emitter.sphereCap.rotationZ = -_rotation - 90;
  106.             _pixels.rotationX += 0.2;
  107.             _pixels.rotationY += 1;
  108.             
  109.             // エミッター更新
  110.             _emitter.step();
  111.         }
  112.         
  113.     }
  114.     
  115. }
  116. import frocessing.color.ColorHSV;
  117. import idv.cjcat.stardust.common.actions.Age;
  118. import idv.cjcat.stardust.common.actions.DeathLife;
  119. import idv.cjcat.stardust.common.clocks.Clock;
  120. import idv.cjcat.stardust.common.events.EmitterEvent;
  121. import idv.cjcat.stardust.common.initializers.CompositeInitializer;
  122. import idv.cjcat.stardust.common.initializers.SwitchInitializer;
  123. import idv.cjcat.stardust.common.particles.ParticleIterator
  124. import idv.cjcat.stardust.common.initializers.Life;
  125. import idv.cjcat.stardust.common.math.UniformRandom;
  126. import idv.cjcat.stardust.common.renderers.Renderer;
  127. import idv.cjcat.stardust.threeD.actions.Accelerate3D;
  128. import idv.cjcat.stardust.threeD.actions.Move3D;
  129. import idv.cjcat.stardust.threeD.emitters.Emitter3D;
  130. import idv.cjcat.stardust.threeD.initializers.DisplayObjectClass3D;
  131. import idv.cjcat.stardust.threeD.initializers.Position3D;
  132. import idv.cjcat.stardust.threeD.initializers.Velocity3D;
  133. import idv.cjcat.stardust.threeD.particles.Particle3D;
  134. import idv.cjcat.stardust.threeD.zones.SinglePoint3D;
  135. import idv.cjcat.stardust.threeD.zones.SphereCap;
  136. import org.papervision3d.core.geom.Pixels;
  137. import org.papervision3d.core.geom.renderables.Pixel3D;
  138. /**
  139.  * エミッター
  140.  * @author paq89
  141.  */
  142. class Pixel3DEmitter extends Emitter3D
  143. {
  144.     public var pointA:SinglePoint3D = new SinglePoint3D();
  145.     public var pointB:SinglePoint3D = new SinglePoint3D();
  146.     public var sphereCap:SphereCap = new SphereCap(0001040);
  147.     
  148.     public function Pixel3DEmitter(clock:Clock)
  149.     {
  150.         super(clock);
  151.         
  152.         var compInitA:CompositeInitializer = new CompositeInitializer();
  153.         compInitA.addInitializer(new Position3D(pointA));
  154.         compInitA.addInitializer(new DisplayObjectClass3D(PixelParticleA));
  155.         var compInitB:CompositeInitializer = new CompositeInitializer();
  156.         compInitB.addInitializer(new Position3D(pointB));
  157.         compInitB.addInitializer(new DisplayObjectClass3D(PixelParticleB));
  158.         var switchInit:SwitchInitializer = new SwitchInitializer([compInitA, compInitB],[1,1]);
  159.         addInitializer(switchInit);
  160.         addInitializer(new Life(new UniformRandom(900)));
  161.         addInitializer(new Velocity3D(sphereCap));
  162.         
  163.         addAction(new Move3D());
  164.         addAction(new Age());
  165.         addAction(new DeathLife());
  166.         addAction(new Accelerate3D(0.05));
  167.     }
  168. }
  169. /**
  170.  * パーティクル
  171.  * @author paq89
  172.  */
  173. class PixelParticleA extends Pixel3D
  174. {
  175.     private static var hsv:ColorHSV = new ColorHSV(010.7);
  176.     
  177.     public function PixelParticleA()
  178.     {
  179.         hsv.h += 0.1;
  180.         super(hsv.value32);
  181.     }
  182. }
  183. class PixelParticleB extends Pixel3D
  184. {
  185.     private static var hsv:ColorHSV = new ColorHSV(7010.7);
  186.     
  187.     public function PixelParticleB()
  188.     {
  189.         hsv.h += 0.1;
  190.         super(hsv.value32);
  191.     }
  192. }
  193. /**
  194.  * Pixel3D専用レンダラー
  195.  * @author paq89
  196.  */
  197. class PV3DPixelsRenderer extends Renderer
  198. {
  199.     private var container:Pixels;
  200.     
  201.     public function PV3DPixelsRenderer(container:Pixels = null)
  202.     {
  203.         this.container = container;
  204.     }
  205.     
  206.     override protected function particlesAdded(e:EmitterEvent):void
  207.     {
  208.         if (!container) return;
  209.         var particle:Particle3D;
  210.         var iter:ParticleIterator = e.particles.getIterator();
  211.         while (particle = iter.particle as Particle3D)
  212.         {
  213.             var pixel:Pixel3D = particle.target;
  214.             container.addPixel3D(pixel);
  215.             particle.dictionary[PV3DPixelsRenderer] = container;
  216.             
  217.             iter.next();
  218.         }
  219.     }
  220.     
  221.     override protected function particlesRemoved(e:EmitterEvent):void
  222.     {
  223.         var particle:Particle3D;
  224.         var iter:ParticleIterator = e.particles.getIterator();
  225.         while (particle = iter.particle as Particle3D)
  226.         {
  227.             var pixel:Pixel3D = particle.target;
  228.             var container:Pixels = particle.dictionary[PV3DPixelsRenderer] as Pixels;
  229.             
  230.             container.removePixel3D(pixel);
  231.             
  232.             iter.next();
  233.         }
  234.     }
  235.     
  236.     override protected function render(e:EmitterEvent):void
  237.     {
  238.         var particle:Particle3D;
  239.         var iter:ParticleIterator = e.particles.getIterator();
  240.         while (particle = iter.particle as Particle3D)
  241.         {
  242.             var pixel:Pixel3D = particle.target;
  243.             
  244.             pixel.x = particle.x;
  245.             pixel.y = particle.y;
  246.             pixel.z = particle.z;
  247.             
  248.             iter.next();
  249.         }
  250.     }
  251. }
noswf
  1. // forked from paq's [Stardust] Pixel3D with a brilliant radiance
  2. package 
  3. {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.events.Event;
  9.     import flash.events.MouseEvent;
  10.     import flash.filters.BlurFilter;
  11.     import flash.geom.Matrix;
  12.     import flash.geom.Point;
  13.     import frocessing.color.FColor;
  14.     import idv.cjcat.stardust.common.clocks.SteadyClock;
  15.     import idv.cjcat.stardust.common.emitters.Emitter;
  16.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObject3DRenderer;
  17.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObjectRenderer;
  18.     import org.papervision3d.core.effects.BitmapLayerEffect;
  19.     import org.papervision3d.core.effects.view.ReflectionView;
  20.     import org.papervision3d.core.geom.Pixels;
  21.     import org.papervision3d.core.geom.renderables.Pixel3D;
  22.     import org.papervision3d.core.math.Number3D;
  23.     import org.papervision3d.materials.WireframeMaterial;
  24.     import org.papervision3d.objects.DisplayObject3D;
  25.     import org.papervision3d.objects.primitives.Plane;
  26.     import org.papervision3d.objects.primitives.Sphere;
  27.     import org.papervision3d.view.BasicView;
  28.     import org.papervision3d.view.layer.BitmapEffectLayer;
  29.     
  30.     /**
  31.      * ...
  32.      * @author paq89
  33.      */
  34.     [SWF(width = 465, height = 465, backgroundColor = 0xFFFFFF, frameRate = 60)]
  35.     public class Main extends BasicView
  36.     {
  37.         private const ZERO_POINT:Point = new Point(00);
  38.         private const BLUR:BlurFilter = new BlurFilter(441);
  39.         
  40.         private var _emitter:Pixel3DEmitter;
  41.         private var _pixels:Pixels;
  42.         private var _canvas:BitmapData;
  43.         private var _matrix:Matrix;
  44.         private var _rotation:Number = 0;
  45.         
  46.         public function Main():void 
  47.         {
  48.             if (stage) init();
  49.             else addEventListener(Event.ADDED_TO_STAGE, init);
  50.         }
  51.         
  52.         private function init(e:Event = null):void 
  53.         {
  54.             removeEventListener(Event.ADDED_TO_STAGE, init);
  55.             
  56.             // 背景色を設定
  57.             opaqueBackground = 0x000000;
  58.             
  59.             // レンダリング開始
  60.             startRendering();
  61.             
  62.             // キラキラエフェクト用BitmapEffectLayer
  63.             var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 465465true0"clear_pre"true);
  64.             layer.clearBeforeRender = true;
  65.             viewport.containerSprite.addLayer(layer);
  66.             
  67.             // Pixels
  68.             _pixels = new Pixels(layer);
  69.             scene.addChild(_pixels);
  70.             
  71.             // エミッター
  72.             _emitter = new Pixel3DEmitter(new SteadyClock(10));
  73.             
  74.             // レンダラー
  75.             var renderer:PV3DPixelsRenderer = new PV3DPixelsRenderer(_pixels);
  76.             renderer.addEmitter(_emitter);
  77.             
  78.             // キラキラエフェクト
  79.             _canvas=new BitmapData(465 / 4465 / 4false, 0x000000);
  80.             var bmp:Bitmap=new Bitmap(_canvas, "never"true);
  81.             bmp.scaleX=bmp.scaleY=4;
  82.             bmp.smoothing=true;
  83.             bmp.blendMode=BlendMode.ADD;
  84.             addChild(bmp);
  85.             _matrix = new Matrix(0.25000.25);
  86.             
  87.             // イベントリスナー
  88.             addEventListener(Event.ENTER_FRAME, loop);
  89.         }
  90.         
  91.         private function loop(e:Event):void 
  92.         {
  93.             // キラキラ
  94.             //_canvas.fillRect(_canvas.rect, 0x000000);
  95.             _canvas.applyFilter(_canvas, _canvas.rect, ZERO_POINT, BLUR);
  96.             _canvas.draw(viewport, _matrix);
  97.             
  98.             // パーティクルの発生元をくるくる
  99.             _rotation += 3;
  100.             _emitter.pointA.x = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  101.             _emitter.pointA.y = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  102.             _emitter.pointB.z = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  103.             _emitter.pointB.y = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  104.             _emitter.sphereCap.rotationX = 90;
  105.             _emitter.sphereCap.rotationZ = -_rotation - 90;
  106.             _pixels.rotationX += 0.2;
  107.             _pixels.rotationY += 1;
  108.             
  109.             // エミッター更新
  110.             _emitter.step();
  111.         }
  112.         
  113.     }
  114.     
  115. }
  116. import frocessing.color.ColorHSV;
  117. import idv.cjcat.stardust.common.actions.Age;
  118. import idv.cjcat.stardust.common.actions.DeathLife;
  119. import idv.cjcat.stardust.common.clocks.Clock;
  120. import idv.cjcat.stardust.common.events.EmitterEvent;
  121. import idv.cjcat.stardust.common.initializers.CompositeInitializer;
  122. import idv.cjcat.stardust.common.initializers.SwitchInitializer;
  123. import idv.cjcat.stardust.common.particles.ParticleIterator
  124. import idv.cjcat.stardust.common.initializers.Life;
  125. import idv.cjcat.stardust.common.math.UniformRandom;
  126. import idv.cjcat.stardust.common.renderers.Renderer;
  127. import idv.cjcat.stardust.threeD.actions.Accelerate3D;
  128. import idv.cjcat.stardust.threeD.actions.Move3D;
  129. import idv.cjcat.stardust.threeD.emitters.Emitter3D;
  130. import idv.cjcat.stardust.threeD.initializers.DisplayObjectClass3D;
  131. import idv.cjcat.stardust.threeD.initializers.Position3D;
  132. import idv.cjcat.stardust.threeD.initializers.Velocity3D;
  133. import idv.cjcat.stardust.threeD.particles.Particle3D;
  134. import idv.cjcat.stardust.threeD.zones.SinglePoint3D;
  135. import idv.cjcat.stardust.threeD.zones.SphereCap;
  136. import org.papervision3d.core.geom.Pixels;
  137. import org.papervision3d.core.geom.renderables.Pixel3D;
  138. /**
  139.  * エミッター
  140.  * @author paq89
  141.  */
  142. class Pixel3DEmitter extends Emitter3D
  143. {
  144.     public var pointA:SinglePoint3D = new SinglePoint3D();
  145.     public var pointB:SinglePoint3D = new SinglePoint3D();
  146.     public var sphereCap:SphereCap = new SphereCap(0001040);
  147.     
  148.     public function Pixel3DEmitter(clock:Clock)
  149.     {
  150.         super(clock);
  151.         
  152.         var compInitA:CompositeInitializer = new CompositeInitializer();
  153.         compInitA.addInitializer(new Position3D(pointA));
  154.         compInitA.addInitializer(new DisplayObjectClass3D(PixelParticleA));
  155.         var compInitB:CompositeInitializer = new CompositeInitializer();
  156.         compInitB.addInitializer(new Position3D(pointB));
  157.         compInitB.addInitializer(new DisplayObjectClass3D(PixelParticleB));
  158.         var switchInit:SwitchInitializer = new SwitchInitializer([compInitA, compInitB],[1,1]);
  159.         addInitializer(switchInit);
  160.         addInitializer(new Life(new UniformRandom(900)));
  161.         addInitializer(new Velocity3D(sphereCap));
  162.         
  163.         addAction(new Move3D());
  164.         addAction(new Age());
  165.         addAction(new DeathLife());
  166.         addAction(new Accelerate3D(0.05));
  167.     }
  168. }
  169. /**
  170.  * パーティクル
  171.  * @author paq89
  172.  */
  173. class PixelParticleA extends Pixel3D
  174. {
  175.     private static var hsv:ColorHSV = new ColorHSV(010.7);
  176.     
  177.     public function PixelParticleA()
  178.     {
  179.         hsv.h += 0.1;
  180.         super(hsv.value32);
  181.     }
  182. }
  183. class PixelParticleB extends Pixel3D
  184. {
  185.     private static var hsv:ColorHSV = new ColorHSV(7010.7);
  186.     
  187.     public function PixelParticleB()
  188.     {
  189.         hsv.h += 0.1;
  190.         super(hsv.value32);
  191.     }
  192. }
  193. /**
  194.  * Pixel3D専用レンダラー
  195.  * @author paq89
  196.  */
  197. class PV3DPixelsRenderer extends Renderer
  198. {
  199.     private var container:Pixels;
  200.     
  201.     public function PV3DPixelsRenderer(container:Pixels = null)
  202.     {
  203.         this.container = container;
  204.     }
  205.     
  206.     override protected function particlesAdded(e:EmitterEvent):void
  207.     {
  208.         if (!container) return;
  209.         var particle:Particle3D;
  210.         var iter:ParticleIterator = e.particles.getIterator();
  211.         while (particle = iter.particle as Particle3D)
  212.         {
  213.             var pixel:Pixel3D = particle.target;
  214.             container.addPixel3D(pixel);
  215.             particle.dictionary[PV3DPixelsRenderer] = container;
  216.             
  217.             iter.next();
  218.         }
  219.     }
  220.     
  221.     override protected function particlesRemoved(e:EmitterEvent):void
  222.     {
  223.         var particle:Particle3D;
  224.         var iter:ParticleIterator = e.particles.getIterator();
  225.         while (particle = iter.particle as Particle3D)
  226.         {
  227.             var pixel:Pixel3D = particle.target;
  228.             var container:Pixels = particle.dictionary[PV3DPixelsRenderer] as Pixels;
  229.             
  230.             container.removePixel3D(pixel);
  231.             
  232.             iter.next();
  233.         }
  234.     }
  235.     
  236.     override protected function render(e:EmitterEvent):void
  237.     {
  238.         var particle:Particle3D;
  239.         var iter:ParticleIterator = e.particles.getIterator();
  240.         while (particle = iter.particle as Particle3D)
  241.         {
  242.             var pixel:Pixel3D = particle.target;
  243.             
  244.             pixel.x = particle.x;
  245.             pixel.y = particle.y;
  246.             pixel.z = particle.z;
  247.             
  248.             iter.next();
  249.         }
  250.     }
  251. }
noswf
  1. // forked from paq's [Stardust] Pixel3D with a brilliant radiance
  2. package 
  3. {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.events.Event;
  9.     import flash.events.MouseEvent;
  10.     import flash.filters.BlurFilter;
  11.     import flash.geom.Matrix;
  12.     import flash.geom.Point;
  13.     import frocessing.color.FColor;
  14.     import idv.cjcat.stardust.common.clocks.SteadyClock;
  15.     import idv.cjcat.stardust.common.emitters.Emitter;
  16.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObject3DRenderer;
  17.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObjectRenderer;
  18.     import org.papervision3d.core.effects.BitmapLayerEffect;
  19.     import org.papervision3d.core.effects.view.ReflectionView;
  20.     import org.papervision3d.core.geom.Pixels;
  21.     import org.papervision3d.core.geom.renderables.Pixel3D;
  22.     import org.papervision3d.core.math.Number3D;
  23.     import org.papervision3d.materials.WireframeMaterial;
  24.     import org.papervision3d.objects.DisplayObject3D;
  25.     import org.papervision3d.objects.primitives.Plane;
  26.     import org.papervision3d.objects.primitives.Sphere;
  27.     import org.papervision3d.view.BasicView;
  28.     import org.papervision3d.view.layer.BitmapEffectLayer;
  29.     
  30.     /**
  31.      * ...
  32.      * @author paq89
  33.      */
  34.     [SWF(width = 465, height = 465, backgroundColor = 0xFFFFFF, frameRate = 60)]
  35.     public class Main extends BasicView
  36.     {
  37.         private const ZERO_POINT:Point = new Point(00);
  38.         private const BLUR:BlurFilter = new BlurFilter(441);
  39.         
  40.         private var _emitter:Pixel3DEmitter;
  41.         private var _pixels:Pixels;
  42.         private var _canvas:BitmapData;
  43.         private var _matrix:Matrix;
  44.         private var _rotation:Number = 0;
  45.         
  46.         public function Main():void 
  47.         {
  48.             if (stage) init();
  49.             else addEventListener(Event.ADDED_TO_STAGE, init);
  50.         }
  51.         
  52.         private function init(e:Event = null):void 
  53.         {
  54.             removeEventListener(Event.ADDED_TO_STAGE, init);
  55.             
  56.             // 背景色を設定
  57.             opaqueBackground = 0x000000;
  58.             
  59.             // レンダリング開始
  60.             startRendering();
  61.             
  62.             // キラキラエフェクト用BitmapEffectLayer
  63.             var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 465465true0"clear_pre"true);
  64.             layer.clearBeforeRender = true;
  65.             viewport.containerSprite.addLayer(layer);
  66.             
  67.             // Pixels
  68.             _pixels = new Pixels(layer);
  69.             scene.addChild(_pixels);
  70.             
  71.             // エミッター
  72.             _emitter = new Pixel3DEmitter(new SteadyClock(10));
  73.             
  74.             // レンダラー
  75.             var renderer:PV3DPixelsRenderer = new PV3DPixelsRenderer(_pixels);
  76.             renderer.addEmitter(_emitter);
  77.             
  78.             // キラキラエフェクト
  79.             _canvas=new BitmapData(465 / 4465 / 4false, 0x000000);
  80.             var bmp:Bitmap=new Bitmap(_canvas, "never"true);
  81.             bmp.scaleX=bmp.scaleY=4;
  82.             bmp.smoothing=true;
  83.             bmp.blendMode=BlendMode.ADD;
  84.             addChild(bmp);
  85.             _matrix = new Matrix(0.25000.25);
  86.             
  87.             // イベントリスナー
  88.             addEventListener(Event.ENTER_FRAME, loop);
  89.         }
  90.         
  91.         private function loop(e:Event):void 
  92.         {
  93.             // キラキラ
  94.             //_canvas.fillRect(_canvas.rect, 0x000000);
  95.             _canvas.applyFilter(_canvas, _canvas.rect, ZERO_POINT, BLUR);
  96.             _canvas.draw(viewport, _matrix);
  97.             
  98.             // パーティクルの発生元をくるくる
  99.             _rotation += 3;
  100.             _emitter.pointA.x = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  101.             _emitter.pointA.y = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  102.             _emitter.pointB.z = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  103.             _emitter.pointB.y = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  104.             _emitter.sphereCap.rotationX = 90;
  105.             _emitter.sphereCap.rotationZ = -_rotation - 90;
  106.             _pixels.rotationX += 0.2;
  107.             _pixels.rotationY += 1;
  108.             
  109.             // エミッター更新
  110.             _emitter.step();
  111.         }
  112.         
  113.     }
  114.     
  115. }
  116. import frocessing.color.ColorHSV;
  117. import idv.cjcat.stardust.common.actions.Age;
  118. import idv.cjcat.stardust.common.actions.DeathLife;
  119. import idv.cjcat.stardust.common.clocks.Clock;
  120. import idv.cjcat.stardust.common.events.EmitterEvent;
  121. import idv.cjcat.stardust.common.initializers.CompositeInitializer;
  122. import idv.cjcat.stardust.common.initializers.SwitchInitializer;
  123. import idv.cjcat.stardust.common.particles.ParticleIterator
  124. import idv.cjcat.stardust.common.initializers.Life;
  125. import idv.cjcat.stardust.common.math.UniformRandom;
  126. import idv.cjcat.stardust.common.renderers.Renderer;
  127. import idv.cjcat.stardust.threeD.actions.Accelerate3D;
  128. import idv.cjcat.stardust.threeD.actions.Move3D;
  129. import idv.cjcat.stardust.threeD.emitters.Emitter3D;
  130. import idv.cjcat.stardust.threeD.initializers.DisplayObjectClass3D;
  131. import idv.cjcat.stardust.threeD.initializers.Position3D;
  132. import idv.cjcat.stardust.threeD.initializers.Velocity3D;
  133. import idv.cjcat.stardust.threeD.particles.Particle3D;
  134. import idv.cjcat.stardust.threeD.zones.SinglePoint3D;
  135. import idv.cjcat.stardust.threeD.zones.SphereCap;
  136. import org.papervision3d.core.geom.Pixels;
  137. import org.papervision3d.core.geom.renderables.Pixel3D;
  138. /**
  139.  * エミッター
  140.  * @author paq89
  141.  */
  142. class Pixel3DEmitter extends Emitter3D
  143. {
  144.     public var pointA:SinglePoint3D = new SinglePoint3D();
  145.     public var pointB:SinglePoint3D = new SinglePoint3D();
  146.     public var sphereCap:SphereCap = new SphereCap(0001040);
  147.     
  148.     public function Pixel3DEmitter(clock:Clock)
  149.     {
  150.         super(clock);
  151.         
  152.         var compInitA:CompositeInitializer = new CompositeInitializer();
  153.         compInitA.addInitializer(new Position3D(pointA));
  154.         compInitA.addInitializer(new DisplayObjectClass3D(PixelParticleA));
  155.         var compInitB:CompositeInitializer = new CompositeInitializer();
  156.         compInitB.addInitializer(new Position3D(pointB));
  157.         compInitB.addInitializer(new DisplayObjectClass3D(PixelParticleB));
  158.         var switchInit:SwitchInitializer = new SwitchInitializer([compInitA, compInitB],[1,1]);
  159.         addInitializer(switchInit);
  160.         addInitializer(new Life(new UniformRandom(900)));
  161.         addInitializer(new Velocity3D(sphereCap));
  162.         
  163.         addAction(new Move3D());
  164.         addAction(new Age());
  165.         addAction(new DeathLife());
  166.         addAction(new Accelerate3D(0.05));
  167.     }
  168. }
  169. /**
  170.  * パーティクル
  171.  * @author paq89
  172.  */
  173. class PixelParticleA extends Pixel3D
  174. {
  175.     private static var hsv:ColorHSV = new ColorHSV(010.7);
  176.     
  177.     public function PixelParticleA()
  178.     {
  179.         hsv.h += 0.1;
  180.         super(hsv.value32);
  181.     }
  182. }
  183. class PixelParticleB extends Pixel3D
  184. {
  185.     private static var hsv:ColorHSV = new ColorHSV(7010.7);
  186.     
  187.     public function PixelParticleB()
  188.     {
  189.         hsv.h += 0.1;
  190.         super(hsv.value32);
  191.     }
  192. }
  193. /**
  194.  * Pixel3D専用レンダラー
  195.  * @author paq89
  196.  */
  197. class PV3DPixelsRenderer extends Renderer
  198. {
  199.     private var container:Pixels;
  200.     
  201.     public function PV3DPixelsRenderer(container:Pixels = null)
  202.     {
  203.         this.container = container;
  204.     }
  205.     
  206.     override protected function particlesAdded(e:EmitterEvent):void
  207.     {
  208.         if (!container) return;
  209.         var particle:Particle3D;
  210.         var iter:ParticleIterator = e.particles.getIterator();
  211.         while (particle = iter.particle as Particle3D)
  212.         {
  213.             var pixel:Pixel3D = particle.target;
  214.             container.addPixel3D(pixel);
  215.             particle.dictionary[PV3DPixelsRenderer] = container;
  216.             
  217.             iter.next();
  218.         }
  219.     }
  220.     
  221.     override protected function particlesRemoved(e:EmitterEvent):void
  222.     {
  223.         var particle:Particle3D;
  224.         var iter:ParticleIterator = e.particles.getIterator();
  225.         while (particle = iter.particle as Particle3D)
  226.         {
  227.             var pixel:Pixel3D = particle.target;
  228.             var container:Pixels = particle.dictionary[PV3DPixelsRenderer] as Pixels;
  229.             
  230.             container.removePixel3D(pixel);
  231.             
  232.             iter.next();
  233.         }
  234.     }
  235.     
  236.     override protected function render(e:EmitterEvent):void
  237.     {
  238.         var particle:Particle3D;
  239.         var iter:ParticleIterator = e.particles.getIterator();
  240.         while (particle = iter.particle as Particle3D)
  241.         {
  242.             var pixel:Pixel3D = particle.target;
  243.             
  244.             pixel.x = particle.x;
  245.             pixel.y = particle.y;
  246.             pixel.z = particle.z;
  247.             
  248.             iter.next();
  249.         }
  250.     }
  251. }
noswf
  1. // forked from paq's [Stardust] Pixel3D with a brilliant radiance
  2. package 
  3. {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.events.Event;
  9.     import flash.events.MouseEvent;
  10.     import flash.filters.BlurFilter;
  11.     import flash.geom.Matrix;
  12.     import flash.geom.Point;
  13.     import frocessing.color.FColor;
  14.     import idv.cjcat.stardust.common.clocks.SteadyClock;
  15.     import idv.cjcat.stardust.common.emitters.Emitter;
  16.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObject3DRenderer;
  17.     import idv.cjcat.stardust.threeD.papervision3d.renderers.PV3DDisplayObjectRenderer;
  18.     import org.papervision3d.core.effects.BitmapLayerEffect;
  19.     import org.papervision3d.core.effects.view.ReflectionView;
  20.     import org.papervision3d.core.geom.Pixels;
  21.     import org.papervision3d.core.geom.renderables.Pixel3D;
  22.     import org.papervision3d.core.math.Number3D;
  23.     import org.papervision3d.materials.WireframeMaterial;
  24.     import org.papervision3d.objects.DisplayObject3D;
  25.     import org.papervision3d.objects.primitives.Plane;
  26.     import org.papervision3d.objects.primitives.Sphere;
  27.     import org.papervision3d.view.BasicView;
  28.     import org.papervision3d.view.layer.BitmapEffectLayer;
  29.     
  30.     /**
  31.      * ...
  32.      * @author paq89
  33.      */
  34.     [SWF(width = 465, height = 465, backgroundColor = 0xFFFFFF, frameRate = 60)]
  35.     public class Main extends BasicView
  36.     {
  37.         private const ZERO_POINT:Point = new Point(00);
  38.         private const BLUR:BlurFilter = new BlurFilter(441);
  39.         
  40.         private var _emitter:Pixel3DEmitter;
  41.         private var _pixels:Pixels;
  42.         private var _canvas:BitmapData;
  43.         private var _matrix:Matrix;
  44.         private var _rotation:Number = 0;
  45.         
  46.         public function Main():void 
  47.         {
  48.             if (stage) init();
  49.             else addEventListener(Event.ADDED_TO_STAGE, init);
  50.         }
  51.         
  52.         private function init(e:Event = null):void 
  53.         {
  54.             removeEventListener(Event.ADDED_TO_STAGE, init);
  55.             
  56.             // 背景色を設定
  57.             opaqueBackground = 0x000000;
  58.             
  59.             // レンダリング開始
  60.             startRendering();
  61.             
  62.             // キラキラエフェクト用BitmapEffectLayer
  63.             var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 465465true0"clear_pre"true);
  64.             layer.clearBeforeRender = true;
  65.             viewport.containerSprite.addLayer(layer);
  66.             
  67.             // Pixels
  68.             _pixels = new Pixels(layer);
  69.             scene.addChild(_pixels);
  70.             
  71.             // エミッター
  72.             _emitter = new Pixel3DEmitter(new SteadyClock(10));
  73.             
  74.             // レンダラー
  75.             var renderer:PV3DPixelsRenderer = new PV3DPixelsRenderer(_pixels);
  76.             renderer.addEmitter(_emitter);
  77.             
  78.             // キラキラエフェクト
  79.             _canvas=new BitmapData(465 / 4465 / 4false, 0x000000);
  80.             var bmp:Bitmap=new Bitmap(_canvas, "never"true);
  81.             bmp.scaleX=bmp.scaleY=4;
  82.             bmp.smoothing=true;
  83.             bmp.blendMode=BlendMode.ADD;
  84.             addChild(bmp);
  85.             _matrix = new Matrix(0.25000.25);
  86.             
  87.             // イベントリスナー
  88.             addEventListener(Event.ENTER_FRAME, loop);
  89.         }
  90.         
  91.         private function loop(e:Event):void 
  92.         {
  93.             // キラキラ
  94.             //_canvas.fillRect(_canvas.rect, 0x000000);
  95.             _canvas.applyFilter(_canvas, _canvas.rect, ZERO_POINT, BLUR);
  96.             _canvas.draw(viewport, _matrix);
  97.             
  98.             // パーティクルの発生元をくるくる
  99.             _rotation += 3;
  100.             _emitter.pointA.x = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  101.             _emitter.pointA.y = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  102.             _emitter.pointB.z = 400 * Math.cos(_rotation * Number3D.toRADIANS);
  103.             _emitter.pointB.y = 400 * Math.sin(_rotation * Number3D.toRADIANS);
  104.             _emitter.sphereCap.rotationX = 90;
  105.             _emitter.sphereCap.rotationZ = -_rotation - 90;
  106.             _pixels.rotationX += 0.2;
  107.             _pixels.rotationY += 1;
  108.             
  109.             // エミッター更新
  110.             _emitter.step();
  111.         }
  112.         
  113.     }
  114.     
  115. }
  116. import frocessing.color.ColorHSV;
  117. import idv.cjcat.stardust.common.actions.Age;
  118. import idv.cjcat.stardust.common.actions.DeathLife;
  119. import idv.cjcat.stardust.common.clocks.Clock;
  120. import idv.cjcat.stardust.common.events.EmitterEvent;
  121. import idv.cjcat.stardust.common.initializers.CompositeInitializer;
  122. import idv.cjcat.stardust.common.initializers.SwitchInitializer;
  123. import idv.cjcat.stardust.common.particles.ParticleIterator
  124. import idv.cjcat.stardust.common.initializers.Life;
  125. import idv.cjcat.stardust.common.math.UniformRandom;
  126. import idv.cjcat.stardust.common.renderers.Renderer;
  127. import idv.cjcat.stardust.threeD.actions.Accelerate3D;
  128. import idv.cjcat.stardust.threeD.actions.Move3D;
  129. import idv.cjcat.stardust.threeD.emitters.Emitter3D;
  130. import idv.cjcat.stardust.threeD.initializers.DisplayObjectClass3D;
  131. import idv.cjcat.stardust.threeD.initializers.Position3D;
  132. import idv.cjcat.stardust.threeD.initializers.Velocity3D;
  133. import idv.cjcat.stardust.threeD.particles.Particle3D;
  134. import idv.cjcat.stardust.threeD.zones.SinglePoint3D;
  135. import idv.cjcat.stardust.threeD.zones.SphereCap;
  136. import org.papervision3d.core.geom.Pixels;
  137. import org.papervision3d.core.geom.renderables.Pixel3D;
  138. /**
  139.  * エミッター
  140.  * @author paq89
  141.  */
  142. class Pixel3DEmitter extends Emitter3D
  143. {
  144.     public var pointA:SinglePoint3D = new SinglePoint3D();
  145.     public var pointB:SinglePoint3D = new SinglePoint3D();
  146.     public var sphereCap:SphereCap = new SphereCap(0001040);
  147.     
  148.     public function Pixel3DEmitter(clock:Clock)
  149.     {
  150.         super(clock);
  151.         
  152.         var compInitA:CompositeInitializer = new CompositeInitializer();
  153.         compInitA.addInitializer(new Position3D(pointA));
  154.         compInitA.addInitializer(new DisplayObjectClass3D(PixelParticleA));
  155.         var compInitB:CompositeInitializer = new CompositeInitializer();
  156.         compInitB.addInitializer(new Position3D(pointB));
  157.         compInitB.addInitializer(new DisplayObjectClass3D(PixelParticleB));
  158.         var switchInit:SwitchInitializer = new SwitchInitializer([compInitA, compInitB],[1,1]);
  159.         addInitializer(switchInit);
  160.         addInitializer(new Life(new UniformRandom(900)));
  161.         addInitializer(new Velocity3D(sphereCap));
  162.         
  163.         addAction(new Move3D());
  164.         addAction(new Age());
  165.         addAction(new DeathLife());
  166.         addAction(new Accelerate3D(0.05));
  167.     }
  168. }
  169. /**
  170.  * パーティクル
  171.  * @author paq89
  172.  */
  173. class PixelParticleA extends Pixel3D
  174. {
  175.     private static var hsv:ColorHSV = new ColorHSV(010.7);
  176.     
  177.     public function PixelParticleA()
  178.     {
  179.         hsv.h += 0.1;
  180.         super(hsv.value32);
  181.     }
  182. }
  183. class PixelParticleB extends Pixel3D
  184. {
  185.     private static var hsv:ColorHSV = new ColorHSV(7010.7);
  186.     
  187.     public function PixelParticleB()
  188.     {
  189.         hsv.h += 0.1;
  190.         super(hsv.value32);
  191.     }
  192. }
  193. /**
  194.  * Pixel3D専用レンダラー
  195.  * @author paq89
  196.  */
  197. class PV3DPixelsRenderer extends Renderer
  198. {
  199.     private var container:Pixels;
  200.     
  201.     public function PV3DPixelsRenderer(container:Pixels = null)
  202.     {
  203.         this.container = container;
  204.     }
  205.     
  206.     override protected function particlesAdded(e:EmitterEvent):void
  207.     {
  208.         if (!container) return;
  209.         var particle:Particle3D;
  210.         var iter:ParticleIterator = e.particles.getIterator();
  211.         while (particle = iter.particle as Particle3D)
  212.         {
  213.             var pixel:Pixel3D = particle.target;
  214.             container.addPixel3D(pixel);
  215.             particle.dictionary[PV3DPixelsRenderer] = container;
  216.             
  217.             iter.next();
  218.         }
  219.     }
  220.     
  221.     override protected function particlesRemoved(e:EmitterEvent):void
  222.     {
  223.         var particle:Particle3D;
  224.         var iter:ParticleIterator = e.particles.getIterator();
  225.         while (particle = iter.particle as Particle3D)
  226.         {
  227.             var pixel:Pixel3D = particle.target;
  228.             var container:Pixels = particle.dictionary[PV3DPixelsRenderer] as Pixels;
  229.             
  230.             container.removePixel3D(pixel);
  231.             
  232.             iter.next();
  233.         }
  234.     }
  235.     
  236.     override protected function render(e:EmitterEvent):void
  237.     {
  238.         var particle:Particle3D;
  239.         var iter:ParticleIterator = e.particles.getIterator();
  240.         while (particle = iter.particle as Particle3D)
  241.         {
  242.             var pixel:Pixel3D = particle.target;
  243.             
  244.             pixel.x = particle.x;
  245.             pixel.y = particle.y;
  246.             pixel.z = particle.z;
  247.             
  248.             iter.next();
  249.         }
  250.     }
  251. }
noswf
Get Adobe Flash Player