一块CPU就能运行超逼真水流特效!胡渊鸣的算法被这样实现,本人看了都说好...
郭一璞 鱼羊 发自 凹非寺
量子位 报道 | 公众号 QbitAI
还沉醉在《黑神话:悟空》精细的3D计算机特效里呢?
做3D特效这件事儿,一浪更比一浪强。
最近,一位名叫John Lin的网友,就分享了自己做的3D流体特效。
注意,用GPU渲染之后,运行下面分享的所有特效效果,都只要一块CPU。
而且是实时的,你可以用鼠标操纵改变水流和环境。
比如,彩虹色的流水注入不规则的泳池,整个水流的形状、波澜,完全符合现实世界的物理特征。
水满则溢,右边的瀑布划出了漂亮的抛物线。
甚至还能做出这种类似跑马灯的效果。
水扬上天,瞬间激起了洁白的浪花,冲撞天花板的各个角落。
如果把地形改的再复杂一点呢?
比如,我们把地形改成苏州园林里的狮子林这种不规则假山组成的风格?
加上水流,顿时就有了灵动的江南感。
视角穿行其中,就像走在溶洞里一样。
如果水流激荡,一样能穿过每条石头缝。
真想@一下《江南百景图》的策划,下一部游戏别做2D平面风格了,做出这样的特效岂不是更加状况?
甚至,水流还可以适应动态的地形。
不信你看下面的例子。
水流穿过上层容器中心的洞,形成瀑布浇灌下层容器。
如果我们把两层之间的隔板删掉,模拟的水流依然可以适应地形的变化,用更快的速度坠落。
简直巧夺天工。在只用一块CPU的情况下,有效粒子最高值达到了200万之高。
如果不过瘾,你可以可以看看视频完整版:
其实,上面的特效用到的工具是MLS-MPM算法,它的一作正是姚班毕业生、MIT在读博士胡渊鸣大神,在宾夕法尼亚大学蒋陈凡夫老师的指导下完成。
水流的效果,让胡渊鸣本人都觉得惊艳,称赞作者代码功底强。
而且,不少同行开发者看到之后也都赞叹不已,impressive、awesome,各种好词轮流夸:
他们觉得,能在单个的CPU核心上跑起来,简直惊人。
MLS-MPM是什么
胡渊鸣团队发表在SIGGRAPH 2018上的一篇论文,介绍了MLS-MPM算法。
MLS-MPM,全称是Moving Least Squares Material Point Method,移动最小二乘材料点方法。
用移动最小二乘法,将APIC(The Affine Particle-In-Cell Method)和动量方程弱形式一致的力计算统一起来,实现了新的应力散度离散化,使MPM的运行速度快了两倍,还成功模拟了MPM此前并不支持的各种新现象,包括材料切割、动态开放边界和刚性体的双向耦合。
它的基本步骤是这样的:
(1)从粒子到网格。使用APIC将质量和动量从粒子转移到网格上。
(2)更新网格动量。用半隐式欧拉法或隐式欧拉法更新网格动量。
(3)从网格到粒子。使用APIC将网格中的速度和仿射/多项式系数传递给粒子。
(4)粒子变形梯度。利用速度梯度的MLS近似更新粒子变形梯度。
(5)更新粒子塑性。预测粒子变形梯度的塑性(如果有的话)。
(6)粒子平移。用新速度更新粒子位置
与传统MPM唯一的区别是步骤(2)中力的表达和步骤(4)中粒子变形梯度的更新。
MLS-MPM在这两个步骤中均比MPM更容易实现,可以轻松实现性能的提升。
另外,为了解决材料不连续和刚体耦合等问题,胡渊鸣团队还开发了Compatible Particle-In-Cell(CPIC)算法,允许基于粒子和网格节点之间的相对位置的材料点不连续和无限薄的边界。
这样就可以把MPM和刚性体双向耦合在一起,实现切割的模拟。
现在,借助这个算法,就可以实现各种和符合物理规则、看起来像真的一样的运动特效了。
传送门
如果你想具体了解MLS-MPM算法,可以看这篇论文:
A Moving Least Squares Material Point Method with Displacement Discontinuity and Two-Way Rigid Body Coupling
http://taichi.graphics/wp-content/uploads/2019/03/mls-mpm-cpic.pdf
GitHub地址在此:
https://github.com/yuanming-hu/taichi_mpm
不过,由于这个项目比较早期,胡渊鸣本人更推荐使用「太极」:
https://github.com/taichi-dev/taichi
试一试,说不定能做出更惊艳的作品?
— 完 —
本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。
每天5分钟,抓住行业发展机遇
如何关注、学习、用好人工智能?
每个工作日,量子位AI内参精选全球科技和研究最新动态,汇总新技术、新产品和新应用,梳理当日最热行业趋势和政策,搜索有价值的论文、教程、研究等。
同时,AI内参群为大家提供了交流和分享的平台,更好地满足大家获取AI资讯、学习AI技术的需求。扫码即可订阅:
加入AI社群,与优秀的人交流
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
喜欢就点「在看」吧 !
一块CPU就能运行超逼真水流特效!胡渊鸣的算法被这样实现,本人看了都说好...相关推荐
- 处理器体系结构(了解CPU的基本运行原理)——《深入理解计算机系统》
处理器体系结构 ISA 一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA. 虽然每个厂商制造的处理器性能和复杂性不断提高,但是不同型号在ISA级别上都保持着兼容.因此,ISA在编译器 ...
- 如何用3D流体实现逼真水流效果?
华为应用市场在2022年HDC大会期间发布了一款3D水流主题,基于华为HMS Core Scene Kit服务能力,展现立体灵动的水流岛屿,可跟随用户指尖实现实时流体波动效果,既趣味又解压. 让变幻莫 ...
- CPU的主频、超频和内存异步(一)
(1)CPU主频和内存主频 CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed).通常所说的某某CPU是多少兆赫的,而这个多少兆赫就是"CPU的主频".很多人 ...
- linux下把进程绑定到特定cpu核上运行
现在大家使用的基本上都是多核cpu,一般是4核的.平时应用程序在运行时都是由操作系统管理的.操作系统对应用进程进行调度,使其在不同的核上轮番运行. 对于普通的应用,操作系统的默认调度机制是没有问题的. ...
- 为什么要把进程/线程绑定到特定cpu核上运行?(cpu core id coreIdx)opdevsdk_sys_bindThreadCoreId()
看海康hikflow_demo代码,在线程处理函数里调用了绑定函数,把这个线程绑定到某个cpu核上,不知为何要这么做? 原因 答1 现在大家使用的基本上都是多核cpu,一般是4核的.平时应用程序在运行 ...
- 主创仅2人,题材是大型3D战争,这款游戏竟然“超逼真”?
导语: GWB腾讯游戏创意大赛已举办5年,每年都有很多优秀作品来报名,今年也不例外,<超逼真的攻城模拟器>就是其中之一.我们找到了其研发团队--惊叫盒游戏(Screambox Studio ...
- project项目导入java路径_Eclipse项目怎么导入IDEA并运行(超详细)
导入项目 集成环境:intellij idea 2020.1.2 演示系统:dell windows 10 eclipse项目如何导入idea并成功运行,从头到尾步骤,保姆式图解如下: 首先准备好一个 ...
- js制作的模拟超逼真下雨效果
一层秋雨一层凉. 小楼一夜听春雨. 虞美人·听雨 少年听雨歌楼上.红烛昏罗帐.壮年听雨客舟中.江阔云低.断雁叫西风. 而今听雨僧庐下.鬓已星星也.悲欢离合总无情.一任阶前.点滴到天明. 我是那迷恋微雨 ...
- 中国上海人工智能CIMCAI世界第一完成两百万次AI验箱上亿次箱识别,成熟AI产品运行超7百万小时智慧港航智能化中国上海人工智能
中国上海人工智能CIMCAI世界第一完成两百万次AI验箱上亿次箱识别, 成熟AI产品运行超7百万小时智慧港航智能化,全球港航人工智能独角兽企业CIMCAI成熟港航AI产品, 应用码头港区海关仓库口岸铁 ...
最新文章
- linux看目录用的哪个磁盘,linux查看目录大小及硬盘大小
- 【深度学习】Keras和Tensorflow框架使用区别辨析
- C++ Primer 5th笔记(9)chapter9 顺序容器 forward_list
- [密码学] 公钥密码基础与RSA
- matlab程序设计实践,MATLAB程序设计实践(第二题)
- 20145309 《信息安全系统设计基础》第5周学习总结
- oracle创建表空间和用户授权
- LeetCode 1103. 分糖果 II
- arcmap中使用python_ArcMap - 使用python更新列中的值
- 190408每日一句
- Spring 揭秘 12.1
- 禁忌搜索算法学习笔记
- 迅雷精简版 for Mac!附精简教程!
- html+css模拟京东商城登陆首页
- c语言 四层电梯算法,电梯算法c语言
- 基于Python的MACD顶底背离形态的实现
- 扫地机器人作文说明文提纲_扫地机器人的作文
- aspose html转换pdf,aspose html转pdf java
- 国税局发票查验API接口文档说明
- 微信的服务器 上海,微信团队:上海机房服务器发生故障 个人账号安全暂不受影响...