彩票走势图

C++跨平台框架Qt资讯:Qt Quick 3D粒子简介

翻译|行业资讯|编辑:鲍佳佳|2021-04-19 10:10:57.307|阅读 216 次

概述:Qt Quick 3D在Qt 6.1中引入了对3D粒子的支持。与实例渲染类似,3D粒子模块也是Qt 6.1中的技术预览,并且将在Qt 6.2中得到完全支持。在此博客文章中,我们将介绍每个开发人员和设计师应了解的有关新3D粒子的知识,因此请继续阅读。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。

下载Qt6最新试用版

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     
 }  
}  

当您运行上面的示例时,您将看到类似以下内容:

particle_example1_output

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

particle_example1_output

因此,让我们看一下简单示例的一些方面:

  • ParticleSystem3D是粒子系统的根。它处理系统时序,并将所有其他相关元素(如粒子,发射器和影响器)组合在一起。与Qt Quick ParticleSystem相比,ParticleSystem3D的一项简洁功能是您可以自由设置时间动画,例如,它可以使粒子与其他动画同步。设计师特别喜欢的另一个功能是,可以将粒子系统与特定种子随机化,以在每次运行时获得相同的像素完美粒子效果。
  • 支持两种不同的逻辑粒子类型:用于2D纹理粒子的SpriteParticle3D和用于3D模型粒子的ModelParticle3D。模型粒子实际上使用实例渲染来渲染成千上万的粒子,并具有完整的Quick 3D材质和灯光支持。逻辑粒子将定义粒子的常见外观。一个重要的属性是maxAmount,它用于为粒子分配数据。 Qt Quick粒子不具有此功能,但它们会根据emitRate,lifeSpan和突发自动增长数据。要求对其进行定义使我们能够优化内存使用情况,并无需重新分配就可以修改emitRate和lifeSpan
  • ParticleEmitter3D处理粒子的实际发射。有许多属性可以定义单个粒子的外观以及它们的发射方式。许多属性具有Variation对应项,用于增加粒子之间的视差。要从另一个粒子发射粒子,可以使用TrailEmitter3D。
  • 当前有4种不同的影响因素可用于控制粒子在其生命周期中的动画方式,将来可能会添加更多的影响因素。在这里,我们使用Gravity3D效应器,其大小可将粒子向下拖动。

要了解更多信息,请查看和文档。

查看视频演示

性能说明

与所有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或者扫描下方二维码即可加入



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP