写点什么

HMS Core 3D 流体仿真技术,打造移动端 PC 级流体动效

作者:HMS Core
  • 2022-12-26
    贵州
  • 本文字数:1887 字

    阅读完需:约 6 分钟

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


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

关注

HMS Core技术团队。 2022-06-16 加入

分享最新的技术干货,带来最全的能力应用场景,更新热门开发者圈子活动。与开发者一起,同成长,共精彩。

评论

发布
暂无评论
HMS Core 3D流体仿真技术,打造移动端PC级流体动效_HMS Core_HMS Core_InfoQ写作社区