Fountain
Rendering pixel particles in 3D.
package
{
import org.flintparticles.threeD.emitters.Emitter3D;
import org.flintparticles.threeD.renderers.PixelRenderer;
import org.flintparticles.threeD.renderers.controllers.OrbitCamera;
import flash.display.Sprite;
import flash.filters.BlurFilter;
import flash.filters.ColorMatrixFilter;
import flash.geom.Rectangle;
import flash.geom.Vector3D;
[SWF(width='500', height='500', frameRate='61', backgroundColor='#000000')]
public class Main extends Sprite
{
private var emitter:Emitter3D;
private var renderer:PixelRenderer;
private var orbitter:OrbitCamera;
public function Main()
{
emitter = new Fountain();
renderer = new PixelRenderer( new Rectangle( -250, -250, 500, 500 ), false );
renderer.camera.dolly( -300 );
renderer.camera.lift( 100 );
renderer.camera.target = new Vector3D( 0, -100, 0 );
renderer.addFilter( new BlurFilter( 2, 2, 1 ), true );
renderer.addFilter( new ColorMatrixFilter( [ 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0.99,0 ] ), true );
renderer.addEmitter( emitter );
renderer.x = 250;
renderer.y = 250;
addChild( renderer );
emitter.start( );
orbitter = new OrbitCamera( stage, renderer.camera );
orbitter.start();
}
}
}package
{
import org.flintparticles.common.actions.Age;
import org.flintparticles.common.counters.Steady;
import org.flintparticles.common.initializers.ColorInit;
import org.flintparticles.common.initializers.Lifetime;
import org.flintparticles.threeD.actions.Accelerate;
import org.flintparticles.threeD.actions.Move;
import org.flintparticles.threeD.emitters.Emitter3D;
import org.flintparticles.threeD.initializers.Velocity;
import org.flintparticles.threeD.zones.DiscZone;
import flash.geom.Vector3D;
public class Fountain extends Emitter3D
{
public function Fountain()
{
counter = new Steady( 2500 );
addInitializer( new ColorInit( 0xFFCCCCFF, 0xFF6666FF ) );
addInitializer( new Velocity( new DiscZone( new Vector3D( 0, -250, 0 ), new Vector3D( 0, 1, 0 ), 60 ) ) );
addInitializer( new Lifetime( 3.2 ) );
addAction( new Move() );
addAction( new Accelerate( new Vector3D( 0, 150, 0 ) ) );
addAction( new Age() );
}
}
}import org.flintparticles.common.actions.*; import org.flintparticles.common.counters.*; import org.flintparticles.common.initializers.*; import org.flintparticles.threeD.actions.*; import org.flintparticles.threeD.emitters.Emitter3D; import org.flintparticles.threeD.initializers.*; import org.flintparticles.threeD.renderers.PixelRenderer; import org.flintparticles.threeD.renderers.controllers.*; import org.flintparticles.threeD.zones.*; var emitter:Emitter3D = new Emitter3D(); emitter.counter = new Steady( 2500 ); emitter.addInitializer( new ColorInit( 0xFFCCCCFF, 0xFF6666FF ) ); emitter.addInitializer( new Velocity( new DiscZone( new Vector3D( 0, -250, 0 ), new Vector3D( 0, 1, 0 ), 60 ) ) ); emitter.addInitializer( new Lifetime( 3.2 ) ); emitter.addAction( new Move() ); emitter.addAction( new Accelerate( new Vector3D( 0, 150, 0 ) ) ); emitter.addAction( new Age() ); var renderer:PixelRenderer = new PixelRenderer( new Rectangle( -250, -250, 500, 500 ), false ); renderer.camera.dolly( -300 ); renderer.camera.lift( 100 ); renderer.camera.target = new Vector3D( 0, -100, 0 ); renderer.addFilter( new BlurFilter( 2, 2, 1 ), true ); renderer.addFilter( new ColorMatrixFilter( [ 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0.99,0 ] ), true ); renderer.addEmitter( emitter ); renderer.x = 250; renderer.y = 250; addChild( renderer ); emitter.start( ); var orbitter:OrbitCamera = new OrbitCamera( stage, renderer.camera ); orbitter.start();
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:f="http://flintparticles.org/2009/flint3d"
xmlns:geom="flash.geom.*"
xmlns:filters="flash.filters.*"
width="500" height="500"
backgroundColor="#000000">
<f:PixelRenderer id="renderer" width="500" height="500">
<f:camera>
<f:Camera>
<f:position>
<geom:Vector3D x="0" y="-100" z="-300"/>
</f:position>
<f:target>
<geom:Vector3D x="0" y="-100" z="0"/>
</f:target>
<f:controller>
<f:OrbitCamera/>
</f:controller>
</f:Camera>
</f:camera>
<f:postFilters>
<filters:BlurFilter blurX="2" blurY="2" quality="1"/>
<filters:ColorMatrixFilter matrix="{[ 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0.99,0 ]}"/>
</f:postFilters>
<f:emitters>
<f:Emitter id="emitter" autoStart="true">
<f:counter>
<f:Steady rate="2500"/>
</f:counter>
<f:initializers>
<f:Velocity>
<f:DiscZone innerRadius="0" outerRadius="60">
<f:center>
<geom:Vector3D x="0" y="-250" z="0"/>
</f:center>
<f:normal>
<geom:Vector3D x="0" y="1" z="0"/>
</f:normal>
</f:DiscZone>
</f:Velocity>
<f:ColorInit minColor="0xFFCCCCFF" maxColor="0xFF6666FF"/>
<f:Lifetime lifetime="3.2"/>
</f:initializers>
<f:actions>
<f:Move/>
<f:Age/>
<f:Accelerate x="0" y="150" z="0" />
</f:actions>
</f:Emitter>
</f:emitters>
</f:PixelRenderer>
</s:Application>package
{
import org.flintparticles.integration.papervision3d.PV3DPixelRenderer;
import org.flintparticles.threeD.emitters.Emitter3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.core.effects.BitmapLayerEffect;
import org.papervision3d.core.geom.Pixels;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.view.layer.BitmapEffectLayer;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.filters.ColorMatrixFilter;
[SWF(width='500', height='500', frameRate='61', backgroundColor='#000000')]
public class Main extends Sprite
{
private var viewport:Viewport3D;
private var emitter:Emitter3D;
private var pv3dRenderer:BasicRenderEngine;
private var flintRenderer:PV3DPixelRenderer;
private var scene:Scene3D;
private var camera:Camera3D;
private var bfx:BitmapEffectLayer;
private var pixels:Pixels;
public function Main()
{
viewport = new Viewport3D( 500, 500 );
addChild( viewport );
pv3dRenderer = new BasicRenderEngine();
scene = new Scene3D();
camera = new Camera3D();
camera.z = -300;
bfx = new BitmapEffectLayer( viewport, 500, 500 );
viewport.containerSprite.addLayer( bfx );
pixels = new Pixels( bfx );
bfx.addDisplayObject3D( pixels );
scene.addChild( pixels );
bfx.addEffect( new BitmapLayerEffect( new BlurFilter( 2, 2, 1 ) ) );
bfx.addEffect( new BitmapLayerEffect( new ColorMatrixFilter( [ 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0.99,0 ] ) ) );
emitter = new Fountain();
emitter.position.y = -100;
flintRenderer = new PV3DPixelRenderer( pixels );
flintRenderer.addEmitter( emitter );
emitter.start();
addEventListener( Event.ENTER_FRAME, render, false, 0, true );
}
private function render( ev:Event ):void
{
// render the view
pv3dRenderer.renderScene( scene, camera, viewport);
}
}
}package
{
import org.flintparticles.common.actions.Age;
import org.flintparticles.common.counters.Steady;
import org.flintparticles.common.initializers.ColorInit;
import org.flintparticles.common.initializers.Lifetime;
import org.flintparticles.threeD.actions.Accelerate;
import org.flintparticles.threeD.actions.Move;
import org.flintparticles.threeD.emitters.Emitter3D;
import org.flintparticles.threeD.initializers.Velocity;
import org.flintparticles.threeD.zones.DiscZone;
import flash.geom.Vector3D;
public class Fountain extends Emitter3D
{
public function Fountain()
{
counter = new Steady( 2500 );
addInitializer( new ColorInit( 0xFFCCCCFF, 0xFF6666FF ) );
addInitializer( new Velocity( new DiscZone( new Vector3D( 0, 250, 0 ), new Vector3D( 0, 1, 0 ), 60 ) ) );
addInitializer( new Lifetime( 3.2 ) );
addAction( new Move() );
addAction( new Accelerate( new Vector3D( 0, -150, 0 ) ) );
addAction( new Age() );
}
}
}