新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 詳解如何利用最新OpenGL ES 3.0技術演示生動貓咪

        詳解如何利用最新OpenGL ES 3.0技術演示生動貓咪

        作者: 時間:2016-10-29 來源:網絡 收藏

        實現實時圖形毛皮效果歷來難度較大。最新桌面技術使用了Direct3D 11曲面細分(tessellation)技術才創建出飛奔中的小貓動態皮毛的效果。

        本文引用地址:http://www.104case.com/article/201610/307402.htm

        在移動平臺上,由于性能受限,開發人員必須要顯著降低內存帶寬。為了完成這些圖形效果,移動設備的解析度正與桌面系統越相當甚至超過桌面系統。

        1.jpg

        基于 Rogue GPU的貓咪演示

        盡管如此,我們近期所做的OpenGL ES 3.0可愛貓咪演示表明,使用最新 Series6 GPU,可能在移動設備上實時呈現生動的貓毛效果。最新演示的運行速度>30fps,解析度大于 Rogue GPU驅動的全高清。

        2.jpg

        可愛貓咪共由近20萬個三角形而成

        這只小貓毛茸茸,在歐式鄉間小屋內頑皮地追逐激光指示筆。

        技術特點

        該演示利用了OpenGL ES 3.0 變換反饋和實例在移動系統上制成貓毛效果。

        貓和環境都采用了基于物理的模式,將軟性陰影投射在貓和環境周圍。實時照亮貓的外形;但是環境使用的是預計算的紋理貼圖。在轉換反饋通路中執行角色動畫,貓的基礎網格是在影響各個頂點的12骨架上加上貓皮。利用實例渲染和殼體紋理渲染輸出效果,創建毛皮效果。

        應用變換反饋中可以使應用程序計算一次網格中貓蒙皮后的位置,然后再次使用各個殼體的位置。結合這個實例輸出必須轉換至GPU,在頂點著色器中計算殼體偏移。各個頂點骨架計算啟動實時模型中維持的大量細部,但需要使用Uniform Buffer Object(OpenGL ES 3.0新版本),將所有數據傳輸至變換反饋著色器。

        3.jpg

        使用OpenGL ES 3.0的兩個功能變換反饋和實例渲染繪制的貓咪

        為在演示中增加流行文化元素,箱子后面的肖像是物理學家薛定諤,其著名的思想實驗是按照量子理論證明疊加原理。

        0.jpg

        貓模型的線框圖

        開發過程中遇到的挑戰

        我們先啟動了在移動系統中制作貓咪殼體毛皮效果的實驗。其中所需的大量混合是很多移動圖像架構的巨大挑戰,盡管如此,我們仍打算證明在執行大量的阿爾法混合時,PowerVR Series6 GPU 可維持高性能。

        4.jpg

        初步演示的圖形

        經過初步概念驗證實驗后,我們確信我們可以創建在一個模型上創建令人信服的靜態毛皮效果。我們開始策劃圍繞動畫貓的場景。集成毛皮和卡通貓的特性是難度較大的技術挑戰。

        使用基本的動畫模型,我們開始開發一些優化技術來渲染帶毛皮的動畫角色。在這個階段使用變換反饋和實例渲染來優化整個開發設計。

        最終采用的動畫模型是最初為離線渲染設計的模型,因此需要進行高面多邊形計算。這個動畫在各個頂點采用大量的骨架執行蒙皮。我們很快發現,建立在各個頂點采用4個骨架蒙皮是不夠的,原因是這會造成貓尾部和背部畸形。為了解決這個問題,我們將模型與動畫數據隔離,創建自定義各個頂點12骨架蒙皮系統。

        經實驗創建這個系統面臨數個方面的挑戰:從建模程序包中導出數據,以自定義存儲格式保存,將這個數據加載到演示,利用網格數據重新整合這些數據,然后應用執行蒙皮。同時我們還要處理場景,利用預計算的光照圖為四處走動的貓創建舒適的環境

        5.jpg

        上圖顯示最終貓模型的前期版本,在最終場景上我們把所設置反光地板上的基本光照移除了。

        6.jpg
        7.jpg

        在執行每頂點12骨架系統時所出現的一些問題,尤其是在原有網格中重新集成動畫數據時。這段開發部分被戲稱為 “多邊形集合階段”

        當蒙皮系統完成后,我們能夠繼續開發其他部分的演示,增加功能,如激光筆、線框模式和慢動作系統。靜態場景處理得很順利,在演示結束時增加天空景色增加了更自然的感覺。

        8.jpg

        最終場景內的窗戶

        另外的挑戰是為貓補光。為了將貓與預計算場景整合在一起,我們最終決定利用BRDF (雙向反射分布函數)渲染貓的毛皮 。我們還投射小貓所處位置的軟陰影,這個陰影與整體陰影融為一體。

        執行中期開發的同事提出了一個演示名稱,但最終未被采用。

        渲染順序

        9.jpg

        可以按照一些過程構建場景。利用變換反饋,必須對高多邊形貓網格蒙皮一次,隨后的位置可以用于陰影傳遞、各個殼體和皮毛傳遞。胡須是在我們認為需要對整體場景細部進行添加時最后添加的。

        查看利用高級OpenGL ES 3.0功能制作貓咪圖形演示

        最終演示已經進行了數月,我們對結果很滿意。

        2014年移動世界大會上我們進行了首次演示,反響強烈。在2014GDC、 SIGGRAPH 2014 和其他主要會議上也進行了演示。



        關鍵詞: OpenGL 渲染 PowerVR

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 贞丰县| 弥渡县| 承德市| 江都市| 宁德市| 盐源县| 诸暨市| 惠东县| 察隅县| 昔阳县| 涟水县| 云梦县| 新和县| 青海省| 沭阳县| 海林市| 潢川县| 长垣县| 陆河县| 塔河县| 石家庄市| 齐齐哈尔市| 吴堡县| 儋州市| 嘉祥县| 肇州县| 彰化县| 阳江市| 广平县| 龙川县| 左云县| 达州市| 柘荣县| 普格县| 富阳市| 十堰市| 新田县| 云龙县| 镇雄县| 定西市| 和龙市|