Papervision3dparticalsパーティクルが集まって球をつくる マウスに反応して回転
nice
pv3d particles
nice
PVpixel3DbitmaplayereffectAll rights reserved LOL
Papervision3DPixel3Dなんてものがあるんだ!
PV3Dその8 Pixels使ってみる forked from: PV3Dその8 Pixels使ってみる
- // forked from sake's PV3Dその8 Pixels使ってみる
- /*
- 久々のPV3D。
- やっぱASは打ってて楽しい。
- */
- package
- {
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import org.papervision3d.core.effects.BitmapLayerEffect;
- import org.papervision3d.core.effects.utils.BitmapClearMode;
- import org.papervision3d.core.geom.Pixels;
- import org.papervision3d.core.geom.renderables.Pixel3D;
- import org.papervision3d.view.BasicView;
- import org.papervision3d.view.layer.BitmapEffectLayer;
- [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
- public class PV3D_pixels extends BasicView
- {
- private var pixels:Pixels;
- private var rotateX:Number;
- private var rotateY:Number;
- public function PV3D_pixels()
- {
- super(0, 0, true, true);
- var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 800, 800, true, 0, BitmapClearMode.CLEAR_PRE, true);
- viewport.containerSprite.addLayer(layer);
- layer.addEffect(new BitmapLayerEffect(new BlurFilter(8, 8, 4), false));
- camera.z=-500;
- rotateX=rotateY=0;
- pixels=new Pixels(layer);
- scene.addChild(pixels);
- for(var i:int=0; i < 1000; i++)
- {
- // 赤
- var theta1:Number=360 * Math.random() * Math.PI / 180;
- var theta2:Number=(180 * Math.random() - 90) * Math.PI / 180;
- var radius:Number=200;
- var xx:Number=radius * Math.cos(theta2) * Math.sin(theta1);
- var yy:Number=radius * Math.sin(theta2);
- var zz:Number=radius * Math.cos(theta2) * Math.cos(theta1);
- var p:Pixel3D=new Pixel3D((0xffff0000), xx, yy, zz);
- pixels.addPixel3D(p);
- // 黄色
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=200;
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3D((0xffffff00), xx, yy, zz);
- pixels.addPixel3D(p);
- // 白
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=200;
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3D((0xffffffff), xx, yy, zz);
- pixels.addPixel3D(p);
- // オレンジ
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=200;
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3D((0xffff8c00), xx, yy, zz);
- pixels.addPixel3D(p);
- }
- addEventListener(Event.ENTER_FRAME, onFrame);
- }
- private function onFrame(e:Event):void
- {
- rotateX+=(-viewport.containerSprite.mouseX - rotateX) * 0.1;
- rotateY+=(-viewport.containerSprite.mouseY - rotateY) * 0.1;
- pixels.rotationY=rotateX;
- pixels.rotationX=rotateY;
- startRendering();
- }
- }
- }
PV3Dその8 Pixels使ってみる forked from: PV3Dその8 Pixels使ってみる
- //forked from : sake's PV3Dその8 Pixels使ってみる
- package
- {
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import org.papervision3d.core.effects.BitmapLayerEffect;
- import org.papervision3d.core.effects.utils.BitmapClearMode;
- import org.papervision3d.core.geom.Pixels;
- import org.papervision3d.core.geom.renderables.Pixel3D;
- import org.papervision3d.materials.special.ParticleMaterial;
- import org.papervision3d.objects.DisplayObject3D;
- import org.papervision3d.objects.special.ParticleField;
- import org.papervision3d.view.BasicView;
- import org.papervision3d.view.layer.BitmapEffectLayer;
- [SWF(width="512", height="512", backgroundColor="0x000000", frameRate="40")]
- public class PapervisionEffect2 extends BasicView
- {
- private var ary:Array;
- private var layer:BitmapEffectLayer;
- public function PapervisionEffect2()
- {
- camera.zoom = 100;
- layer=new BitmapEffectLayer(viewport, 500, 500, true, 0x000000, BitmapClearMode.CLEAR_PRE, true);
- viewport.containerSprite.addLayer(layer);
- layer.addEffect(new BitmapLayerEffect(new BlurFilter(8, 8, 4), false));
- startRendering();
- ary = [];
- for(var i:uint = 0; i < 5; i++){
- createPixels();
- }
- addEventListener(Event.ENTER_FRAME, onFrame);
- }
- private function createPixels():void{
- var color:uint = (0xff << 24 | (0xff-0x99)*Math.random()+0x99 << 16 | 0x66*Math.random() << 8 | 0xff);
- var rX:Number;
- var rY:Number;
- for(var i:uint = 0; i < 10; i++){
- var pixels:Particle = new Particle(layer);
- scene.addChild(pixels);
- for(var s:Number=0; s < Math.PI * 2; s+=0.02){
- var p:Pixel3D=new Pixel3D(color, Math.cos(s)*200, Math.sin(s)*200, 0);
- pixels.addPixel3D(p);
- }
- pixels.x = 0;
- pixels.y = 0;
- pixels.vrx = Math.random()*10-5;
- pixels.vry = Math.random()*10-5;
- ary.push(pixels);
- }
- }
- private function onFrame(e:Event):void
- {
- var pixels:Particle;
- var i:uint = ary.length;
- while(i--){
- pixels = ary[i];
- pixels.rotationX += pixels.vrx;
- pixels.rotationY += pixels.vry;
- }
- camera.x += (stage.stageWidth/2 - mouseX)/10;
- camera.y += (stage.stageHeight/2 - mouseY)/10;
- camera.z += (stage.stageHeight/2 - mouseY)/10;
- }
- }
- }
- import org.papervision3d.core.geom.Pixels;
- import org.papervision3d.view.layer.BitmapEffectLayer;
- class Particle extends Pixels{
- public var vrx:Number;
- public var vry:Number;
- public function Particle(effectLayer:BitmapEffectLayer, name:String = "pixels3D"):void{
- super(effectLayer, name);
- }
- }
PV3Dその8 Pixels使ってみる forked from: PV3Dその8 Pixels使ってみる
- // forked from sake's PV3Dその8 Pixels使ってみる
- /*
- 久々のPV3D。
- やっぱASは打ってて楽しい。
- */
- package
- {
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import org.papervision3d.core.effects.BitmapLayerEffect;
- import org.papervision3d.core.effects.utils.BitmapClearMode;
- import org.papervision3d.core.geom.Pixels;
- import org.papervision3d.core.geom.renderables.Pixel3D;
- import org.papervision3d.view.BasicView;
- import org.papervision3d.view.layer.BitmapEffectLayer;
- [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
- public class PV3D_pixels extends BasicView
- {
- private var pixels:Pixels;
- private var rotateX:Number;
- private var rotateY:Number;
- private var pixelList:Array = [];
- public function PV3D_pixels()
- {
- super(0, 0, true, true);
- var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 800, 800, true, 0, BitmapClearMode.CLEAR_PRE, true);
- viewport.containerSprite.addLayer(layer);
- layer.addEffect(new BitmapLayerEffect(new BlurFilter(2, 2, 2), false));
- camera.z=-500;
- rotateX=rotateY=0;
- pixels=new Pixels(layer);
- scene.addChild(pixels);
- for(var i:int=0; i < 500; i++)
- {
- // 赤
- var theta1:Number=360 * Math.random() * Math.PI / 180;
- var theta2:Number=(180 * Math.random() - 90) * Math.PI / 180;
- var radius:Number=200;
- var xx:Number=radius * Math.cos(theta2) * Math.sin(theta1);
- var yy:Number=radius * Math.sin(theta2);
- var zz:Number=radius * Math.cos(theta2) * Math.cos(theta1);
- var p:Pixel3DEX=new Pixel3DEX((0xffff0000), xx, yy, zz);
- pixels.addPixel3D(p);
- pixelList.push(p);
- // 黄色
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=200;
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3DEX((0xffffff00), xx, yy, zz);
- pixels.addPixel3D(p);
- pixelList.push(p);
- // 白
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=200;
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3DEX((0xffffffff), xx, yy, zz);
- pixels.addPixel3D(p);
- pixelList.push(p);
- // オレンジ
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=200;
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3DEX((0xffff8c00), xx, yy, zz);
- pixels.addPixel3D(p);
- pixelList.push(p);
- }
- addEventListener(Event.ENTER_FRAME, onFrame);
- }
- private function onFrame(e:Event):void
- {
- /*
- rotateX+=(-viewport.containerSprite.mouseX - rotateX) * 0.1;
- rotateY+=(-viewport.containerSprite.mouseY - rotateY) * 0.1;
- pixels.rotationY=rotateX;
- pixels.rotationX=rotateY;
- */
- for(var i:int = 0;i < pixelList.length;i++){
- var p:Pixel3DEX = Pixel3DEX(pixelList[i]);
- p.move();
- }
- startRendering();
- }
- }
- }
- import org.papervision3d.core.geom.renderables.Pixel3D;
- import flash.events.Event;
- class Pixel3DEX extends Pixel3D{
- private var startX:Number;
- private var startY:Number;
- private var startZ:Number;
- private var rgb:uint;
- private var alpha:Number;
- private var startAlpha:Number;
- private var decrease:Number = 0.99;
- public function Pixel3DEX(color:uint,x:Number=0,y:Number=0,z:Number=0){
- super(color,x,y,z);
- startX = x;
- startY = y;
- startZ = z;
- rgb = 0xffffff & color;
- startAlpha = alpha = (0xff000000 & color) >> 48;
- decrease = Math.random() * 0.09 + 0.9;
- }
- public function move():void{
- //Pixel3Dってアルファきかないのかしらん?
- if(Math.abs(this.x) < Math.abs(this.startX * 0.1)){
- this.x = startX;
- this.y = startY;
- this.z = startZ;
- this.alpha = startAlpha;
- decrease = Math.random() * 0.09 + 0.9;
- }else{
- this.x *= decrease;
- this.y *= decrease;
- this.z *= decrease;
- alpha *= decrease;
- var a:uint = Math.floor(alpha);
- this.color = uint(alpha) << 48 | color;
- }
- }
- }
- // forked from sake's PV3Dその8 Pixels使ってみる
- /*
- 以下を参考にさせて頂きました。
- PV3Dその5 Planeを球体っぽく並べるのをPV3Dで。 http://wonderfl.kayac.com/code/8967e3b45baea801deac174fabea02453fc94164
- PV3Dその8 Pixels使ってみる http://wonderfl.kayac.com/code/834affa8c7b8c668f2de620b62fa61c217df2805
- */
- package
- {
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import org.papervision3d.core.effects.BitmapLayerEffect;
- import org.papervision3d.core.effects.utils.BitmapClearMode;
- import org.papervision3d.core.geom.Pixels;
- import org.papervision3d.core.geom.renderables.Pixel3D;
- import org.papervision3d.view.BasicView;
- import org.papervision3d.view.layer.BitmapEffectLayer;
- [SWF(width = "465", height = "465", backgroundColor = "0x000000", frameRate = "30")]
- public class Saturn extends BasicView
- {
- private var _pixels:Pixels;
- public function Saturn()
- {
- graphics.beginFill(0x000000);
- graphics.drawRect(0, 0, 465, 465);
- var layer:BitmapEffectLayer = new BitmapEffectLayer(viewport, stage.stageWidth, stage.stageHeight, true, 0, BitmapClearMode.CLEAR_PRE, true);
- viewport.containerSprite.addLayer(layer);
- layer.addEffect(new BitmapLayerEffect(new BlurFilter(8, 8, 4), false));
- _pixels = new Pixels(layer);
- scene.addChild(_pixels);
- globe();
- ring();
- dust();
- _pixels.rotationZ = 30;
- camera.y = -150;
- startRendering();
- }
- private function globe():void
- {
- var radius:int = 250;
- var H:int=(2 * radius * Math.PI) / 2 / 30;
- var theta1:Number;
- var theta2:Number=90;
- var color:uint;
- for(var i:int=0; i < H; i++)
- {
- (i%2 == 0)? color=0xFFFCBD5C : color=0xFFC68A2F;
- theta1=0;
- var pn:int=Math.floor((2 * radius * Math.cos(theta2 * Math.PI / 180) * Math.PI) / 20);
- for(var j:int=0; j < pn; j++)
- {
- var xx:int=radius * Math.cos(theta2 * Math.PI / 180) * Math.sin(theta1 * Math.PI / 180);
- var yy:int=radius * Math.sin(theta2 * Math.PI / 180);
- var zz:int=radius * Math.cos(theta2 * Math.PI / 180) * Math.cos(theta1 * Math.PI / 180);
- var p:Pixel3D=new Pixel3D((color), xx, yy, zz);
- _pixels.addPixel3D(p);
- theta1+=360 / pn;
- }
- theta2-=180 / H;
- }
- }
- private function ring():void
- {
- var radius:int = 450;
- for (var i:uint=0; i<3000; i++)
- {
- var theta:Number=360 * Math.random() * Math.PI / 180;
- var xx:Number=radius * Math.sin(theta) + Math.random()*100 - 50;
- var yy:Number=0;
- var zz:Number=radius * Math.cos(theta) + Math.random()*100 - 50;
- var p:Pixel3D=new Pixel3D((0xFF8E6F53), xx, yy, zz);
- _pixels.addPixel3D(p);
- }
- }
- private function dust():void
- {
- for (var i:uint=0; i<100; i++)
- {
- var xx:Number=Math.random()*930-465;
- var yy:Number=Math.random()*930-465;
- var zz:Number=Math.random()*930-465;
- var p:Pixel3D=new Pixel3D(((Math.random()*0x80 + 0x60) << 24 | 0xFF << 16 | 0xFF << 8 | 0xFF), xx, yy, zz);
- _pixels.addPixel3D(p);
- }
- }
- override protected function onRenderTick(e:Event=null):void
- {
- _pixels.yaw(0.3);
- renderer.renderScene(scene, camera, viewport);
- }
- }
- }
PV3Dその8 Pixels使ってみる forked from: PV3Dその8 Pixels使ってみる
- // forked from sake's PV3Dその8 Pixels使ってみる
- /*
- 久々のPV3D。
- やっぱASは打ってて楽しい。
- */
- package
- {
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import org.papervision3d.core.effects.BitmapLayerEffect;
- import org.papervision3d.core.effects.utils.BitmapClearMode;
- import org.papervision3d.core.geom.Pixels;
- import org.papervision3d.core.geom.renderables.Pixel3D;
- import org.papervision3d.view.BasicView;
- import org.papervision3d.view.layer.BitmapEffectLayer;
- [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="40")]
- public class PV3D_pixels extends BasicView
- {
- private var pixels:Pixels;
- private var rotateX:Number;
- private var rotateY:Number;
- public function PV3D_pixels()
- {
- super(0, 0, true, true);
- var layer:BitmapEffectLayer=new BitmapEffectLayer(viewport, 800, 800, true, 0, BitmapClearMode.CLEAR_PRE, true);
- viewport.containerSprite.addLayer(layer);
- layer.addEffect(new BitmapLayerEffect(new BlurFilter(2, 2, 4), true));
- camera.z=-500;
- rotateX=rotateY=0;
- pixels=new Pixels(layer);
- scene.addChild(pixels);
- for(var i:int=0; i < 1000; i++)
- {
- // 赤
- var theta1:Number=360 * Math.random() * Math.PI / 180;
- var theta2:Number=(180 * Math.random() - 90) * Math.PI / 180;
- var radius:Number=300 * Math.random();
- var xx:Number=radius * Math.cos(theta2) * Math.sin(theta1);
- var yy:Number=radius * Math.sin(theta2 * 2);
- var zz:Number=radius * Math.cos(theta2) * Math.cos(theta1);
- var p:Pixel3D=new Pixel3D((0xff00ffff), xx, yy, zz);
- pixels.addPixel3D(p);
- // 黄色
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=300 * Math.random();
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3D((0xff00ff00), xx, yy, zz);
- pixels.addPixel3D(p);
- // 白
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=200 * Math.random();
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3D((0xffffffff), xx, yy, zz);
- pixels.addPixel3D(p);
- // オレンジ
- theta1=360 * Math.random() * Math.PI / 180;
- theta2=(180 * Math.random() - 90) * Math.PI / 180;
- radius=300 * Math.random();
- xx=radius * Math.cos(theta2) * Math.sin(theta1);
- yy=radius * Math.sin(theta2);
- zz=radius * Math.cos(theta2) * Math.cos(theta1);
- p=new Pixel3D((0xffff00ff), xx, yy, zz);
- pixels.addPixel3D(p);
- }
- addEventListener(Event.ENTER_FRAME, onFrame);
- }
- private function onFrame(e:Event):void
- {
- rotateX+=(-viewport.containerSprite.mouseX - rotateX) * 0.1;
- rotateY+=(-viewport.containerSprite.mouseY - rotateY) * 0.1;
- pixels.rotationY=rotateX;
- pixels.rotationX=rotateY;
- startRendering();
- }
- }
- }
notice:





