HTML5粒子编辑器

写在前面

大家阅读此文之前,可以先看一篇MiloYip的文章:用JavaScript玩转游戏物理(一)运动学模拟与粒子系统,看完之后再看此文,更加容易理解。

MiloYip使用的粒子是canvas中绘制的圆,还有一些粒子效果是基于 像素级别的,如:火焰字 ,但是使用像素的计算成本太大,因为需要的粒子数量太多,甚至要配合一些nosie算法,如(perlin nosie),计算量太大。

所以一般会先设计好粒子的纹理(每个纹理假设是32*32,一个粒子就包含了九百多个像素了),这样需要的粒子个数不多,计算量也不大,管理粒子的成本也不高(对粒子增删改查)。

canvas globalCompositeOperation

粒子系统在什么时候最漂亮?晚上!所以在绘制纹理的时候,需要设置globalCompositeOperation 的值为lighter。其作用是:在图形重叠的地方,颜色由两种颜色值的加值来决定。

globalCompositeOperation 还有非常多的属性可以设置,详情见:w3school。

粒子系统

粒子系统的本质其实就是粒子从发射到消失的过程。所以,可以立刻想到一些配置项目:

1.发射速度(每个粒子的速度、方向、角度范围)

2.发射区域(定点发射,还是在某个区域发射)

3.重力场(你是在月球上发射,还是在地球上发射,还是太空的失重状态下)

4.粒子纹理(你发射的是激光、还是五角星、还是烟雾)

5.纹理滤镜(激光是红色还是蓝色)

6.发射频率(你是一秒发射一次、还是一秒发射100次)

每个参数的变化都会导致呈现效果截然不同。

数学与物理

比如运动方向的独立性,2维空间可以使用new Vector2(1,2)来描绘速度,把速度拆分成x和y方向,1代表x轴方向的速度,2代表y轴方向的速度

同样,重力场也可以拆封成两个方向。如new Vector2(0,0.98),0代表x轴方向的速度,0.98代表y轴方向的速度

简单的积分思想:(如:速度是加速度在时间上的累加,路程是速度在时间上的累加等等)。

当然,听上去好像要会微积分才能写粒子系统似的,但其实微积分根本体现不再程序里面,因为程序/游戏里面有core loop,loop里面干的事情就是积分… 比如:

tick: function () {
    this.velocity.add(this.acceleration);
    this.position.add(this.velocity.multiply(0.1));
    this.rotatingSpeed+=this.rotatingAcceleration;
    this.rotation += this.rotatingSpeed;
    this.alpha -= this.hideSpeed;
}

所以有这个思想就行,根本不需要会微积分 =  =!

Canvas UI小控件

整个编辑器的所有控件都是canvas写的,感觉就三个词:简单、粗暴、直接。使用起来也非常方便。如,下面这个控制发射范围、粒子、方向的控件:

使用控件的代码:

var dirCtrl=new PE.CircleAdjust({
    min: 0,
    max: 50,
    rotation: -30,
    value: 10,
    angleRange:50,
    change: function (value,angle) {
        ps.setAngle(angle);
        ps.setSpeed(value);
    },
    renderTo: document.getElementById("emitAngleCtrl")

});

当然这里不是否定dom写控件,而是,有的时候canvas写UI更具备优势。还有一些场景是dom写控件无法实现的。(比如全局的滤镜效果、波浪效果等,也就是跟像素有关,dom相对较弱)

其他

粒子编辑器,还使用了一些HTML5特性,比如拖拽、FileReader、和blob下载功能。如,基于blob封装了一个工具函数用于下载文件:

Util.downloadFile=function(code, fileName) {
    if (window.URL.createObjectURL) {
        var fileParts = [code];
        var bb = new Blob(fileParts, {
            type: "text/plain"
        });
        var dnlnk = window.URL.createObjectURL(bb);
        var dlLink = document.createElement("a");
        dlLink.setAttribute("href", dnlnk);
        dlLink.setAttribute("download", fileName);
        dlLink.click();
    }
}

传送门

demo: http://alloyteam.github.io/ParticleEditor/

github: https://github.com/AlloyTeam/ParticleEditor

ps:编辑器使用小测验:你能使用demo的粒子编辑器实现下面那只企鹅效果吗?:)

时间: 2024-10-02 20:16:10

HTML5粒子编辑器的相关文章

cocos2dx 免费粒子编辑器比较选择

