如何使用Particle System制作星空效果

663 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第 2 天,点击查看活动详情


📒博客首页:何名取 的个人主页 - 文章 - 掘金 (juejin.cn)
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
❤️ 期待一起交流!
🙏作者水平很有限,如果发现错误,求告知,多谢!
🌺有问题可私信交流!!!


看不到星星的夜里,我用QML送你一片星空 #掘金文章#

🌵前言

书接上回,我用QML的粒子系统制作了一片闪亮的星空,不知道大家觉得如何呢?接下来要对粒子系统进行详细的学习。

🎄QtQuick.Particles模块

要使用QtQuick.Particles模块,首先要进行导入。我使用的Qt版本是6.2的,所以QtQuick.Particles模块的版本是2.2。第一个数字代表的是Qt的大版本,Qt5对应的是2.0,Qt6对应的是2.2。第二个数字代表的是小版本Qt5.15对应的是2.0,而Qt6.2对应的是2.2。

import QtQuick.Particles 2.2

粒子系统包含四种主要类型的QML类型:ParticleSystem,渲染器,发射器和影响器。

🌲ParticleSystem

ParticleSystem类型将所有其他类型绑定在一起,并管理共享时间线。渲染器,发射器和影响器必须都有相同的ParticleSystem,以便能够相互作用。

🍀逻辑粒子

所有粒子系统类型都作用于“逻辑粒子”。每个粒子在粒子系统中都有一个逻辑表示,这就是粒子类型的作用所在。并非每个逻辑粒子都需要可视化,有些逻辑粒子可能会导致在屏幕上绘制多个可视粒子。

🌳发射器

发射器将逻辑粒子发射到系统中。这些粒子有自己的轨迹和寿命,但无法可视化。这些粒子从发射器的位置发射出来。

🌴渲染器

渲染器将逻辑粒子可视化。ParticlePainter的基本类型不绘制任何东西,具体的渲染工作由它的几个子类型完成。ImageParticle在粒子的位置渲染一张图像。ItemParticle允许您使用任意QML委托可视化逻辑粒子。ModelParticle也是类似的,但是在委托之间协调模型数据的方式与视图类类似。

☘️影响器

影响器是粒子系统的可选组件,可以对模拟进行各种操作,如改变粒子的轨迹或在模拟中提前结束粒子的生命。由于性能原因,建议不要在大体积粒子系统中使用affector。

🌱代码分析

1    ParticleSystem {
2        anchors.fill: parent
3        ImageParticle {
4            groups: ["stars"]
5            anchors.fill: parent
6            source: "star.png"
7        }
8        Emitter {
9             group: "stars"
10            emitRate: 80
11            lifeSpan: 2400
12            size: 24
13            sizeVariation: 8
14            anchors.fill: parent
15        }
16    }

代码段第一行使用了ParticleSystem创建粒子系统,第三行ImageParticle将粒子形态设置为图片star.png中的星星形态,第八行代码Emitter创建一个发射器,设置了发射速率、粒子生命周期、粒子大小和粒子大小变化速率。

🌿总结

QML粒子系统的使用有如下次序:

  • 构建ParticleSystem作为基础
  • 构建渲染器,比如图片渲染器ImageParticle
  • 构建发射器Emitter 以上这三个部分是组成一个完整的粒子系统所必须的,除此之外,还可以使用影响器来进行控制。

总体来说QML粒子系统使用起来并不困难,当然本次使用比较简陋,今后会对粒子系统进行深入研究,我会继续创作出更多炫酷特效供大家欣赏。

感谢❤️💛💚💙💜💗