十分自然的表面张力模拟效果。

樱桃落在水面,你能分辨出这张图是真实还是模拟的吗?

因为表面张力的存在,落叶可浮于水面、水黾得以在水面爬行,这是十分自然的现象。

而计算机模拟表面张力,也可以达到十分真实的效果。

近日,在由北京大学陈宝权教授研究团队与北京电影学院未来影像高精尖创新中心、达特茅斯学院、德克萨斯农工大学合作的论文《Solid-Fluid Interaction with Surface-Tension-Dominant Contact》中,作者们提出全新的模拟框架处理带表面张力的流固强耦合, 能够精确模拟各种与表面张力相关的物理过程。

本文入选了 SIGGRAPH 2021论文 Trailer(精选预告片),并将在计算机动漫节 Computer Animation Festival (CAF) 上播放,并在 SIGGRAPH 主页推荐。

以下为论文一作、北大图灵班学生阮良旺对此研究的解读。

简介

树叶落在水面上泛起阵阵涟漪,密度比水大的回形针却能漂浮在水面上,这些现象的背后有一个共同原因——表面张力。现有的物理模拟技术能够单独模拟流体和固体,但是想要在屏幕上重现表面张力的作用时,我们需要搭建一个全新的模拟框架。在这篇文章中,我们使用显式三角网格表示流体表面的薄层,并在薄层中建立表面张力模型,然后采用统一的模拟框架将流体、流体表面层和固体三者耦合起来,实现表面张力驱动的流固耦合模拟。在这个框架下,我们可以模拟一些之前不能实现的表面张力效果:密度大于水的物体漂浮在水面上,水面上的物体相互吸引(甜麦圈效应),以及表面张力不足以支撑物体后的水面破碎效果。

表面张力

表面张力原理图,来自wikipedia

表面张力指的是流体表面会尽可能收缩的趋势。微观原理上是因为流体表面的分子密度比流体内部的分子密度更为稀疏,因而表面分子之间的平均距离更大,所以分子间的相互作用表现为一种吸引力。从宏观上来讲,我们可以定义一个表面张力势能:

其中  是流体表面的面积,   称为表面张力系数。当流体与固体发生作用时,流体表面的分子同时会受到固体分子的作用,从而将表面张力作用在固体上。固体根据表面特性不同可以分为亲水和疏水两类,疏水材质在水面上会受到向上的表面张力作用,对于一些细小的结构来说这个力要比浮力更为明显。比如说水黾是一种可以生活在水面上的昆虫,它的脚非常细长,并且有很多绒毛来保持疏水特性,因而水黾可以依靠表面张力维持自身的重量,并通过脚来划动水面来向前运动甚至跳起。

方法介绍

算法原理图

我们的耦合系统分为三个部分:流体,表面层,固体。流体部分我们采用传统的欧拉网格的模拟方法,在交错网格(Staggered Grid)上用算符分离的方法求解离散不可压的 Navier Stokes 方程。固体部分采用传统的拉格朗日方法求解牛顿方程。我们的主要贡献在于在流体与固体之间插入了一层有质量、有厚度的流体表面层,这个表面层直接对应我们上面介绍的流体表面分子稀疏的部分。因为这个表面层非常薄,我们可以使用带虚拟厚度的单层三角网格来表示,然后在这个表面层上施加表面张力势能。为了将这三个部分耦合起来,我们在表面层和背景网格、固体和背景网格之间定义了速度的插值矩阵,同时将流体的压强作用在表面层和固体上,以及将表面张力作用在固体上,这样我们将这三部分写进一个三相耦合方程里进行统一求解和更新。最终我们算法的流程如下:

算法流程图

部分结果展示

这里我们展示我们论文的部分结果,更多结果请查看我们的视频(点文末“阅读原文”跳转)。在樱桃、回形针、树叶和小船这三个例子中,我们使用尽量与真实图片相同的配置进行模拟,都得到了与真实图片相差无几的结果,体现了我们算法的真实性。

例子1:樱桃

真实图片 ©Valery Orlov

模拟结果:樱桃和水/樱桃和牛奶

在这个例子中我们展示了在其他条件都相同的情况下,我们仅仅改变了流体的表面张力系数,樱桃掉进表面张力系数更大的水面上可以漂浮起来,但是在表面张力系数更小的牛奶里就会掉下去。

例子2:回形针

真实图片 © Robert D.Anderson

模拟结果:回形针

在这个例子中我们成功使密度大于水的回形针漂浮在水面上,水面下面的条状背景会因为水面的弯曲而变形,从左到右回形针的密度逐渐增大,中间条纹的密度也在逐渐增加。在最右边的场景中,回形针的密度达到了7.9 g/cm^3(金属铁的密度),是水密度的将近8倍,但是依然可以依靠表面张力漂浮起来,得到的条纹分布与真实图片最为接近。

例子3:树叶和小船

真实图片 © Pictoscribe -/Flickr

模拟结果:小船和树叶

在这个例子中我们展示了我们方法可以方便地处理薄壳刚体的情况,小船和树叶都使用单层三角网格来表示。在树叶的边界上,我们再次得到了与真实图片几乎完全一致的结果。

模拟结果:水黾机器人

在这个例子中,我们设计了一个类似于水黾的水上机器人,它可以依赖自身的关节驱动在水面上向前运动。

