准备

  IDE:Visual Studio Code

  Language:JavaScript / ECMAScript 6+

  GitHub:Natural2D.JS

  本文主要讲述 Particles - Walker 示例的实现步骤,不涉及具体的代码细节。

第一节 粒子概述

  粒子是粒子系统最基本的组成元素。

  粒子有哪些属性

  颜色(Color):渲染颜色

  位置(Location):渲染位置

  年龄(Age):当前存活帧数

  大小(Size):当前渲染直径

  最大年龄(MaxAge):粒子的最大存活帧数

  最大大小(MaxSize):粒子的最大渲染直径

  属性如何变化?它们之间有什么关系

  年龄逐帧增大

  位置定向移动

  大小与年龄成正比关系:Size = MaxSize * (Age / MaxAge)

  粒子什么时候死亡?死亡后如何处理

  当年龄超过最大年龄时认为它已经死亡

  死亡后的一种处理方法是立即回收占用的资源

  另一种是重置粒子的状态,即当作一个新的粒子

  如何保留历史移动轨迹

  在每帧绘制前蒙一层颜色不透明的矩形

  若矩形的颜色随机渐变,会产生更好看的动态变化效果

图1-1 定向移动

第二节 力学运动

  经典力学描述了物体的宏观运动形式。

  需要扩展哪些属性

  密度(Density):粒子的密度(可选的)

  质量(Mass):粒子的质量

  速度(Velocity):当前速度

  加速度(Acceleration):当前加速度

  速度上限(VelocityUpon):最大运动速度

  属性之间的关系

  2D物体质量与面积成正比,即 Mass = Density * (Size / 2) * (Size / 2) * PI

  3D物体质量与体积成正比,即 Mass = Density * (Size / 2) * (Size / 2) * (Size / 2) *(4 / 3) * PI

  若要简化计算,可以不考虑常量值,有时候我们无需和现实世界保持一致

  粒子的牛顿万有引力运动

  物体加速度的大小跟作用力成正比,跟物体的质量成反比,即 Acceleration = Force / Mass

  引力大小与它们质量的乘积成正比与它们距离的平方成反比,即 Force = G * Mass1 * Mass2 / (Distance * Distance)

图2-1 引力运动

第三节 直线连线

  粒子的渲染方式不是一成不变的。

  有哪些简单的渲染方式?

  绘制空心、实体圆形

  绘制空心、实体矩形

  绘制贴图

  绘制连线 (下图的方式)

图3-1 粒子连线

第四节 树形拓扑

  树形是自然界中常见的一种拓扑结构。

  如何以父子层次结构组织粒子

  子节点继承父节点的颜色

  子节点初始位置相对父节点偏移适当距离

  子节点只承受与父节点之间的牛顿万有引力  

图4-1 树形拓扑

第五节 中心旋转

  一个图形绕着一个定点旋转一定的角度得到另一个图形的变化叫做旋转。

  如何实现好看的旋转效果

  设置画布中心点为旋转中心,然后旋转画布

  若每帧的旋转角度随机渐变,可产生不同的动态效果

  下方示例图片的随机效果

  画布背景颜色随机渐变

  画布旋转角度随机渐变

  粒子父子节点相对位置的旋转角度渐变

  粒子父子节点相对位置的距离系数渐变

图5-1 效果图一

图5-2 效果图二

图5-3 效果图三

附录

  Demo:Particles - Walker

  GitHub:Natural2D.JS

  上一篇:粒子系统(一):从零开始画一棵树

粒子系统(二):Canvas绘制精美图案的更多相关文章

  1. canvas一周一练 -- canvas绘制马尾图案 (5)

    运行效果: <!DOCTYPE html> <html> <head> </head> <body> <canvas id=" ...

  2. canvas——绘制解锁图案

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. java-js知识库之二——canvas绘制炫彩气泡

    现在使用canvas绘制气泡,虽说很多人都已经实现过了,可能方法都大同小异,但自己写和看别人写完全是两码事,自己会写的才是自己的,话不多说,直接上代码. 先来一张效果图: 现在上代码,代码有详细的注释 ...

  4. 使用 HTML5 canvas 绘制精美的图形

    HTML5 是一个新兴标准,它正在以越来越快的速度替代久经考验的 HTML4.HTML5 是一个 W3C “工作草案” — 意味着它仍然处于开发阶段 — 它包含丰富的元素和属性,它们都支持现行的 HT ...

  5. HTML5 canvas 绘制精美的图形

    HTML5 是一个新兴标准,它正在以越来越快的速度替代久经考验的 HTML4.HTML5 是一个 W3C “工作草案” — 意味着它仍然处于开发阶段 — 它包含丰富的元素和属性,它们都支持现行的 HT ...

  6. 小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像)

    小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像) 微信小程序生成特色头像,海报等是比较常见的.下面我来介绍下实现该类小程序的过程. 首先选择前端来通过 canvas 绘制.这样比较节 ...

  7. canvas基础入门(二)绘制线条、三角形、七巧板

    复杂的内容都是有简单的线条结合而成的,想要绘制出复杂好看的内容先从画直线开始 canvas绘制直线先认识几个函数 beginPath():开始一条路径,或重置当前的路径 moveTo(x,y):用于规 ...

  8. 应用canvas绘制动态时钟--每秒自动动态更新时间

    使用canvas绘制时钟 下文是部分代码,完整代码参照:https://github.com/lemoncool/canvas-clock,可直接下载. 首先看一下效果图:每隔一秒会动态更新时间 一. ...

  9. 如何写成高性能的代码(一):巧用Canvas绘制电子表格

    一.什么是Canvas Canvas是HTML5的标签,是HTML5的一种新特性,又称画板.顾名思义,我们可以将其理解为一块画布,支持在上面绘制矩形.圆形等图形或logo等. 需要注意的是,与其他标签 ...

随机推荐

  1. vue项目架构

    一.工程说明: 1.代码git仓库地址:git@gitlab.*****.git. 2.目录结构: 1>.index.html 为build打包发布网页入口: 2>.lieda文件夹代码项 ...

  2. java反射使用及性能比较

    环境准备 package com.lilei.pack09; public class Logger { public void show(){ System.out.println("he ...

  3. 原生拖拽js利用localstorage保存位置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付接口及同步跳转及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET ...

  5. Java获取键盘输入

    方法一:在控制台接收字符串并将其打印出来,使用BufferedReader和InputStreamReader类实现 import java.io.*; public class Demo { pub ...

  6. 研华ADAM 6000系列型号枚举值

    public enum Adam6000Type    {        Non = 0,        Adam6015 = 6015,        Adam6017 = 6017,        ...

  7. 深入理解Session与Cookie(一)

    Session,Cookie简介: Session和Cookie的作用都是为了保持用户与后端服务器的交互状态,但是各自都有缺陷: Cookie: 随着Cookie的个数的增多和访问量的增加,它占用的网 ...

  8. RabbitMQ第四篇:Spring集成RabbitMQ

    前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency> ...

  9. 【数据库】mysql数据库索引

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...

  10. 记录一则ASM实例阻塞,rbal进程异常的案例

    1.故障现象描述 2.确认故障现象 3.排查ASM层面 4.解决问题 1.故障现象描述 环境:AIX 7.1 + Standalone Oracle 11.2.0.4 现象:客户反映某11g版本的AD ...