Proton
Javascript particle animation library
Install / Use
/learn @drawcall/ProtonREADME
<div align="center"> <a href='https://www.npmjs.com/package/proton-engine'> <img src='https://badge.fury.io/js/proton-engine.svg' alt='npm version' height='18'> </a> <a href="https://npmjs.org/package/proton-engine"> <img title="NPM downloads" src="http://img.shields.io/npm/dm/proton-engine.svg" alt='dm' height='18'> </a> <a href='https://travis-ci.com/drawcall/Proton'> <img src='https://travis-ci.com/drawcall/Proton.svg?branch=master' alt='travis' height='18'> </a> <a href='https://github.com/drawcall/Proton/issues'> <img src='https://img.shields.io/github/issues/drawcall/Proton.svg' alt='issues open' height='18'> </a> <a href='https://cdnjs.com/libraries/proton-engine'> <img src='https://img.shields.io/cdnjs/v/proton-engine' alt='issues open' height='18'> </a> <a href='#'> <img src='https://img.shields.io/npm/l/proton-engine.svg' alt='license:MIT' height='18'> </a> </div>
Proton is a lightweight and powerful Javascript particle animation library. Use it to easily create a variety of cool particle effects.
Check out examples at http://drawcall.github.io/Proton/. The 3D version of the proton engine is here here. An available react version is here.
For guidance on how to use Proton with TypeScript, please refer to https://github.com/drawcall/Proton/issues/109
Features
- Easy to use It takes only a dozen lines of code to create a particle animation effect.
- Multiple effects Use Proton to create flames, fireworks, bullets, explosions, and more.
- Any scene You can use it in frameworks such as
react,vue,angular, andpixi.js,Phaser, etc. - Efficient rendering Its rendering efficiency is very high, you can render tens of thousands of particles in the page.
- Simulated physics Proton can simulate various physical properties including gravity and Brownian motion.
- Several renderers Proton provides a variety of renderers, of course you can also customize your own renderer
CanvasRenderer- Proton's canvas rendererDomRenderer- Proton's dom renderer, supporting hardware acceleration.WebGLRenderer- Proton's webgl renderer.PixelRenderer- Proton's pixel renderer, It can implement pixel animation.EaselRenderer- Easeljs proton renderer.EaselRenderer- Pixi.js proton renderer.CustomRenderer- Use a custom renderer that can be applied to any scene.
Documentation
See detailed documentation please visit https://projects.jpeer.at/proton/. Thank you very much @matsu7089 for writing a good tutorial.
Installation
Install using npm
Note: NPM package-name has been changed from
proton-jstoproton-engine
npm install proton-engine --save
import Proton from "proton-engine";
OR include in html
<script type="text/javascript" src="js/proton.web.min.js"></script>
Usage
Proton is very simple to use, a dozen lines of code can create a particle animation.
import Proton, {
Emitter,
Rate,
Span,
Radius,
Life,
Velocity,
Color,
Alpha,
CanvasRenderer,
} from "proton-engine";
const proton = new Proton();
const emitter = new Emitter();
//set Rate
emitter.rate = new Rate(new Span(10, 20), 0.1);
//add Initialize
emitter.addInitialize(new Radius(1, 12));
emitter.addInitialize(new Life(2, 4));
emitter.addInitialize(new Velocity(3, new Span(0, 360), "polar"));
//add Behaviour
emitter.addBehaviour(new Color("ff0000", "random"));
emitter.addBehaviour(new Alpha(1, 0));
//set emitter position
emitter.p.x = canvas.width / 2;
emitter.p.y = canvas.height / 2;
emitter.emit(5);
//add emitter to the proton
proton.addEmitter(emitter);
// add canvas renderer
const renderer = new CanvasRenderer(canvas);
proton.addRenderer(renderer);
Remarks
-
Proton.Span(orProton.getSpan) is a very important concept of the Proton engine, it's everywhere. If you understand its usage, you can create almost any desired effect! -
If you want to create wind, rain, or snow, etc, you can use the
emitter.preEmitmethod to pre-render the scene. -
Use
Proton.BodyandProton.Colorat the same time. I suggest you'd better use theWebGLRenderernotCanvasRenderer. -
Added
Proton.Cyclonebehavior, you can make vortex effects with Cyclone. Demo please check here. -
proton.fpsIn modern browsers, if the FPS exceeds 60 and you want to maintain a stable 60 FPS, you need to setproton.fps = 60. You can set this property when the game engine has fixed fps or some browsers have a higher refresh rate. -
Use Euler integration calculation is more accurate (default false)
Proton.USE_CLOCK = false or true;.
Proton has now been upgraded to the v4 version. Performance has been greatly improved and api also has some improvements. For more details, please check here.
Building
node is a dependency, use terminal to install it with:
git clone git://github.com/drawcall/Proton.git
...
npm install
npm run build
And run example
npm start
//vist http://localhost:3001/example/
Changelog
Detailed changes for each release are documented in the release notes.
License
Proton is released under the MIT License. http://www.opensource.org/licenses/mit-license
