使用QML來做3D應用開發,優化3D場景和優化設計對3D應用程序將有著顯著性能影響。本文描述幾種優化3D場景的規則和方法。
一、四種3D場景設計方式
3D場景有多種不同的創建組合方式。例如:高級場景、低級場景、混合場景和Vertex顏色場景。與其他版本的場景相比,高級場景中包含了更多的對象。
低級、混合和Vertex場景包含的對象相對更少,因為它們已經通過將幾何形狀和烘烤材料結合到紋理中進行了優化。下圖顯示了Navigator視圖中每個場景中的組件,用于對比說明場景之間的結構差異:
(1-1)低級場景
如上圖所示,低級場景總共包含12個對象。每個模型(例如櫥柜、燈、盤子和水槽)都是獨立的網格。
(1-2)高級場景
如上圖所示,高場景總共包含27個對象。這個場景在其他方面與低級場景相似,但含有更多的細節和動畫組件(如可以打開的櫥柜門和烤箱的門閂)
(1-2)混合場景
混合場景是將所有的網格組合成一個單獨對象,所有材料都被烘焙成單一的紋理。
(1-3)Vertex顏色場景
該場景將所有的網格組合成一個單獨的對象,網格的顏色由.mesh文件的頂點數據描述,其中包括材質,沒有紋理。
在本小節中,出現的高級場景、低級場景、混合場景和Vertex顏色場景四種場景,本質上是一種組織3D場景的方法。在高級場景中,包含的3D對象就非常多,為什么需要包含這么多的3D對象呢,多數情況下,就是為了將小對象分離出來做動畫效果和動畫控制。如果一個場景中沒有動畫需求,則完全可采用混合場景和Vertex顏色場景的方法來設計3D場景,還提升了應用渲染性能。
二、3D場景優化規則
為了優化3D場景的圖形渲染性能,首先應考慮是否需要給3D對象、燈光、相機或場景中的組件添加動畫,如果不需要就盡可能簡化場景結構,例如:可以將幾何圖形和烘烤材料結合到紋理中。理想情況下,將3D圖像預渲染為2D圖像是很好的選擇。檢查場景是否存在相同網格的多個實例,如果存在,則只導入一個網格實例,然后在場景中復制它,并為每個副本使用相同的材質。
(2-1)Scene Graph
在Qt Design Studio中,由Navigator中的樹形視圖表示場景圖。同時,我們還可以在Code視圖中查看節點的層次結構。通過最小化場景圖,可以減少運行場景時所需的工作。因為具有復雜功能的深層層級嵌套將增加性能成本,為了優化場景圖,應盡可能避免不必要的組和復雜的層次結構。
(2-2)資源文件優化
盡可能減少資源文件的使用和加載,可以提高渲染性能(在實際3D應用開發過程中,由于多種因素,設計過程中資源文件往往都非常多,一般的做法是:一邊開發一邊優化資源文件)。
在設計3D素材模型時,應盡量使用最少的三角形或頂點來達到預期的建模效果。因為在3D場景渲染時,較少的圖形數量可以降低內存需求量并有助于快速渲染。
(2-3)CPU性能優化
顯示3D對象需要CPU或者GPU的大量處理工作。處理每個3D組件都會消耗資源,因此減少可見對象的數量可以減少CPU的工作量。優化建議如下:
(1)合并位置相鄰且共享紋理的對象。
注意:合并不共享紋理的對象不會在運行場景時提高CPU性能。
(2)將不同的紋理組合成一個紋理圖集,以此方法來減少材料的使用。
(3)避免多次渲染對象。
(2-4)優化模型的幾何形狀
(1)減少模型中三角形的使用數量。
(2)減少用加倍頂點創建的UV映射接縫和硬邊的數量。
三、總結
下表總結了優化3D場景相關的最佳實踐:
序號 | 3D行為 | 最佳實踐建議 |
---|---|---|
1 | 從3D場景中獲得最佳性能 | 如果不需要動畫,可以將3D場景預渲染成2D圖像。 |
2 | 場景中物體的動畫 | 合并所有靜態對象,只導出每個動畫組件中的一個。 |
3 | 相機動畫 | 雖然在這種情況下使用2D圖像是不可取的,但應該將所有的幾何圖形、烘焙光照和材質合并到一個單一的材質中 |
4 | 光照動畫 | 優化方法與“相機動畫”一樣 |
5 | 在網格分離的3D場景中獲得最佳性能 | 對于同一個網格的每個實例使用相同的材質 |
6 | 在運行時禁用網格渲染 | 保持特定的網格分離,合并其他組件。 |
7 | 使用低內存的烘焙紋理 | 將網格顏色烘焙成頂點顏色 |
現代軟件,3D開發屬于較高級的開發了(做游戲的除外啦,哈哈),Qt Quick提供的3D開發基礎組件的功能也非常強大,高版本的Qt對3D性能做了較多優化,且3D開發作為Quick的未來發展方向之一,也得到了官方的大量優化和維護。
下列為官方提供的一個車載中控終端軟件demo,在軟件中融入了3D元素,形象直觀且炫酷。
審核編輯:劉清
-
cpu
+關注
關注
68文章
11033瀏覽量
215988
原文標題:QML性能優化 | 3D場景優化
文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
一種以圖像為中心的3D感知模型BIP3D

SciChart 3D for WPF圖表庫

騰訊混元3D AI創作引擎正式發布
騰訊混元3D AI創作引擎正式上線
中興通訊全場景AI終端應用與裸眼3D新品亮相


歡創播報 騰訊元寶首發3D生成應用

評論