flash on 2009-2-14
package {
import flash.events.Event;
import flash.ui.Mouse;
import org.papervision3d.core.geom.Pixels;
import org.papervision3d.core.geom.renderables.Pixel3D;
import org.papervision3d.core.geom.renderables.Vertex3D;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
import org.papervision3d.core.effects.*
import org.papervision3d.view.layer.BitmapEffectLayer;
import flash.filters.BlurFilter
[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
public class PixelField extends BasicView
{
private const NUM_PIXELS:int = 100;
private var pixels:Pixels;
public function PixelField()
{
camera.y = 0;
//you need a bitmapEffectLayer for the pixels
var bitmapEffectLayer:BitmapEffectLayer = new BitmapEffectLayer(viewport);
//bitmapEffectLayer.addEffect(new BitmapLayerEffect(new BlurFilter(20, 20, 1)));
//bitmapEffectLayer.clearMode = "clear_pre"
//this allows for the neat overdraw cylinder effect
bitmapEffectLayer.clearBeforeRender = true;
pixels = new Pixels(bitmapEffectLayer);
var verts:Array = [-250,-250,-250,250,-250,250,-250,250,250,250,250,-250]
//singleRender();
for(var i:int = 0; i < verts.length-1; i+=3)
{
var pixel:Pixel3D = new Pixel3D(0xFFFF0000, verts[i], verts[i+1], verts[i+2]);
pixels.addPixel3D(pixel);
}
var x = 0;//Math.random()*100;
var y = 0;//Math.random()*100;
var z = 0;//Math.random()*100;
var ratio:Number = .5;
var j:uint = 0;
var rand:uint = 0;
for(j=0;j<40000;j++){
rand = Math.random()*4
x += (-x + verts[3*rand])*ratio;
y += (-y + verts[3*rand+1])*ratio;
z += (-z + verts[3*rand+2])*ratio;
pixels.addPixel3D( new Pixel3D(0xFF2255FF, x, y, z))
}
viewport.containerSprite.addLayer(bitmapEffectLayer);
scene.addChild(pixels);
addEventListener(Event.ENTER_FRAME, renderAndRotateHandler);
}
private function renderAndRotateHandler(event:Event):void
{
pixels.yaw(1);
singleRender();
}
}
}