Qt技術交流群現已開通,QQ搜尋群号“765444821”即可加入!
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
}
}
當您運作上面的示例時,您将看到類似以下内容:
或者,如果将SpriteParticle3D替換為ModelParticle3D以擷取3D粒子并添加一些顔色和旋轉變化,則輸出将如下所示:
是以,讓我們看一下簡單示例的一些方面:
- ParticleSystem3D是粒子系統的根。它處理系統時序,并将所有其他相關元素(如粒子,發射器和影響器)組合在一起。與Qt Quick ParticleSystem相比,ParticleSystem3D的一項簡潔功能是您可以自由設定時間動畫,例如,它可以使粒子與其他動畫同步。設計師特别喜歡的另一個功能是,可以将粒子系統與特定種子随機化,以在每次運作時獲得相同的像素完美粒子效果。
- 支援兩種不同的邏輯粒子類型:用于2D紋理粒子的SpriteParticle3D和用于3D模型粒子的ModelParticle3D。模型粒子實際上使用執行個體渲染來渲染成千上萬的粒子,并具有完整的Quick 3D材質和燈光支援。邏輯粒子将定義粒子的常見外觀。一個重要的屬性是maxAmount,它用于為粒子配置設定資料。 Qt Quick粒子不具有此功能,但它們會根據emitRate,lifeSpan和突發自動增長資料。要求對其進行定義使我們能夠優化記憶體使用情況,并無需重新配置設定就可以修改emitRate和lifeSpan
- 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技術交流群現已開通,QQ搜尋群号“765444821”即可加入!