threeJS中粒子特效

关于粒子特效的一篇文章:用JavaScript玩转游戏物http://理(一)运动学模拟与粒子系统

这里有一篇Flash与HTML 5 WebGL粒子系统性能比较的实验数据:

粒子特效demo一:

DEMO二:


在threeJS里有很多粒子特效的demos,

1、首先,可以以设置单个例子的样式,可以通过createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd)来设置一个颜色渐变的粒子。

createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd)

在experimental-webgl,上下文环境中没有,createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd)这个方法,

这个方法的作用是:创建一条放射颜色渐变

它的几个参数分别代表:

xStart,yStart:开始圆的圆心心坐标

radiusStart:开始圆的直径

xEnd,yEnd:结束圆的圆心坐标

radiusEnd:结束圆的直径

描述

    这个方法创建并返回一个新的CanvasGradient对象,该对象在两个指定圆的圆周之间放射性地插值颜色。使用返回对象的addColorStop()方法坐到这一点。要使用一个渐变来

勾勒线变或填充区域,只需要把CanvasGradient对象赋给stokeStyle属性或fillStyle属性即可。

放射性渐变的绘制方法

  使用第一个圆的圆周在偏移0处的颜色和第二个圆的圆周在偏移1处的颜色,在两个位置之间的圆上插入颜色值(红色,绿色,蓝色和alpha).

效果如:http://jsfiddle.net/naooomi/h3MXY/

http://jsfiddle.net/naooomi/E2z5e/

2、Tween.js for Smooth Animation,在threeJS的官网,你可以下载Tween.js的源代码

https://github.com/sole/tween.js

tween.js is a "super simple,fast and easy to use tweening enging" from sole.

Tweening是什么?

    wikepedia article 上说,tweening的另一种说法是插画,(即关键帧中间的动画帧)。它即时source到target之间的插值。可以看这里:

Tweening分别有以下几个效果:

Linear:无缓动效果

Quadratic:二次方的缓动

Cubic:三次方的缓动

Quartic:四次方的缓动

Quintic:五次方的缓动

Sinusoidal:正xuan正弦曲线的缓动(sin(t)

Exponential:指数曲线的缓动(2^t);

Circular:圆形曲线的缓动(sqrt(1-t^2))

Elastic:指数衰减的正弦曲线缓动

Back:超过范围的三次方缓动((s+1)*t^3 - s*t^2)

Bounce:指数衰减的反弹缓动。

每个效果部分三个缓动方式,分别是:

easeIn:从0开始加速的缓动;

easeOut:减速到0的缓动;

easeInOut:前半段从0开始加速,后半段减速到0的缓动。

中Linear是无缓动效果,没有以上效果。

现在创建一个Tween

  首先,我们设置一个position和target,position会被不停地更新,直到position的值和target的值相等。

  var position={x:0,y:300};
  var position={x:400,y:50};

  然后,我们在创建一个物体。

  var tween=new Tween.Tween(position).to(target.2000);

   注意到,后面的2000没有,它的意思是从position,到tartet需要2秒。现在tween就可以在两秒的时间里使position.x从0到400,position.y从300到50了。为了是3D的物体移动,我们需要update()。

tween.delay(500),可以实现退出500毫秒执行。

Chainiing Tweens for Animation

   通过chain(),我们可以让物体来回不停的滚动。假如,我们已经有了tweenHead 和tweenBack

 //after tweenHead,do tweenBack

tweenHead.chain(tweenBack);

//And after tweenBack, do tweenHead,so it is cycling

tweenBack.chain(tweenHead);

You can get a play with the parameters of the example or look at its annotated code.


  


    

你可能感兴趣的:(threeJS中粒子特效)