高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


点击上方蓝字CG世界关注我们
“ 感知CG · 感触创意 · 感受艺术 · 感悟心灵 ”
中国极具影响力CG领域自媒体


前两天被一篇文章刷屏了,内容和《冰雪奇缘》相关,但话题的中心人物却是一位清华毕业生。说到这里小伙伴们应该反应过来了,嗷~就是那位开发了新的特效编程语言,用99行代码来实现魔法世界的学霸吧?


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


没错~这位学霸就是毕业于清华大学姚班,目前是麻省理工学院CSAIL( 计算机科学与人工智能实验室)博士生的胡渊鸣,爱好图形设计、动画电影,在基于物理的模拟器中创建和销毁一切东西。你们感受到那种扑面而来的霸道真气了吗?


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

胡渊鸣

麻省理工学院CSAIL博士生


虽然没有亲历《冰雪奇缘》的项目制作,身为CG从业者的小伙伴们都能预知幕后制作需要付出的各种成本。光是第二部的预算就高达1亿5千万美元,由包括80位动画师在内的800位艺术家共同完成,电脑的配置和性能还得相当高才行。影片动画总监和特效动画总监在去年六月中旬安纳西国际动画电影节演讲时表示,“项目仍在制作当中,动画完成还得需要7周,特效完成还得需要10周”,制作过程中模拟风、水、雪花等等的技术复杂性可想而知。

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


这不就是烧钱又烧脑的大型氪金游戏么?要是能有省时省力的实现办法就太好了。为了解决计算机图形学研究对性能的追求以及制作效率低下的问题,胡同学决定重新设计编程语言(等等,难道不该称呼他为渊鸣学霸嘛?)用了大概4个月的时间实现了Taichi的语言设计和编译器

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


胡同学在自己的文章中这样说,只需要99行代码就可以写一个简单的连续介质模拟器,模拟三种相互作用的不同材料(水/果冻/雪),并且在你的笔记本上就能运行”。只要99,雪花水花全都有。

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
14万个水/果冻/雪“粒子”


代码到底长成啥样子就不介绍了,放上来咱们也看不懂。“一个简单的物理场景,普通PC仅需几分钟即可渲染完成,相比TensorFlow提速了188倍、比PyTorch快13.4倍,代码长度只有其他底层方法的十分之一”。正如他在知乎上说的:“这99行代码虽然很短,其背后的故事却很长”。老编努力整理了一下,力求给小伙伴们讲清楚。


既然是连续介质模拟器,咱们就得从物质点法说起。
 
物质点法(Material PointMethod,简称MPM)是一种模拟连续介质的方法,非常适合模拟涉及特大变形和断裂破碎的问题。比如迪士尼独有的基于物理的模拟器之一Matterhorn,就是以其为核心为《冰雪奇缘》中创建雪景效果而开发的,在模拟与校色交互的大量积雪方面非常有效(想了解的小伙伴可以阅读下面这个链接的内容)
https://www.disneyanimation.com/technology/innovations/matterhorn
 
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

由于性能和复杂程度的影响,早期MPM运行速度相当慢,胡同学介绍说,迪士尼一位工程师曾透露《冰雪奇缘》中安娜在雪地上行走的那部分镜头,群集整整做了一个星期。

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

 
于是胡同学在大四暑假的时候,与其他几个小伙伴在宾夕法尼亚大学蒋陈凡夫教授的指导下设计了一个新算法:移动最小二乘物质点法(Moving LeastSquares MPM,简称MLS-MPM),用这种方法来统一仿射粒子元胞法(The AffineParticle-In-Cell Method,简称APIC)中的仿射速度场(affine velocityfield)和MPM中的变形梯度更新(deformation gradient update)两种离散化,结果比之前性能提高了两倍。

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

他们又设计了把MPM和刚体(Rigid body)双向耦合在一起的算法,实现了新的切割模拟,并将文章发表在Siggraph2018上。原文链接如下:
https://github.com/yuanming-hu/taichi_mpm

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
材料切割

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
刚体双向耦合
 
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

在这之后,胡同学用88行C++代码实现了一个独立的MLS-MPM demo,进一步证明了MLS-MPM简易性。“现在那个88行版本几乎成了入门MPM的必备参考实现,连我自己在重新实现MLS-MPM的时候也以它作为参考”,胡同学在自己的文章中这样写到。

?广告?

CG世界推荐动捕品牌:青瞳视觉

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
联系电话:13564203193
网址:www.chingmu.com
 
2017年当胡同学正式进入麻省理工学院读博之后,新一轮的思考又开始了。“既然MLS-MPM只要88行就能实现,那么求出它的导数应该也不会太复杂…”。

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

总之,基于MLS-MPM的可微物理引擎ChainQueen(中文音译“乾坤”)后来就诞生了,是一种针对可变形对象的、实时的可微混合拉格朗日-欧拉物理模拟器,在前向仿真和反向梯度计算中都实现了高精度

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


巨人的脚步从来不会停歇,接下来他又研究了就是用于物理模拟的可微分编程DiffTaichi。Taichi中的可微分编程可以通过蛮力梯度下降有效地优化神经网络控制器,无需使用强化学习。

https://github.com/yuanming-hu/difftaichi

 

在这个项目汇总,胡同学一口气写了8个不同的模拟器,加上合作者的2个,一共用了10个可微物理模拟器来证明DiffTaichi的生产力到底有多高。这些示例中包括弹性体、刚体、流体、光线的折射、弹性碰撞等常见物理环境。

 

