使用QML來做3D應用開發(fā),優(yōu)化3D場景和優(yōu)化設計對3D應用程序?qū)⒂兄@著性能影響。本文描述幾種優(yōu)化3D場景的規(guī)則和方法。
一、四種3D場景設計方式
3D場景有多種不同的創(chuàng)建組合方式。例如:高級場景、低級場景、混合場景和Vertex顏色場景。與其他版本的場景相比,高級場景中包含了更多的對象。
低級、混合和Vertex場景包含的對象相對更少,因為它們已經(jīng)通過將幾何形狀和烘烤材料結合到紋理中進行了優(yōu)化。下圖顯示了Navigator視圖中每個場景中的組件,用于對比說明場景之間的結構差異:

(1-1)低級場景

如上圖所示,低級場景總共包含12個對象。每個模型(例如櫥柜、燈、盤子和水槽)都是獨立的網(wǎng)格。
(1-2)高級場景

如上圖所示,高場景總共包含27個對象。這個場景在其他方面與低級場景相似,但含有更多的細節(jié)和動畫組件(如可以打開的櫥柜門和烤箱的門閂)
(1-2)混合場景

混合場景是將所有的網(wǎng)格組合成一個單獨對象,所有材料都被烘焙成單一的紋理。
(1-3)Vertex顏色場景

該場景將所有的網(wǎng)格組合成一個單獨的對象,網(wǎng)格的顏色由.mesh文件的頂點數(shù)據(jù)描述,其中包括材質(zhì),沒有紋理。
在本小節(jié)中,出現(xiàn)的高級場景、低級場景、混合場景和Vertex顏色場景四種場景,本質(zhì)上是一種組織3D場景的方法。在高級場景中,包含的3D對象就非常多,為什么需要包含這么多的3D對象呢,多數(shù)情況下,就是為了將小對象分離出來做動畫效果和動畫控制。如果一個場景中沒有動畫需求,則完全可采用混合場景和Vertex顏色場景的方法來設計3D場景,還提升了應用渲染性能。
二、3D場景優(yōu)化規(guī)則
為了優(yōu)化3D場景的圖形渲染性能,首先應考慮是否需要給3D對象、燈光、相機或場景中的組件添加動畫,如果不需要就盡可能簡化場景結構,例如:可以將幾何圖形和烘烤材料結合到紋理中。理想情況下,將3D圖像預渲染為2D圖像是很好的選擇。檢查場景是否存在相同網(wǎng)格的多個實例,如果存在,則只導入一個網(wǎng)格實例,然后在場景中復制它,并為每個副本使用相同的材質(zhì)。
(2-1)Scene Graph
在Qt Design Studio中,由Navigator中的樹形視圖表示場景圖。同時,我們還可以在Code視圖中查看節(jié)點的層次結構。通過最小化場景圖,可以減少運行場景時所需的工作。因為具有復雜功能的深層層級嵌套將增加性能成本,為了優(yōu)化場景圖,應盡可能避免不必要的組和復雜的層次結構。
(2-2)資源文件優(yōu)化
盡可能減少資源文件的使用和加載,可以提高渲染性能(在實際3D應用開發(fā)過程中,由于多種因素,設計過程中資源文件往往都非常多,一般的做法是:一邊開發(fā)一邊優(yōu)化資源文件)。
在設計3D素材模型時,應盡量使用最少的三角形或頂點來達到預期的建模效果。因為在3D場景渲染時,較少的圖形數(shù)量可以降低內(nèi)存需求量并有助于快速渲染。
(2-3)CPU性能優(yōu)化
顯示3D對象需要CPU或者GPU的大量處理工作。處理每個3D組件都會消耗資源,因此減少可見對象的數(shù)量可以減少CPU的工作量。優(yōu)化建議如下:
(1)合并位置相鄰且共享紋理的對象。
注意:合并不共享紋理的對象不會在運行場景時提高CPU性能。
(2)將不同的紋理組合成一個紋理圖集,以此方法來減少材料的使用。
(3)避免多次渲染對象。
(2-4)優(yōu)化模型的幾何形狀
(1)減少模型中三角形的使用數(shù)量。
(2)減少用加倍頂點創(chuàng)建的UV映射接縫和硬邊的數(shù)量。
三、總結
下表總結了優(yōu)化3D場景相關的最佳實踐:
| 序號 | 3D行為 | 最佳實踐建議 |
|---|---|---|
| 1 | 從3D場景中獲得最佳性能 | 如果不需要動畫,可以將3D場景預渲染成2D圖像。 |
| 2 | 場景中物體的動畫 | 合并所有靜態(tài)對象,只導出每個動畫組件中的一個。 |
| 3 | 相機動畫 | 雖然在這種情況下使用2D圖像是不可取的,但應該將所有的幾何圖形、烘焙光照和材質(zhì)合并到一個單一的材質(zhì)中 |
| 4 | 光照動畫 | 優(yōu)化方法與“相機動畫”一樣 |
| 5 | 在網(wǎng)格分離的3D場景中獲得最佳性能 | 對于同一個網(wǎng)格的每個實例使用相同的材質(zhì) |
| 6 | 在運行時禁用網(wǎng)格渲染 | 保持特定的網(wǎng)格分離,合并其他組件。 |
| 7 | 使用低內(nèi)存的烘焙紋理 | 將網(wǎng)格顏色烘焙成頂點顏色 |
現(xiàn)代軟件,3D開發(fā)屬于較高級的開發(fā)了(做游戲的除外啦,哈哈),Qt Quick提供的3D開發(fā)基礎組件的功能也非常強大,高版本的Qt對3D性能做了較多優(yōu)化,且3D開發(fā)作為Quick的未來發(fā)展方向之一,也得到了官方的大量優(yōu)化和維護。
下列為官方提供的一個車載中控終端軟件demo,在軟件中融入了3D元素,形象直觀且炫酷。
審核編輯:劉清
-
cpu
+關注
關注
68文章
11281瀏覽量
225100
原文標題:QML性能優(yōu)化 | 3D場景優(yōu)化
文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
3D打印機散熱風扇:熱管理核心與選型優(yōu)化指南
3D雷達料位計應用行業(yè)有哪些
常見3D打印材料介紹及應用場景分析
圖撲軟件 3D 場景預加載應用實現(xiàn)
使用OpenUSD實現(xiàn)可互操作3D工作流(下)
使用OpenUSD實現(xiàn)可互操作3D工作流(上)
使用NVIDIA AI Blueprint打造3D世界
玩轉(zhuǎn) KiCad 3D模型的使用
iTOF技術,多樣化的3D視覺應用
索尼與VAST達成3D業(yè)務合作
如何提高3D成像設備的部署和設計優(yōu)勢
描述幾種優(yōu)化3D場景的規(guī)則和方法
評論