# 简单模拟

从看一个非常简单的模拟来开始。 Qt Quick让粒子渲染的入门变得非常简单。 为此,需要如下:

  • 一个ParticleSystem(粒子系统),将所有元素绑定到模拟
  • 一个Emitter(发射器),将粒子发射到系统中
  • 一个ParticlePainter(粒子绘制器)的派生元素,用于可视化粒子
import QtQuick
import QtQuick.Particles

Rectangle {
    id: root
    width: 480; height: 160
    color: "#1f1f1f"

    ParticleSystem {
        id: particleSystem
    }

    Emitter {
        id: emitter
        anchors.centerIn: parent
        width: 160; height: 80
        system: particleSystem
        emitRate: 10
        lifeSpan: 1000
        lifeSpanVariation: 500
        size: 16
        endSize: 32
        Tracer { color: 'green' }
    }

    ImageParticle {
        source: "assets/particle.png"
        system: particleSystem
    }
}

该示例的结果将如下所示:

image

将一个80 x 80像素的黑色矩形作为根元素,当成背景。始终要做的第一步是,在根元素中声明了一个ParticleSystem(粒子系统),系统会将所有其他元素绑定在一起。通常,需要声明的下一个元素是Emitter(发射器),它根据边界框和基本参数定义发射区域,将它们应用于发射粒子。发射器使用system属性绑定到系统。

本示例中,发射器在发射器区域每秒发射10个粒子(emitRate: 10),每个粒子的寿命为1000毫秒(lifeSpan : 1000),被发射粒子之间的寿命变化为500毫秒(lifeSpanVariation: 500)。一个粒子的尺寸应为16px (size: 16),在其生命结束时应为32px (endSize: 32)。
译者笔记:lifeSpanVariation是粒子生命长度变化的数字,例如存在lifeSpan : 1000lifeSpanVariation: 100,则粒子的寿命长度范围在[1000 - 100 , 1000 + 100]

绿色边框矩形是一个示踪元素,用于显示发射器的几何形状。这可视化了当粒子在发射器边界框内发射时,渲染不限于发射器边界框。渲染位置取决于粒子的寿命和方向。当我们研究如何改变粒子的方向时,这将变得更加清晰。

发射器发射逻辑粒子,使用ParticlePainter可视化逻辑粒子。在此示例中,使用“ImageParticle,它将图像URL作为源属性。图像粒子还具有其他几个控制平均粒子外观的属性。

  • emitRate(发射率): 每秒发射的粒子数(默认每秒10个)
  • lifeSpan(生命跨度): 粒子将要持续的时间毫秒数(默认是1000ms)
  • size(尺寸), endSize(最终尺寸): 粒子在它们的生命开始和结束时的大小(默认是16px)

更改这些属性可以极大地影响结果

Emitter {
    id: emitter
    anchors.centerIn: parent
    width: 20; height: 20
    system: particleSystem
    emitRate: 40
    lifeSpan: 2000
    lifeSpanVariation: 500
    size: 64
    sizeVariation: 32
    Tracer { color: 'green' }
}

除了将发射率增加到40并将寿命增加到2秒外,尺寸从64px开始在结束时减少到32px。

image

增加endSize甚至会导致或多或少的白色背景。 另请注意,当粒子仅在发射器定义的区域内发射时,渲染不受发射区域的限制。

最后更新: 12/26/2021, 12:45:25 AM