■ 可微弹性体模拟(Differentiable Elastic Object Simulator)

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


■ 可微分的3D弹性体模拟(Differentiable 3D Elastic Object Simulator)


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


■ 可微分的3D流体模拟(Differentiable 3D Fliud Simulator)


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


■ 可微分的高度场水模拟(Differentiable Height Field Water Simulator)


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

 

■ 水渲染(Differentiable (Adversarial) Water Renderer),在模拟和着色之后,VGG16认为松鼠图像是金鱼,认为概率高达99.91%。

 

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


■ 刚体模拟(Differentiable Rigid Body Simulator)


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


■ 弹簧质点模拟(Differentiable Mass-Spring Simulator)

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

■多个物体的复杂模拟:台球模拟(Differentiable Billiard Simulator)


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


10种可微分模拟器中的大多数模型可以在2-3小时内模拟完成,而且多数都不需要GPU。DiffTaichi大大提高了差异化物理模拟器的性能和生产率。比如其中可微分弹性对象模拟器比在TensorFlow中的实现速度要快188倍,而且DiffTaichi版本运行速度可以和CUDA一样,但是代码长度却缩短了4.2倍。


再后来,胡同学写了一套运行在Python AST上面的前端编译,把Python AST编译到Taichi AST(import taichi as ti),是因为“Python本身是一门很容易学、普及程度很高的语言,伪装成Python以后的Taichi语言很容易学习,这样设计以后很多常用的Python包,如numpy、matplotlib、PyTorch都可以和Taichi无缝衔接(摘自胡同学的知乎文章),哼哼,下次老编再推荐Python课程的时候还拒绝嘛?


经过几个月的努力,胡渊鸣终于把Taichi改成了pypi安装包,让不同配置不同操作系统的机器都能顺利运行图形学的程序。


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


说到这里,大家心里肯定会对这样一个问题越来越好奇,“胡同学到底是何许人也”?老编带着这个问题到网上逛了一圈,然后发现了…(这里省略了胡同学年少时期的模样唔哈哈哈或或或…)


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


扬州晚报的人物对话栏目《名人会客厅》在2010年对胡渊鸣同学的采访报道,那时胡同学刚刚从参加第16届全国青少年信息学奥林匹克联赛中的上万名初赛选手中脱颖而出,获得了江苏赛区一等奖,以及清华大学的保送资格。而像他这样在高一就能获得保送资格的学生并不常见。


少年胡同学的优异成绩还不仅如此,同年5月获得了第4届亚洲与太平洋地区信息技术奥林匹克大赛银奖。2008及2009年,还在上初中的他获得了全国信息学奥林匹克竞赛分区联赛(NOIP)初中组全国一等奖,之前还有。


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》


胡同学的爸爸是大学信息学教师,小胡在大概八九岁的时候就开始接触计算机方面的书籍了。因为父母经常要上课,就把他放在大学研究生工作室里,看研究生写程序,一开始就是纯属娱乐而已。


在胡同学看来,编程并不枯燥,就像写文章一样,编程一个程序,用一种新算法数据结构优化、迅速地完成一个运算,都是很能带来愉悦感的。


2013年,胡同学进入清华姚班(由世界著名计算机科学家姚期智院士于2005年创办的“清华学堂计算机科学实验班”,致力于培养与世界一流高校本科生具有同等、甚至更高竞争力的领跑国际拔尖创新计算机科学人才),并先后在东西大学、斯坦福大学、微软亚洲研究和宾夕法尼亚大学担任实习生和客座研究员,从事深度学习和计算机图形学研究。2018年8篇论文,博一期间6篇顶会论文,一次又一次证明了胡同学的创新力和闯劲。


高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

写到这里,老编感觉自己整个人通透了,摸了摸自己的发际线…心里猜想一定有很多人非常嫉妒和羡慕胡同学(比如老编本编),从少年时代一路光辉前行,学霸title实至名归,一心研究编程,有女朋友不说,还有非常令人羡慕的头发。高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

想了解更多关于胡同学的研究过程和求学历程,大家可以到知乎上去阅读他写的文章,也很有意思呢~

文章内容信息来源
■ 胡渊鸣知乎原文《99行代码的《冰雪奇缘》》
https://zhuanlan.zhihu.com/p/97700605
■ 扬州晚报报道《胡渊鸣:上高一就被保送大学

http://3g.163.com/news/10/1206/15/6N7SBAKB00014AED.html

■ 论文《DiffTaichi:物理模拟的可微分编程(ICLR 2020)》

https://github.com/yuanming-hu/difftaichi

■ 微信公众号「量子位」文章《清华姚班毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》,网友:大神碉堡!创世的快乐》

■ 论文《带有切割和耦合(CPIC)的高性能MLS-MPM解算器》

https://github.com/yuanming-hu/taichi_mpm

■ Taichi官网介绍
http://taichi.graphics/me/
■ 迪士尼基于物理的模拟器Matterborn介绍
https://www.disneyanimation.com/technology/innovations/matterhorn

-END-


☀️

CG世界官方微信号已满
如需联系(欢迎骚扰)
高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》请加:ilove-cgi

高一保送清华,博一6篇Paper!用99行代码实现《冰雪奇缘》

本文作者:CG世界,如若转载,请注明出处:https://www.cgworld.wiki/28314.html

发表评论

登录后才能评论