HMS Core 3D流體模擬技術,打造移動端PC級流體動效

来源:https://www.cnblogs.com/hmscore/archive/2022/12/26/17005380.html
-Advertisement-
Play Games

移動設備硬體的高速發展,讓游戲行業發生翻天覆地的變化,許多酷炫的游戲效果不再局限於電腦端,玩家在移動端就能享受到場景更逼真、畫質更清晰、體驗更流暢的游戲服務。但由於移動設備算力不足,為了實現真實感的水體效果,很多游戲廠商採用預計算的方法減少實時模擬的計算開銷,但水體場景在移動端的流體效果仍然不佳。 ...


移動設備硬體的高速發展,讓游戲行業發生翻天覆地的變化,許多酷炫的游戲效果不再局限於電腦端,玩家在移動端就能享受到場景更逼真、畫質更清晰、體驗更流暢的游戲服務。但由於移動設備算力不足,為了實現真實感的水體效果,很多游戲廠商採用預計算的方法減少實時模擬的計算開銷,但水體場景在移動端的流體效果仍然不佳。

真實感水體的模擬一直是圖形學和游戲開發領域的難點問題,對硬體算力要求也很高,因此大多數真實的水體模擬場景只出現在PC和主機游戲中。為瞭解決移動端水體流動真實感的問題,提升開發者應用開發的效率,HMS Core圖形引擎服務(Scene Kit)推出了3D流體模擬技術,有效解決3D流體動效在移動設備上的實時性和功耗的問題。

3D流體模擬技術

流體力學中流體的運動可以用偏微分方程表示,該方程稱為納維-斯托克斯(NS)方程,如公式(1)所示

█((∂ u ⃗)/∂t=g ⃗-1/ρ ∇p +ν∇⋅∇u ⃗ -u ⃗⋅∇u ⃗#

(1) )該方程描述了流體動量變化與流體內部的壓力(1/ρ ∇p)、粘滯力(ν∇⋅∇u ⃗)以及重力( g ⃗)之間的關係。流體力學中對流體運動有拉格朗日和歐拉兩種描述方法,拉格朗日描述用粒子方式對流體建模,每個粒子上攜帶流體的狀態信息在空間中流動;歐拉描述把模擬區域劃為空間中的網格,每個網格上存儲流過該位置的流體的狀態信息。如圖2所示。

圖2 歐拉描述與拉格朗日描述

模擬真實的流體效果需要大量的粒子或者網格,數量可達到十萬、百萬級別,但使用CPU串列計算的方式模擬需要幾秒才能完成一幀數據的計算,無法滿足實時性要求。而GPU在高性能並行計算領域有著巨大優勢,因此在HMS Core圖形引擎服務中,我們利用GPU加速技術在移動設備上實現流體模擬。

不過,僅通過GPU硬體加速不能完全滿足移動設備上流體實時模擬的要求,還需要提升GPU的運行效率,以及減少模擬的計算量,從而降低GPU的負載以及帶寬的使用,避免高負荷高帶寬運行導致的設備發燙等體驗問題。在流體運動的兩種描述方法中,拉格朗日方法由於粒子狀態受周圍其它粒子的影響,計算時需要先搜索鄰域粒子,這個過程對並行計算不夠友好,難以發揮並行計算的優勢。而歐拉描述中的每個網格狀態數據的計算過程都是相同的,更適合併行計算。因此為了提升GPU的並行效率,HMS Core圖形引擎服務採用歐拉方法進行流體模擬。

採用歐拉方法構建流體模型,先將模擬區域劃分成均勻的網格,構造出流體的速度場、密度場等數據。如圖3所示。

圖3 紅點表示密度、壓強數據的存儲位置,紅色箭頭表示速度場數據

黑色網格是密度場網格,速度場網格在密度場網格基礎上沿x、y方向進行半個網格偏移(藍色網格),密度存儲在密度場網格中心點,速度場數據存儲在密度場網格頂點上,同時也是速度場網格中心點,這種形式可以很方便的實現中心差分計算,實際計算時需要將速度場按維度拆分。再引入有向距離場(SDF)數據描述流體的邊界,實現流體與邊界的碰撞效果。如圖4所示。

圖4 密度場網格,棕色區域表示固體邊界,藍色區域表示流體,白色區域表示空氣。

在流體模型構建完成後,再利用前面提到的納維-斯托克斯(NS)方程進行模擬計算,計算過程包括求解重力、壓強、粘度、對流4步,分別對應公式(1)中等號右邊的四項。

