Proton

Javascript particle animation library

README



npm version dm travis issues open issues open license:MIT

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/. The3D version of the proton engine is here https://github.com/drawcall/three.proton/

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, and pixi.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 renderer
  - DomRenderer - 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-js to proton-engine


  1. ``` sh
  2. npm install proton-engine --save
  3. ```

  1. ``` js
  2. import Proton from "proton-engine";
  3. ```

OR include in html


  1. ``` html
  2. <script type="text/javascript" src="js/proton.min.js"></script>
  3. ```

Usage


Proton is very simple to use, a dozen lines of code can create a particle animation.

  1. ``` js
  2. const proton = new Proton();
  3. const emitter = new Proton.Emitter();

  4. //set Rate
  5. emitter.rate = new Proton.Rate(Proton.getSpan(10, 20), 0.1);

  6. //add Initialize
  7. emitter.addInitialize(new Proton.Radius(1, 12));
  8. emitter.addInitialize(new Proton.Life(2, 4));
  9. emitter.addInitialize(new Proton.Velocity(3, Proton.getSpan(0, 360), "polar"));

  10. //add Behaviour
  11. emitter.addBehaviour(new Proton.Color("ff0000", "random"));
  12. emitter.addBehaviour(new Proton.Alpha(1, 0));

  13. //set emitter position
  14. emitter.p.x = canvas.width / 2;
  15. emitter.p.y = canvas.height / 2;
  16. emitter.emit(5);

  17. //add emitter to the proton
  18. proton.addEmitter(emitter);

  19. // add canvas renderer
  20. const renderer = new Proton.CanvasRenderer(canvas);
  21. proton.addRenderer(renderer);
  22. ```

Remarks


- Proton.Span (or Proton.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.preEmit method to pre-render the scene.

- Use Proton.Body and Proton.Color at the same time. I suggest you'd better use the WebGLRenderer not CanvasRenderer.

- Added Proton.Cyclone behavior, you can make vortex effects with Cyclone. Demo please check here.

- proton.fps In most cases, you don't need to set this property. 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:

  1. ``` js
  2. git clone git://github.com/drawcall/Proton.git

  3. ...
  4. npm install
  5. npm run build
  6. ```

And run example

  1. ``` js
  2. npm start
  3. //vist http://localhost:3001/example/
  4. ```

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