做Cocos2dx项目的时候用到粒子,cocosstudio中没有粒子编辑器,想找一个粒子编辑器使用,于是网上狂搜一番,发现了好多免费的编辑器,发现了记得很早的时候用过的一款编辑器免费的粒子编辑器,愉快的下载下来赶紧打开编辑器开始了一番属性编辑,终于编辑出了想要的效果,保存加入游戏中,发现游戏 直接崩溃,试了好几次不行, 猜想估计是版本太老,放弃了: 继续找又发现一个在线的粒子编辑器,又是一番编辑->保存->加入游戏,结果没崩溃,但是跟编辑器中的效果差别太大:继续酷毙的找,好多都是不理想, 最

7款让人惊叹的HTML5粒子动画特效

HTML5的很大一个优势就是可以更加便捷高效地制作网页粒子动画特效,特别是Canvas特性,可以实现在网页上绘制任何图形和动画.本文要分享7款让人惊叹的HTML5粒子动画特效,这些粒子特效都提供源代码下载供大家学习. 1.HTML5 Canvas粒子模拟效果 这是一款利用HTML5 Canvas模拟出来的30000个粒子动画,当你用鼠标在canvas画布上移动时,鼠标周围的一些粒子就会跟着你移动,并形成一定的图案,就像你在玩沙画一样,效果非常不错.这里,我们应用了一些HTML5的特性,让这个粒子

简直要逆天!超炫的 HTML5 粒子效果进度条

我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loading 效果,即使让我多等一会也无妨:)你呢? 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 插件下载     效果演示 您可能感兴趣的相关文章 Web 开发中很实用的10个效果[附源码下载] 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 4

10.粒子编辑器ParticleEditor中使用自己的纹理的方法。

ParticleEditor这款粒子编辑器还是挺好用的,下载地址:https://github.com/fjz13/Cocos2d-x-ParticleEditor-for-Windows 要使用自己的纹理,还是需要一些步骤的: 第一步: 将资源文件放置于ParticleEditor文件夹下. 第二步: 如上图,在纹理渲染中的TexturePath属性中,输入图片纹理的名字,并将TextureImageData属性值置空. 第三步: 如上图把编辑器的IsSaveTextureImageData的

Cocos2d-x 粒子编辑器 Particle Studio 争做 Windows Particle Designer 源码

1.Particle Studio介绍 很早发现一款粒子编辑器叫Particle Designer,不知道为什么它没有Windows版本.所以我就在Windows下基于Qt做了一个粒子编辑器.之前有款叫Particle Builder也做得不错,也参考了下它的界面设计.名称想了很久,就叫Particle Studio吧.目前只支持Cocos2d-x. Particle Studio 比较有特色的功能: 1.完全免费使用全部功能! 2.拥有在线的粒子库.还在苦苦制作粒子?赶快来看下是否已经有你想要

cocos2d-js 免安装在线版 粒子编辑器 particle editor particle builder 兼容pex和plist

http://onebyonedesign.com/flash/particleeditor/ 这个原来是为flash starling设计的粒子系统编辑器,但实际上,还是能兼容cocos2d的. 只需要选中Export按钮下方的“include .plist file”. 在Cocos2d中使用更简单,只需要简单2句代码. var emitter = new cc.ParticleSystem("res/particle.plist"); this.addChild(emitter)

使用Egret粒子编辑器实现烟雾效果

今天这篇文章主要是记录我自己使用Egret Feather做的一个烟雾效果,分享给初学Egret的小伙伴. Egret Feather下载地址: https://www.egret.com/products/others.html#egret-featherEgret Feather使用手册:http://developer.egret.com/cn/github/egret-docs/tools/Feather/manual/index.html 首先上面的状态栏,见名知意,没什么介绍的.要提

Cocos2d-x在线粒子编辑器

自由.其效果是非常赞,可以手动调节和.出口可以上网plist档!. 住址:http://particle2dx.com/

10款web前端值得学习的 HTML5 效果附源码

1.jQuery右侧Tab选项卡的焦点图插件 这是一款基于jQuery的焦点图插件,和之前介绍的jQuery焦点图插件类似,它以淡入淡出的动画方式来切换图片,该焦点图插件的特点是右侧有一排Tab选项卡,点击相应选项卡后即可切换对应的图片,应该说这款jQuery焦点图插件还是非常实用的. 在线演示 源码下载 2.超炫 HTML5 粒子效果进度条 我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loa