模拟水面表面张力,效果自然、真实,北大图灵班研究入选SIGGRAPH相关推荐

  1. 3D人体模型自动生成算法,连肌肉颤动都清晰可见!一作来自北大图灵班

    子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI 我们在打游戏.看动漫的时候,遇到过不少这样的情况: 感觉哪里不太对-- 现在,这些3D人体模型可以得到改进了~体态更逼真.褶皱更自然.肌肉更 ...

  2. 北大图灵班本科生带来动画CG福音,「最懂骨骼的卷积网络」,无需配对样本实现动作迁移 | SIGGRAPH...

    鱼羊 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 我有一个动画形象,我有一套人体动作,可想要把它们组合成真正的动画,可不是 1+1 这么简单. 别看这体型迥异的三位动作整齐划一,支撑动 ...

  3. 北大图灵班本科生获STOC最佳论文奖!这个对标清华姚班的人才计划,正在频频交出答卷...

    乾明 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI ACM计算理论年会(STOC)正在线上举办中. 最新消息,一位江苏常州的小哥哥一口气中了2篇论文,还拿下了最佳论文奖. 而且他还是名本 ...

  4. 姚班和北大计算机哪个更牛,北大图灵班与清华姚班到底选择哪一个?

    原标题:北大图灵班与清华姚班到底选择哪一个? 北京大学新开的"图灵班"!与清华大学"姚班"形成竞争之势.清北学堂信息学金牌教研团今天给您整理看看北大图灵班和清华 ...

  5. 北大图灵班对比清华计算机系,清华姚班闻名国内,却不知道北大有“图灵班”,实力不输清华...

    清华姚班闻名国内,却不知道北大有"图灵班",实力不输清华 自从计算机问世后,在世界各国发展中,这都是一项重要技术,在这个领域掌握了尖端技术,国家的发展将会很超前,科研是离不开计算机 ...

  6. 非香农类信息不等式_ICLR2020|北大图灵班本科生满分论文:计算约束下有用信息的信息论...

    机器之心转载 来源: 北京大学前沿计算研究中心 作者:许逸伦 本文是第八届国际表征学习会议 (ICLR 2020) 入选口头展示论文 (oral)<基于计算约束下的有用信息的信息论 (A The ...

  7. 北大图灵班学子斩获全球竞赛本科生第一名,攻关EDA“卡脖子”技术难题

    近日,2022年度国际计算机学会(ACM)学生科研竞赛 (SRC) 全球总决赛获奖名单正式出炉!其中,来自北京大学图灵班的郭资政凭借其在芯片设计自动化(EDA)领域的贡献,斩获了本科生组全球第一名(F ...

  8. 北大图灵班学子斩获全球竞赛本科生第一名,攻关EDA“卡脖子”技术难题!

    整理 | 于轩 出品 | 程序人生(ID:coder_life) 近日,2022年度国际计算机学会(ACM)学生科研竞赛 (SRC) 全球总决赛获奖名单正式出炉!其中,来自北京大学图灵班的郭资政凭借其 ...

  9. 北大图灵班本科生吴克文获STOC 2020最佳论文奖

    来源|机器之心 今天,北京大学前沿计算研究中心官方公众号报道称,在全球计算机理论顶会 STOC 2020 上,北大本科生吴克文有两篇论文发表,其中一篇获得了最佳论文奖. 根据北京大学前沿计算研究中心官 ...

最新文章

  1. SER SERVER存储过程
  2. Linux网络通信管理
  3. 温度 数值模拟 matlab,西安交通大学 - 温度场数值模拟(matlab)
  4. python详细教程-Python入门教程:超详细1小时学会Python
  5. 适用于芯片验证工程师的atom插件列表
  6. 成功解决利用matplotlib.pyplot进行绘图的时候整个画布中的绘制曲线只显示一部分
  7. java 泛型的上限与下限、泛型通配符、泛型上下限
  8. 面试—每日一题(7)
  9. c语言 字体点阵取模,[汉字取模软件怎么用]单片机点阵汉字显示需要用
  10. jsp模糊查询_[内附完整源码和文档] 基于JSP+Servlet校园二手交易平台
  11. 亚马逊云平台采集转单机采集实现
  12. 三目运算符?:结合性
  13. win10怎么进入修复计算机,Win10怎么进入安全模式以及Win10:使用Windows恢复环境轻松修复...
  14. python实现电脑自动开机_python自动循环定时开关机(非重启)测试
  15. [bzoj4199][NOI2015]品酒大会
  16. uniapp实现苹果支付流程
  17. android桌面 vulkan,Vulkan 设计指南
  18. 九宫格六边形html,六边形拼图
  19. c语言isfinite用法,C# Double.IsFinite()用法及代码示例
  20. 21年 河海大学 计算机科学与技术(838) 学硕 上岸心得

热门文章

  1. ASM - 指令01 MOV
  2. 云队友丨陆奇:在未来,究竟哪种职业创造财富的机会最大?
  3. 【网络工程师配置篇】华为RIP路由基础配置续篇——重分发
  4. 手机报彩信易操作平台
  5. Java 实现位运算计算加减乘除
  6. obj-y,obj-m 区别
  7. 柔性机械臂_少年,这儿有个“超柔软”的6轴机械臂求带走
  8. 如何利用EXCEL生成任意自由度任意显著因子的F分布表
  9. MySQL 基础入门_04SQL基础
  10. 爬虫----request简介(以及urllib模块和request模块保存图片区别)