惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LINUX DO - 最新话题
Recorded Future
Recorded Future
月光博客
月光博客
博客园 - 【当耐特】
博客园 - 叶小钗
宝玉的分享
宝玉的分享
量子位
雷峰网
雷峰网
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
Vercel News
Vercel News
L
LangChain Blog
B
Blog
Y
Y Combinator Blog
爱范儿
爱范儿
GbyAI
GbyAI
S
Security @ Cisco Blogs
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - Franky
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
Scott Helme
Scott Helme
I
Intezer
T
The Exploit Database - CXSecurity.com
MyScale Blog
MyScale Blog
T
Tor Project blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
N
News and Events Feed by Topic
大猫的无限游戏
大猫的无限游戏
F
Fortinet All Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
Security Affairs
Cyberwarzone
Cyberwarzone
PCI Perspectives
PCI Perspectives
小众软件
小众软件
D
DataBreaches.Net
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Know Your Adversary
Know Your Adversary
Forbes - Security
Forbes - Security
S
Securelist
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
The Last Watchdog
The Last Watchdog

博客园 - ExperDot

用 AI Coding 工具生成 60 万字奇幻世界设定的实践记录 追求极致体验:AI 聊天应用的 20 个功能要点 探索性 AI 聊天应用:交叉分析表 3种方法让大语言模型提取任意文档中的知识点 AI 聊天应用的 10 条高级需求 Web安全入门(一):Web安全是什么? ASP.NET Core文件压缩最佳实践 什么是软件开发? Web应用实例:音频可视化 图像识别:微信跳一跳机器人 粒子系统(一):从零开始画一颗树 Unity3D对弈游戏:狼吃羊游戏 ExperDot的博客目录导航 编程模拟自然(九):元胞自动机 自动绘图AI:程序如何画出动漫美少女 UWP简单示例(三):快速开发2D游戏引擎 UWP简单示例(二):快速开始你的3D编程 UWP简单示例(一):快速合成音乐MV AR创意分享:儿童涂鸦遇上程序绘图
粒子系统(二):绘制精美几何图案
ExperDot · 2018-04-10 · via 博客园 - ExperDot

准备

  IDE:Visual Studio Code

  Language:TypeScript

  GitHub:general-engine

  本文主要讲述 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:general-engine

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