粒子系统:火焰效果

“火焰效果”教程说明了您如何使用 Qt 设计 Studio 粒子系统将火焰效果添加到场景中。

在这个教程中,您将从头创建一个项目。您可以从这里下载完成的项目。

本教程需要您了解 Qt 设计 Studio 的基础知识,请参阅入门

教程资产

要完成此教程,您需要以下资产

  • fire-sprites.png
  • fire-color-table.png

这里下载资产。

创建火焰效果

创建项目

要创建新项目

  1. 打开 Qt 设计 Studio。
  2. 在“欢迎使用”屏幕上,选择创建项目
  3. 在“预设”部分,选择 通用 > 3D
  4. 在“详细信息”部分,将名称设置为 FireParticles,并选择您想保存项目的文件夹。
  5. 选择 创建

接下来,删除项目中不需要的默认组件

  1. 在“导航器”视图中,选择 Text 然后按 Delete 键。
  2. 以相同的方式删除 cubeModel

为了更好的视觉效果,设置背景颜色为黑色

  • 在“导航器”视图中,选择 Rectangle 并在 属性 中,将 填充颜色 设置为 #000000。

向场景添加粒子系统

要添加粒子系统,您首先需要将 QtQuick3D.Particles3D 模块导入到项目中

  1. 在“组件”视图中,选择
  2. 查找 QtQuick3D.Particles3D,并选择它将其添加到您的项目中。

在这个项目中,您使用一个动态精灵来模拟火焰。为此,请使用 Animated Sprite 粒子系统模板

  • 组件 > Qt Quick 3D 粒子系统模板 中,拖拽一个 Animated Sprite 组件 [1] 到 场景导航器 中。

现在您已经设置了粒子系统。要预览它,请选择 Alt + P。您也可以通过使用 粒子编辑器 工具在 3D 视图中预览粒子系统。

添加精灵和精灵动画

在这个项目中,您使用一张包含 3 个精灵的精灵表。精灵表是一个包含多个精灵且按网格排列的单个图像文件。您使用这些精灵创建一个循环动画,以增加火焰运动的多样性。

首先,导入您在这个教程开头下载的精灵表(fire-sprites.png)并用于火焰。

  1. 资产 视图中,选择
  2. 添加资产 对话框中,找到并选择 fire-sprites.png

接下来,将精灵表添加到粒子系统中,并创建动画

  1. 资产 视图中,将 fire-sprites.png 拖拽到 导航器 视图中的 animatedTexture

  2. 导航器 视图中,选择 animatedSequence,然后在 属性 视图中设置:
    • 帧数 为 3。在 fire-sprites.png 中有三个精灵,因此您希望将这张图像分为 3 个不同的精灵用于此动画。
    • 插值 设置为 true。这使得精灵之间的动画平滑。
    • 随机起始 设置为 true。这使得每个粒子的动画从 3 个精灵中的任何一个开始,增加了效果的随机性。

要为精灵添加颜色,使用 颜色表。使用颜色表,您在精灵的生命周期中改变其颜色。在这个项目中,您使用从黄色到深橙色的渐变色表。结果是精灵在发射时是黄色,在其生命周期结束时是深橙色。

要设置颜色表

  1. 转到 资产 视图并导入 fire-color-table.png 到您的项目中。
  2. 组件 视图中,将一个 Texture [1] 拖拽到 导航器 中的 animatedSpriteParticle

  3. 将纹理重命名为 fireColorTable
  4. 导航器 视图中,选择 fireColorTable,然后在 属性 视图中设置:
  5. 导航器 视图中,选择 animatedSpriteParticle,然后在 属性 视图中
    • 确保 精灵 设置为 animatedTexture。这设置从粒子发射器发射哪种图像,在这个例子中是早先添加的精灵表。
    • 粒子缩放 设置为 5 以调整火焰的大小。
    • 颜色表 设置为 fireColorTable

调整粒子发射器

下一步是调整粒子发射器属性

  1. 首先,在 导航器 视图中选择 animatedSpriteEmitter,然后,在 属性 视图中设置:
    • 发射率 设置为 300 以每秒发射 300 个粒子。
    • 生命周期 设置为 2500 以将每个粒子的生命周期设置为 2500 毫秒(2.5 秒)。
    • 生命周期变化 设置为 100 以设置粒子生命周期的变化。现在每个粒子的生命周期在 2.4 至 2.6 秒之间,使火焰看起来更逼真。
    • 粒子结束尺寸设置为1.50。当粒子发射时,其默认尺寸为1.00。在其生命周期的结束阶段,它会增长到1.50。

  2. 首先,在导航器视图中选择animatedSpriteParticle,然后在属性视图中进行设置:
    • 混合模式设置为屏幕以优雅地合并火焰与背景。
    • 最大数量设置为1000来定义一次在同一时间可见的最大粒子数量。设置更高的数字会分配更多的内存。
    • 颜色变化 W > 0.50。这将增加精灵的不透明度的随机性。

  3. 《i>animatedSpriteDirection组件定义了从粒子发射器发射的粒子的方向和速度。在本教程中,您想让粒子垂直向上(有小的变化)。

    导航器视图中选择animatedSpriteDirection,然后在其属性视图中进行设置:

    • 方向 > X 设置为0和 方向 > Y 设置为20。这会使粒子以20的速度垂直向上(沿Y轴)移动。
    • 方向变化 > X 设置为3。这增加了X轴上的小变化,使得火焰稍微宽一些。
    • 方向变化 > Y 设置为10。这沿Y轴增加了粒子的速度变化的范围。因为这让一些粒子速度减慢,因此火焰在下半部分看起来更粗。

运行项目

现在,火焰效果已经准备好了。在运行之前,将摄像机位置调整到从合适的视角展示效果。

  1. 导航器视图中选择sceneCamera,然后在属性视图中进行设置:
    • 视野 设置为20。
    • 位置 > Y 设置为35。
    • 位置 > Z 设置为350。

现在,通过选择Ctrl + R或在顶部工具栏中的按钮来运行项目。

另请参阅粒子

适用于某些Qt许可证。
了解更多信息。