Qt Quick 3D在Qt 6.1中引入了对3D粒子的支持。与实例渲染类似,3D粒子模块也是Qt 6.1中的技术预览,并且将在Qt 6.2中得到完全支持。在此博客文章中,我们将介绍每个开发人员和设计师应了解的有关新3D粒子的知识,因此请继续阅读。
Qt Quick 3D在Qt 6.1中引入了对3D粒子的支持。与实例渲染类似,3D粒子模块也是Qt 6.1中的技术预览,并且将在Qt 6.2中得到完全支持。在此博客文章中,我们将介绍每个开发人员和设计师应了解的有关新3D粒子的知识,因此请继续阅读。详情可点击观看视频。
Qt组件推荐:
- QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面。
- QtitanNavigation | 下载试用 :模拟Microsoft Dynamics CRM-2016/Office 365导航界面和一组控件改善Qt.C ++应用程序用户体验的QtitanNavigation组件。
用法
如果您熟悉Qt Quick粒子模块,则也应该对3D粒子感到满意。 首先,您将在QML文件的开头使用“ import QtQuick3D.Particles3D”,而不是“ import QtQuick.Particles”。 这是一个具有单个逻辑粒子,一个发射器和一个效应子的简单粒子系统的QML代码:
ParticleSystem3D { SpriteParticle3D { id: starParticle sprite: Texture { source: "images/star.png" } maxAmount: 200 color: "#ffff00" particleScale: 20.0 fadeOutDuration: 500 billboard: true } ParticleEmitter3D { particle: starParticle velocity: VectorDirection3D { direction: Qt.vector3d(100, 200, 0) directionVariation: Qt.vector3d(20, 20, 20) } particleScaleVariation: 0.4 emitRate: 50 lifeSpan: 4000 } Gravity3D { magnitude: 100 } }
当您运行上面的示例时,您将看到类似以下内容:

或者,如果将SpriteParticle3D替换为ModelParticle3D以获取3D粒子并添加一些颜色和旋转变化,则输出将如下所示:

因此,让我们看一下简单示例的一些方面:
- ParticleSystem3D是粒子系统的根。它处理系统时序,并将所有其他相关元素(如粒子,发射器和影响器)组合在一起。与Qt Quick ParticleSystem相比,ParticleSystem3D的一项简洁功能是您可以自由设置时间动画,例如,它可以使粒子与其他动画同步。设计师特别喜欢的另一个功能是,可以将粒子系统与特定种子随机化,以在每次运行时获得相同的像素完美粒子效果。
- ParticleEmitter3D处理粒子的实际发射。有许多属性可以定义单个粒子的外观以及它们的发射方式。许多属性具有Variation对应项,用于增加粒子之间的视差。要从另一个粒子发射粒子,可以使用TrailEmitter3D。
- 当前有4种不同的影响因素可用于控制粒子在其生命周期中的动画方式,将来可能会添加更多的影响因素。在这里,我们使用Gravity3D效应器,其大小可将粒子向下拖动。
要了解更多信息,请查看 Particles3D API文档和Testbed示例的文档。
查看视频演示
性能说明
与所有Qt模块一样,性能一直是新3D粒子模块的关键方面之一。毕竟,我们希望这些粒子可以在台式机,移动设备和嵌入式设备的各种硬件上使用。也就是说,这不仅仅是在屏幕上渲染最大数量的粒子元素。易于使用的API,对不同用例的可扩展性,渲染质量,与其他UI元素的集成等对我们也很重要。
当前,渲染在GPU上运行,而粒子系统逻辑在CPU上运行。我们正在使用所谓的无状态粒子系统,如果这看起来很有用,它也可以在GPU上移动系统逻辑。初始测量表明,我们在CPU和GPU之间保持了很好的平衡。我们的无状态系统还可以在将来更好地进行工具集成,因为可以在时间轴上对粒子进行动画处理(例如,请参见测试平台“ Qt Cube Burst”)。就像已经提到的那样,模型粒子利用实例渲染来提高性能。不幸的是,这意味着OpenGL ES 2.0还远远不够,至少需要OpenGL ES 3.0,Vulkan等。现代后端是必需的,这样我们才能提高渲染性能。
====================================================
想要了解或购买Qt正版授权的朋友,欢迎咨询官方客服
Qt技术交流群现已开通,QQ搜索群 “765444821”或者扫描下方二维码即可加入

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!