particulate-js, 粒子物理微型图书馆

分享于 

5分钟阅读

GitHub

  繁體 雙語
Particle physics micro library
  • 源代码名称:particulate-js
  • 源代码网址:http://www.github.com/jpweeks/particulate-js
  • particulate-js源代码文档
  • particulate-js源代码下载
  • Git URL:
    git://www.github.com/jpweeks/particulate-js.git
    Git Clone代码到本地:
    git clone http://www.github.com/jpweeks/particulate-js
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/jpweeks/particulate-js
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Particulate.js

    StabilityBuild StatusTest CoverageCode ClimateInline DocsFile Size

    Particulate.js 是一个简单。可以扩展。快速。稳定的一个JavaScript粒子物理微型库,能够实时运行数千颗粒子。 核心系统是由 Thomas Jakobsen 在先进性物理中描述的。

    网站 - 示例-文档-测试工具。

    用法

    库为定义具有许多内部粒子约束和全局作用力的粒子系统提供了接口。 虽然不需要特定的渲染方案,但粒子位置和状态的内部管理被设计为易于与渲染管道集成。

    安装

    安装 npm npm或者 Bower,或者下载内置的软件包。

    npm install particulate --save
    bower install particulate --save

    然后将库包括为 ES6.AMD或者commonJS模块,或者浏览器全局。

    import { ParticleSystem, DistanceConstraint } from'particulate'
    define(['particulate'], function (Particulate) { /*.. . */ });
    var Particulate =require('particulate');
    var Particulate =window.Particulate;

    集成渲染器

    下面是链示例的简化版本,使用 Three.js 进行渲染:

    //.. ................................................// Define particle chain system//var particleCount =5;var relaxIterations =2;var system =Particulate.ParticleSystem.create(particleCount, relaxIterations);var dist =Particulate.DistanceConstraint.create(10, [0, 1, 1, 2, 2, 3, 3, 4]);var pin =Particulate.PointConstraint.create([0, 0, 0], 0);var gravity =Particulate.DirectionalForce.create([0, -0.05, 0]);system.addConstraint(dist);system.addPinConstraint(pin);system.addForce(gravity);//.. ................................................// Integrate with Three.js//var scene =newTHREE.Scene();// Use system positions buffervar vertices =newTHREE.BufferAttribute(system.positions, 3);// Use distance constraint indicesvar indices =newTHREE.BufferAttribute(newUint16Array(dist.indices));// Particlesvar dotsGeom =newTHREE.BufferGeometry();dotsGeom.addAttribute('position', vertices);var dots =newTHREE.PointCloud(dotsGeom,
     newTHREE.PointCloudMaterial({ size :2 }));// Connectionsvar linesGeom =newTHREE.BufferGeometry();linesGeom.addAttribute('position', vertices);linesGeom.addAttribute('index', indices);var lines =newTHREE.Line(linesGeom,
     newTHREE.LineBasicMaterial());scene.add(dots);scene.add(lines);functionanimate() {
     system.tick(1);
     dotsGeom.attributes.position.needsUpdate=true; // Flag to update WebGL bufferrender();
    }

    插件开发

    Grunt 用于构建和测试库。 每个依赖项都应该有一个路径:

    which node npm grunt

    解决开发依赖项之后,运行:

    npm install

    测试

    使用 grunt server 运行开发服务器。 访问 localhost:8000/examples/ 以查看示例或者 localhost:8000/test/ 以运行测试。 当任何文件匹配 /src/**/* 时,库的开发版本将自动重新生成。

    测试也可以通过 grunt test 从 命令行 运行。

    插件生成

    运行 grunt build 将生成完全注释的开发版本库以及 /dist 中的缩小生产版本。

    文档

    源代码使用YUIDoc语法文档,并由运行 grunt yuidoc 编译。

    没有正式的风格指南,但请保持现有的编码风格。 任何新的或者更改的功能都应该记录并由单元测试覆盖。


    PAR  micr  物理  Particle