

HMS Core 3D流体仿真技术,打造移动端PC级流体动效 - HMSCore技术团队
source link: https://www.cnblogs.com/hmscore/p/17005380.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

移动设备硬件的高速发展,让游戏行业发生翻天覆地的变化,许多酷炫的游戏效果不再局限于电脑端,玩家在移动端就能享受到场景更逼真、画质更清晰、体验更流畅的游戏服务。但由于移动设备算力不足,为了实现真实感的水体效果,很多游戏厂商采用预计算的方法减少实时仿真的计算开销,但水体场景在移动端的流体效果仍然不佳。
真实感水体的模拟一直是图形学和游戏开发领域的难点问题,对硬件算力要求也很高,因此大多数真实的水体模拟场景只出现在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图形引擎服务官网。
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
Recommend
-
90
Note:(磁)流体数值模拟程序Zeus与Athena简介天文学话题下的优秀答主在之前的文章Note:数值模...
-
53
电影工业中的流体模拟(七)----PCISPHGfansPhysics programmer at NVIDIA
-
6
【2022年7月15日,杭州】HUAWEI Developer Day(华为开发者日,简称HDD)杭州站拉开帷幕。在数字经济不断发展的今天,开发者对图形图像的开发需求更加深入和多样化,从虚拟环境重构到用户交互再到视觉呈现,开发者对于数字世界存在一个完整的需求链条。在HMS Core.Sp...
-
5
手把手教你:轻松打造沉浸感十足的动态漫反射全局光照 ...
-
9
-
6
华为应用市场在2022年HDC大会期间发布了一款3D水流主题,基于华为HMS Core Scene Kit服务能力,展现立体灵动的水流岛屿,可跟随用户指尖实现实时流体...
-
9
在移动端中,我们能够看到各种各样丰富细腻的动效设计,应用于各大APP中。动效设计在产品研发过程中越来越规范和成熟。本文结合作者实战经验,与大家谈谈在制作UI动效时的经验和技巧,希望对你有所帮助。
-
4
扫一扫,原来这么简单 二维码识别技术已广泛应用在移动...
-
5
HUAWEI HiCar(以下简称HiCar)是华为提供的人-车-家全场景智慧互联解决方案,连接手机与车辆,充分发挥各自的优势属性,将手机的应用/服务生态延伸进车辆,实现以手...
-
6
【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息! 一、闲聊 最近一直在研究流体模拟,很神奇的一个东西,...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK