移动设备硬件的高速发展,让游戏行业发生翻天覆地的变化,许多酷炫的游戏效果不再局限于电脑端,玩家在移动端就能享受到场景更逼真、画质更清晰、体验更流畅的游戏服务。但由于移动设备算力不足,为了实现真实感的水体效果,很多游戏厂商采用预计算的方法减少实时仿真的计算开销,但水体场景在移动端的流体效果仍然不佳。

真实感水体的模拟一直是图形学和游戏开发领域的难点问题,对硬件算力要求也很高,因此大多数真实的水体模拟场景只出现在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 最新技术资讯~

HMS Core 3D流体仿真技术,打造移动端PC级流体动效的更多相关文章

  1. 华为开发者大会2022:HMS Core 3D建模服务再升级,万物皆可驱动

    11月4日,HDC2022华为开发者大会在东莞松山湖举办.在本次大会的HMS Core创新图形能力分论坛中,HMS Core重点介绍了其在3D技术领域的创新应用方向,其中3D建模服务展示了创新的自动骨 ...

  2. HMS Core图形图像技术展现最新功能和应用场景,加速构建数智生活

    [2022年7月15日,杭州]HUAWEI Developer Day(华为开发者日,简称HDD)杭州站拉开帷幕.在数字经济不断发展的今天,开发者对图形图像的开发需求更加深入和多样化,从虚拟环境重构到 ...

  3. HMS Core挑战赛故事:鞋、街景、手办、玩具,原来这些都可以3D建模

    HMS Core线上Codelabs挑战赛第3期中,开发者通过学习和运用HMS Core开发的3D建模服务,生成3D建模应用demo,再使用demo为自己身边的一个实物完成建模.在提交的作品中,小编发 ...

  4. 华为HMS Core携手超图为三维GIS注入新动能

    6月30日,在2022(第五届)GIS软件技术大会GIS基础软件新技术板块论坛上,华为联合超图推出了基于HMS Core 3D Engine开发的高保真三维GIS插件,通过3D渲染技术助力三维GIS实 ...

  5. 华为在HDC2021发布全新HMS Core 6 宣布跨OS能力开放

    [2021年10月22日·东莞]华为开发者大会 2021(Together)于今天正式开幕,华为在主题演讲中正式发布全新的HMS Core 6,向全球开发者开放7大领域的69个Kit和21,738个A ...

  6. 华为开发者大会HDC2022:HMS Core 持续创新,与开发者共创美好数智生活

    11月4日,华为开发者大会HDC2022在东莞松山湖拉开帷幕.HMS Core在本次大会上带来了包括音频编辑服务的高拟真歌声合成技术.视频编辑服务的智能提取精彩瞬间功能.3D Engine超大规模数字 ...

  7. HMS Toolkit自动化环境配置,助您高效集成HMS Core

    HMS Toolkit是一个IDE插件,提供包括应用创建.编码和转换.调测和测试.提交上架等多个端到端开发工具,借助HMS Toolkit可提升3倍以上集成开发效率,可以帮助开发者以更高的开发效率.更 ...

  8. HDC2021:HMS Core分析服务,数智化营销闭环方案帮助开发者实现精益增长

    10.22-10.24华为开发者大会2021(Together)在东莞如期举行.本次大会上,HMS Core华为分析服务作为多平台.跨设备的一站式数据分析平台以数据驱动业务智能决策为理念,带来了数智化 ...

  9. HMS Core Discovery第14期直播预告~纵享丝滑剪辑,释放视频创作力

    [导读] 拍摄.导入.特效.卡点.BGM-几步简单的操作,我们便可将生活的瞬间用视频记录与分享.应用前沿AI技术,提供一站式视频处理能力,帮助开发者们构建更智能.更易用.更专业的视频剪辑软件,打造视频 ...

  10. 放码来战!HMS Core线上Codelabs挑战赛正式开始

    亲爱的开发者,在1024程序员节即将到来之际,HMS Core准备了一场线上Codelabs挑战赛,现向你发出诚挚邀请,希望你能将新奇的想法和对产品的思考融入代码,用技术与世界对话. HMS Core ...

随机推荐

  1. 洛谷P2367 语文成绩(差分)

    标准的差分应用题,不要想的太复杂,写成了线段树. 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=5e6+10 ...

  2. 手把手教你使用LabVIEW OpenCV dnn实现图像分类(含源码)

    @ 目录 前言 一.什么是图像分类? 1.图像分类的概念 2.MobileNet简介 二.使用python实现图像分类(py_to_py_ssd_mobilenet.py) 1.获取预训练模型 2.使 ...

  3. 强制更改windows电脑密码

    强制更改windows电脑密码 1.重启电脑,连续按F8,在出现的高级选项中 2.选择administrator用户,打开管理员命令窗口 3.输入命令 etuserAA123456/add 密码就会被 ...

  4. oracle 12C 《服务器、客户端安装》

    oracle 12C <服务器.客户端安装> 1.下载database和client database和client下载地址:http://www.oracle.com/technetwo ...

  5. python实现鼠标手动截图(类似于QQ截图)

    由于在网上找了很久,只找到按像素位置截图和全屏截图的,所以决定自己写一个. 本程序实现原理是现用PIL里的ImageGrab进行全屏截图,然后通过模拟鼠标操作,进行截图,最后删除全屏截图,只留下鼠标截 ...

  6. Docker之介绍与安装

    Docker 说明 本章,我们主要从Docker简介.Docker中几个核心概念和Docker安装这几个方面对Docker进行介绍! 1. Docker 简介 1.1. 什么是 Docker Dock ...

  7. 10.异步mysql

    python中操作mysql连接.操作.断开都是网络IO #安装支持异步aiomysql的模块 pip3 install aiomysql async def execute(): # 网络IO操作, ...

  8. Jquery中Trigger()方法

    1. $(selector).trigger(event,[param1,param2,...]) 方法触发被选元素标签的指定事件类型 为元素边赋值为true,并触发元素标签的change方法 $(' ...

  9. css文字单行/多行超出显示省略号...

    css文字单行/多行超出显示省略号... 项目里写css样式我们经常会遇到将文字超出显示省略号的情况,记录一下以后能用到. 单行超出 .oneline { width:300upx; /*宽度一定要设 ...

  10. 1.WEB应用模式

    1. Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的.] 前后端分离[把前端的界面效果(html,css,js分离到另一个服务 ...