Toggle navigation
Sign Up
Log In
Explore
Works
Folders
Tools
Collections
Artists
Groups
Groups
Topics
Tasks
Tasks
Jobs
Teams
Jobs
Recommendation
More Effects...
ActionScript
package { import flash.geom.Matrix3D; import flash.geom.Rectangle; import flash.geom.Vector3D; import away3d.animators.ParticleAnimationSet; import away3d.animators.ParticleAnimator; import away3d.animators.data.ParticleProperties; import away3d.animators.data.ParticlePropertiesMode; import away3d.animators.nodes.ParticleAccelerationNode; import away3d.animators.nodes.ParticleBezierCurveNode; import away3d.animators.nodes.ParticleBillboardNode; import away3d.animators.nodes.ParticleOrbitNode; import away3d.animators.nodes.ParticleOscillatorNode; import away3d.animators.nodes.ParticlePositionNode; import away3d.animators.nodes.ParticleRotateToHeadingNode; import away3d.animators.nodes.ParticleRotationalVelocityNode; import away3d.animators.nodes.ParticleTimeNode; import away3d.animators.nodes.ParticleVelocityNode; import away3d.core.base.Geometry; import away3d.entities.Mesh; import away3d.materials.TextureMaterial; import away3d.materials.lightpickers.StaticLightPicker; import away3d.primitives.PlaneGeometry; import away3d.tools.helpers.ParticleGeometryHelper; import away3d.tools.helpers.data.ParticleGeometryTransform; import away3d.utils.Cast; public class Rainleaves { private var particleAnimator:ParticleAnimator private var particleMesh:Mesh; private var lipc:StaticLightPicker; private var _alpha:Number; public var x:Number; public var y:Number; public var z:Number; public var scale:Number; public var Num:Number; private var he:Number; public function Rainleaves(_num=10000,lipicker:StaticLightPicker=null,alpha=1) { _alpha=alpha; lipc=lipicker; Num=_num; x=y=z=0; scale=1; ini(); } public function start():void{//默认调用 if(particleAnimator)particleAnimator.start(); } public function stop():void{ if(particleAnimator)particleAnimator.stop(); } private function ini():void { // TODO Auto Generated method stub var geometry:Geometry = new PlaneGeometry(150,150,1,1,true,true); var geometrySet:Vector.
= new Vector.
; var transforms:Vector.
= new Vector.
(); var scale:Number; var vertexTransform:Matrix3D; var particleTransform:ParticleGeometryTransform; for (var i:int = 0; i < Num; i++) { geometrySet.push(geometry); particleTransform = new ParticleGeometryTransform(); scale = Math.random() + 1; vertexTransform = new Matrix3D(); vertexTransform.appendScale(scale, scale, scale); particleTransform.vertexTransform = vertexTransform; transforms.push(particleTransform); } var particleGeometry:Geometry = ParticleGeometryHelper.generateGeometry(geometrySet,transforms); var particleAnimationSet:ParticleAnimationSet = new ParticleAnimationSet(true, true,true); particleAnimationSet.addAnimation(new ParticleVelocityNode(ParticlePropertiesMode.GLOBAL, new Vector3D(0, -1000, 0))); particleAnimationSet.addAnimation(new ParticlePositionNode(ParticlePropertiesMode.LOCAL_STATIC)); particleAnimationSet.addAnimation(new ParticleOscillatorNode(ParticlePropertiesMode.LOCAL_STATIC)); particleAnimationSet.addAnimation(new ParticleRotationalVelocityNode(ParticlePropertiesMode.LOCAL_STATIC)); particleAnimationSet.addAnimation(new ParticleBezierCurveNode(ParticlePropertiesMode.GLOBAL,new Vector3D(0,0,2000))); particleAnimationSet.initParticleFunc = initParticleFunc; var material:TextureMaterial =new TextureMaterial(Cast.bitmapTexture(new LEAVES)); material.alphaBlending=true; material.mipmap=true; if(lipc!=null){ material.lightPicker = lipc;} material.alpha=_alpha; particleMesh = new Mesh(particleGeometry, material); particleMesh.bounds.fromSphere(new Vector3D(), 20000);//绑定体积,为了防止垃圾回收系统在可视范围清除粒子 particleAnimator = new ParticleAnimator(particleAnimationSet); particleMesh.animator = particleAnimator; particleAnimator.start(); particleAnimator.resetTime(-10000); //trace("粒子gpu系统加速"+particleAnimationSet.usesCPU) Cry.scene.addChild(particleMesh); } private function initParticleFunc(param:ParticleProperties):void { // TODO Auto Generated method stub param.startTime = Math.random()*8; param.duration = 7; param[ParticleOscillatorNode.OSCILLATOR_VECTOR3D] = new Vector3D(Math.random() * 1300 - 100, 0, Math.random() * 600 -500, Math.random() * 2 + 3); param[ParticlePositionNode.POSITION_VECTOR3D] =ProvScene(); param[ParticleRotationalVelocityNode.ROTATIONALVELOCITY_VECTOR3D] = new Vector3D(Math.random(), Math.random(), Math.random(), Math.random() * 4 + 4); param[ParticleOrbitNode.ORBIT_VECTOR3D]=new Vector3D(0,Math.random()*3000,2000); //trace("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"+param.index); } private function ProvScene():Vector3D{//设置区域 var sc:Vector3D; var _x:Number,_y:Number,_z:Number; _x=scale*(x+Math.random() * 100000 - 50000); _y=y+scale*1200; _z=scale*(z+Math.random() * 6000); sc=new Vector3D(_x,_y,_z); return sc; } }}
Join Effecthub.com
Working with Global Gaming Artists and Developers!
Login
Sign Up
Or Login with Your Email Address:
Email
Password
Remember
Or Sign Up with Your Email Address:
Your Email
This field must contain a valid email
Set Password
Password should be at least 1 character
Stay informed via email