ParticleMaterialの回転でサイクロン oreore forked:2favorite:25lines:92license : MIT License modified : 2009-10-10 14:02:58 share Tweet package { import flash.display.*; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.BlurFilter; import flash.geom.*; import flash.utils.Timer; import flash.events.TimerEvent; //papervision3D import org.papervision3d.core.effects.BitmapLayerEffect; import org.papervision3d.core.math.Number3D; import org.papervision3d.materials.special.ParticleMaterial; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.special.ParticleField; import org.papervision3d.view.layer.BitmapEffectLayer; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.special.CompositeMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.cameras.Camera3D; import org.papervision3d.scenes.Scene3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.view.BasicView; import org.papervision3d.core.effects.utils.BitmapClearMode; //Tweener import caurina.transitions.Tweener; import caurina.transitions.properties.ColorShortcuts; import caurina.transitions.properties.FilterShortcuts; import caurina.transitions.properties.CurveModifiers; /** * ... * @author oreore */ [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="60")] public class Main extends Sprite { private var _world:DisplayObject3D; private var particles:ParticleField; private var bel:BitmapEffectLayer; private var basicBiew:BasicView; private var timer:Timer; public function Main() { init(); } private function init():void { basicBiew = new BasicView(); addChild(basicBiew); _world = new DisplayObject3D(); basicBiew.scene.addChild(_world); basicBiew.startRendering(); //-------------------------------------------------------------------------- // オブジェクトの作成 //-------------------------------------------------------------------------- var mat:ParticleMaterial = new ParticleMaterial(0xffffff, 1, 1); particles = new ParticleField(mat, 2000, 4); _world.addChild(particles); //-------------------------------------------------------------------------- // bitmapfillter // ColorTransformでうまく軌跡が消せない // blurを使うと消えてくれるけど描画面積が大きくなると重くなる。。。。 //-------------------------------------------------------------------------- bel = new BitmapEffectLayer(basicBiew.viewport, stage.stageWidth, stage.stageHeight, true, 0x00000000, BitmapClearMode.CLEAR_PRE,false,false); bel.drawCommand.blendMode = BlendMode.ADD; bel.drawCommand.colorTransform = new ColorTransform(.1, .3, .8, .1); basicBiew.viewport.containerSprite.addLayer(bel); bel.addDisplayObject3D(particles); //-------------------------------------------------------------------------- // timer //-------------------------------------------------------------------------- timer = new Timer(15000); timer.addEventListener(TimerEvent.TIMER, onTimer); timer.start(); addEventListener(Event.ENTER_FRAME, onLoop); } private function onTimer(e:TimerEvent):void { onClickHandler(); } private function onClickHandler():void { var num:int = basicBiew.viewport.containerSprite.childLayers.length - 1; Tweener.addTween(basicBiew.viewport.containerSprite.childLayers[num],{ alpha:0, time:10, onComplete:removeLayer }); bel = new BitmapEffectLayer(basicBiew.viewport, stage.stageWidth, stage.stageHeight, true, 0x00000000, BitmapClearMode.CLEAR_PRE, false, false); bel.drawCommand.blendMode = BlendMode.ADD; bel.drawCommand.colorTransform = new ColorTransform(Math.random()*0.6+.2, Math.random()*0.6+.3, Math.random()*0.5+.4, .1); basicBiew.viewport.containerSprite.addLayer(bel); bel.addDisplayObject3D(particles); _world.rotationX = Math.random() * 360; _world.rotationY = Math.random() * 360; _world.rotationZ = Math.random() * 360; } private function removeLayer():void { basicBiew.viewport.containerSprite.removeLayerAt(0); bel.addDisplayObject3D(particles); } private function onLoop(e:Event):void { _world.yaw(0.1); } } } Code Fullscreen Preview Fullscreen 上手く奇跡が消せないとあったのでソース調べて修正してみました。 forkしましたがこういう事でしょうか? by yooKo at 2009/10/10 16:33:50 yooko様 はじめまして。 ありがとうございます!! forkしていただいた通りです。 BitmapEffectLayerに追加してやればよかったのですね。よやく解決できました。 本当にありがとうございました。 おかげで解決できました。 by oreore at 2009/10/10 17:00:02 termat siouxcitizen.. atsumo nabe jttya_fla ep91ckok ms_space bkzen paq sw_lucchini 178ep3 skn nki2 eternity_hir.. Murai miyaoka katapad everdibe clockmaker h1ro : pv3dきれい tkinjo : PV3D Piggyi : 3dfilterPapervision3Dpixels flasher_bbb : Papervision3DParticleゴイスー ibu4gin : !! invent : effect 3d PV3D Papervision3D Particle effect filter pixels きれい particles BitmapClearMode.CLEAR_PRE blendMode childLayers BlendMode.ADD Tweener.init viewport colorTransform rotationZ rotationX rotationY alpha ColorTransform TimerEvent.ENTER_FRAME TimerEvent start addEventListener Tweener.addTween TimerEvent.TIMER stageWidth sort new page view favorite forked pv811 forked from: ParticleMaterialの.. albatrus_jp forked:0 favorite:4lines:92 (diff:20) tag: Papervision3D pv276 forked from: ParticleMaterialの.. oreore forked:0 favorite:4lines:94 (diff:5)