壓強和粘度求解過程複雜,通過大量優化將求解過程簡化為線性方程組的求解,從而降低計算複雜度,減少計算量。方程組求解採用快速收斂的解法,同時進行精度取捨從而降低計算開銷。數據存儲格式的優化,也達到降低GPU帶寬使用、提高GPU cache命中率的效果。

求解對流項時,需要考慮流體與固體邊界的碰撞,圖形引擎服務採用一種統一建模的方式描述空氣、流體、固體網格,如圖5所示。

圖5紅色表示在邊界外部,灰色區域表示邊界,綠色區域表示邊界內部

這樣在計算時可以統一處理全部網格,無需對流體、固體區域分別計算,可以減少計算邏輯,提升GPU線程的運行效率。

通過以上多種技術方法,HMS Core圖形引擎服務實現了GPU運行效率的提升以及流體模擬計算量的降低,從而在移動設備上實現了較低功耗的3D流體實時模擬。再結合圖形渲染的其他能力,最終在移動設備上能夠實現3D流體的流動、飛濺、反射、折射等效果,讓用戶手機不發燙,還能擁有實時流暢的流體體驗。

3D流體模擬技術來自華為2012實驗室,通過HMS Core圖形引擎服務向開發者開放。HMS Core圖形引擎服務致力於為開發者提供高性能、低功耗的引擎服務,幫助開發者製作高品質的3D應用,賦能更多應用走入數字世界。

其他更多關於HMS Core圖形引擎服務的信息,請訪問華為開發者聯盟-HMS Core圖形引擎服務官網

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHubGitee

關註我們,第一時間瞭解 HMS Core 最新技術資訊~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • P5721 【深基4.例6】數字直角三角形 1.題目描述 給出 n,請輸出一個直角邊長度是 n 的數字直角三角形。所有數字都是 2 位組成的,如果沒有 2 位則加上前導 00。 2.輸入格式 輸入一個正整數 n。 3.輸出格式 輸出如題目要求的數字直角三角形。 4.輸入輸出樣例 4.1輸入 5 4. ...
  • JZ57 和為S的兩個數字 題目 輸入一個升序數組 array 和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,返回任意一組即可,如果無法找出這樣的數字,返回一個空數組即可。 方法1 暴力解題 思路 演算法實現 兩次迴圈,兩個值相加與sum進行比較,為true直接br ...
  • 一個簡單的C#實例。包括:GRPC文件的創建生成、服務端和客戶端函數類庫的封裝、創建服務端和客戶端調用測試。若有錯誤或更好的方法還請指正。 1、創建並生成GRPC服務文件 (1)打開vs2022,創建新項目控制台應用(其他應用好像不行)。 (2)需要安裝三個nuget包,如圖: (3)項目添加新建項 ...
  • 雲計算時代,資料庫上雲已成為產業數字化轉型的重要動力。近期,在2022騰訊全球數字生態大會雲原生資料庫技術探索專場上,騰訊雲分享了在雲原生資料庫領域的技術演進與探索,並就其在不同行業場景中的最佳實踐進行了詳細講解,為廣大企業運用雲原生資料庫實現業務創新提供了有效借鑒。 騰訊雲資料庫高級工程師潘怡飛在 ...
  • 摘要:Spring框架對JDBC的簡單封裝。提供了一個JDBCTemplate對象簡化JDBC的開發。 本文分享自華為雲社區《Spring JdbcTemplate使用解析》,作者: 共飲一杯無 。 Spring框架對JDBC的簡單封裝。提供了一個JDBC Template對象簡化JDBC的開發 步 ...
  • 大數據時代,NoSQL資料庫是企業構建數據能力的核心工具之一。近期,在2022騰訊全球數字生態大會NoSQL資料庫專場上,騰訊雲發佈了多項NoSQL產品能力升級,並重點講解了其背後的自研技術要點及實現細節,分享了騰訊雲NoSQL為廣大企業提供的高可靠、高效率、低成本的企業級特性及行業解決方案。 開場 ...
  • 雖然說 MongoDB 是無模式的,但實際上模式設計在 MongoDB 中也非常重要。在實際開發中,大多數性能問題都可以追溯到糟糕的模式設計。 ...
  • 本文根據digoal(德哥)在〖2019 DAMS中國數據智能管理峰會〗現場演講內容整理而成。 講師介紹 digoal(德哥),PostgreSQL中國社區發起人之一、常委、兼任社區大學校長。阿裡雲資料庫首席專家團隊成員,提供資料庫首席專家服務。現任職於阿裡雲資料庫團隊,主要負責阿裡雲Postgre ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...