超逼真的表面张力模拟! (转载)
开放群:566811107(资料多,不仅限交流)
群一:836281296
群二:594368389
群三:1080606488
群四: 678357196
我的qq: 209870384有兴趣的可以加我,交流模型。
由北京大学陈宝权教授研究团队与北京电影学院未来影像高精尖创新中心、达特茅斯学院、德克萨斯农工大学合作,提出全新的模拟框架处理带表面张力的流固强耦合, 能够精确模拟各种与表面张力相关的物理过程。本文入选了 SIGGRAPH 2021论文 Trailer(精选预告片),将在计算机动漫节 Computer Animation Festival (CAF) 上播放,并在 SIGGRAPH 主页推荐。
1 简介
树叶落在水面上泛起阵阵涟漪,密度比水大的回形针却能漂浮在水面上,这些现象的背后有一个共同原因——表面张力。现有的物理模拟技术能够单独模拟流体和固体,但是想要在屏幕上重现表面张力的作用时,我们需要搭建一个全新的模拟框架。
在这篇文章中,我们使用显式三角网格表示流体表面的薄层,并在薄层中建立表面张力模型,然后采用统一的模拟框架将流体、流体表面层和固体三者耦合起来,实现表面张力驱动的流固耦合模拟。在这个框架下,我们可以模拟一些之前不能实现的表面张力效果:密度大于水的物体漂浮在水面上,水面上的物体相互吸引(甜麦圈效应),以及表面张力不足以支撑物体后的水面破碎效果。
2 表面张力
表面张力指的是流体表面会尽可能收缩的趋势。微观原理上是因为流体表面的分子密度比流体内部的分子密度更为稀疏,因而表面分子之间的平均距离更大,所以分子间的相互作用表现为一种吸引力。从宏观上来讲,我们可以定义一个表面张力势能:
其中 是流体表面的面积, 称为表面张力系数。当流体与固体发生作用时,流体表面的分子同时会受到固体分子的作用,从而将表面张力作用在固体上。固体根据表面特性不同可以分为亲水和疏水两类,疏水材质在水面上会受到向上的表面张力作用,对于一些细小的结构来说这个力要比浮力更为明显。比如说水黾是一种可以生活在水面上的昆虫,它的脚非常细长,并且有很多绒毛来保持疏水特性,因而水黾可以依靠表面张力维持自身的重量,并通过脚来划动水面来向前运动甚至跳起。
水黾 © orestART / Flickr
3 方法介绍
我们的耦合系统分为三个部分:流体,表面层,固体。流体部分我们采用传统的欧拉网格的模拟方法,在交错网格(Staggered Grid)上用算符分离的方法求解离散不可压的 Navier Stokes 方程。固体部分采用传统的拉格朗日方法求解牛顿方程。我们的主要贡献在于在流体与固体之间插入了一层有质量、有厚度的流体表面层,这个表面层直接对应我们上面介绍的流体表面分子稀疏的部分。因为这个表面层非常薄,我们可以使用带虚拟厚度的单层三角网格来表示,然后在这个表面层上施加表面张力势能。为了将这三个部分耦合起来,我们在表面层和背景网格、固体和背景网格之间定义了速度的插值矩阵,同时将流体的压强作用在表面层和固体上,以及将表面张力作用在固体上,这样我们将这三部分写进一个三相耦合方程里进行统一求解和更新。最终我们算法的流程如下:
模拟结果:小船和树叶
在这个例子中我们展示了我们方法可以方便地处理薄壳刚体的情况,小船和树叶都使用单层三角网格来表示。在树叶的边界上,我们再次得到了与真实图片几乎完全一致的结果。
模拟结果:水黾机器人
在这个例子中,我们设计了一个类似于水黾的水上机器人,它可以依赖自身的关节驱动在水面上向前运动。
查看更多评论 >