图形学的未来:投身业界、布料仿真大牛王华民谈实时模拟的前世今生

简介: 最近一段时间,数字人、元宇宙(metaverse)、云游戏等新概念变得异常炙手可热。很多圈外人士对此兴奋不已,觉得科幻电影中的场景马上就要实现了。可很少有人会指出,在通往虚拟未来的道路上其实还有一块绊脚石:实时物理模拟。本文为王华民教授结合自己的研究对实时物理模拟的一些看法。

微信图片_20211206111544.jpg



不管是图形学圈内还是圈外,实时的重要性一直缺乏足够认识。 长期以来,圈内存在着一个误解:实时技术应该留给工业界开发。不少人觉得实时技术无非是把非实时技术优化一下。这种误解造成了图形学今天的尴尬局面。 一方面,非实时技术的应用基本仅在后期视效,而这一块已相当饱和。另一方面,大量亟需实时技术的应用,如高质量VR,数字人、虚拟试衣、虚拟手术等等,却迟迟无法落地。


微信图片_20211206111547.jpg


随着 NVIDIA RTX 方案的推出,实时渲染的问题已经逐渐解决。相比之下,实时物理模拟变得非常重要。和渲染不同,模拟的多样性决定了实时模拟无法单纯依赖硬件解决。RTX的加速结构也只能解决一小部分模拟问题。


微信图片_20211206111550.jpg


过去


二十年前,当我跨入图形学圈的时候,是不存在物理模拟这个概念的。当时模拟的主要应用是制作电影特效。而实时物理模拟被认为是mission impossible。


微信图片_20211206111553.jpg

加勒比海盗:世界尽头(2007)中的漩涡效果,由 ILM 的 Frank Lossaso-Petterson 利用斯坦福大学的 PhysBAM 物理模拟引擎完成。Frank 与本文作者是斯坦福的同研究组同学。


从技术上讲,物理模拟可以划分为流体模拟和形变体模拟两大类。这样的划分不太严格,但形变体模拟,包括弹性体模拟、布料模拟、头发模拟等等,有很多的共同之处。这与流体模拟是不太一样的。这与流体模拟有很大不同。


微信图片_20211206111556.jpg


与流体相比,形变体更加常见,应用的范围也更加广阔。读博期间(2004 年 - 2009 年),我主要研究的是流体。毕业以后,我逐渐意识到形变体的重要性,改为研究形变体。


早期的实时物理模拟技术非常简陋。很多时候需要牺牲模拟质量或者物理正确性。


回过头来看,Projective Dynamics (SIGGRAPH 2014) 是一篇非常重要的论文。它的重要性不在于提出的技术本身,而在于让很多人意识到物理模拟与非线性优化之间的相关性。从此大家的思路被打开了。


微信图片_20211206111600.jpg


以此出发,包括我们在内的各个研究团队不断提升形变体模拟的效率,使得新一代的物理模拟引擎越来越快。


值得一提的是,我们团队主要研究 GPU 上的物理模拟。和 CPU 相比,GPU 的并行能力更加出众。我们的模拟引擎的表现也更加出众。


与此同时,我们的模拟算法也需要适配GPU硬件的并行特性。想直接把CPU上的技术搬上GPU是很难成功的。


现在


时至今日,我觉得高质量的实时形变体模拟已经部分可行了。


首先说说游戏。游戏里使用的形变体模拟大多以 position-based dynamics (PBD) 技术为主。一个典型的实例是 NVIDIA 的 NvCloth。作为一个十多年旧的技术,PBD依旧活跃在今天,其实有着深刻的原因。


微信图片_20211206111603.jpg


一个最主要的原因在于现如今很多游戏需要考虑到跨平台,特别是移动端的的运行效率。而在一个游戏中,留给物理模拟的资源非常有限。对于模拟算法而言,内存访问通常会导致很大的计算成本。像PBD这样缺乏物理意义的算法就显得廉价且高效。


微信图片_20211206111607.jpg


PBD 的缺点也很明显。当模拟需要的网格规模变大(比如超过 1024 个顶点),PBD 的效率就不再那么优秀了。


遗憾的是,目前似乎并没有比 PBD 更适合游戏的实时模拟方法。如何为游戏提供高质量实时模拟将会是一个很重要的难题。


倘若我们把硬件资源的限制放宽些,允许模拟引擎可以完全使用最新的 GPU,那现状还是比较乐观的。


比如,我们 2016 年的工作,已经能在 GeForce GTX TITAN X 上实时模拟近 6 万个四面体网格的超弹性效果 (hyperelasticity)。


微信图片_20211206111610.jpg

一条被拉得扭曲的龙。


而今年(2021)我们在 SIGGRAPH 上展示的工作,更是能够在 2080Ti 上实时模拟一件有着 11 万个三角形的衬衫。


微信图片_20211206111613.jpg


形变体模拟的开发主要有两个技术门槛:运动求解(dynamics solver)与碰撞处理(collision handling)。在人体组织、肌肉等需要四面体网格模拟的场景中,运动求解通常是计算开销的主要来源。而对于服装、头发等模拟而言,碰撞处理尤为重要。


如何安全、稳定、高效地处理自碰撞,是所有形变体模拟引擎绕不开的问题。


需要提到的一点。大多数非实时碰撞处理技术无法在GPU上有效并行。因此,我们的团队最近把大量的精力放在利用GPU进行高效碰撞处理上。我们今年的工作将会是一个重要的开端。

未来


在不久的将来,GPU 毫无疑问会越来越快。


但我们不能单纯把实时模拟寄希望于硬件的提升上。过去,实时模拟技术的发展同时依赖于硬件的提升与算法的支持。未来,我们同样需要开发更高效、更匹配硬件的模拟算法,来实现更高质量的物理模拟。


我觉得,多重网格(multigrid)


微信图片_20211206111617.jpg


多 GPU 并行


微信图片_20211206111620.jpg


等等,都会是值得研究的方向。


事实上,我最近在 SIGGRAPH 2021 发表的工作,已经可以以一秒一帧的效率模拟一千万个三角形的服装了。


微信图片_20211206111623.jpg


对于流体,我其实特别喜欢基于各种波的实时水面模拟算法。我之前在佐治亚理工的同学,现在在奥地利IST的Chris Wojtan教授就做过很多这方面研究。当然,流体的表现形式太多样了。如果想实时模拟大规模的水花四溅还需要更多的工作。

微信图片_20211206111626.jpg


以假乱真的实时模拟效果出现的那天,不会太遥远。


作者简介:王华民,俄亥俄州立大学终身教授,四届 SIGGRAPH 技术论文委员会委员,公认的世界级图形学科学家。他还是凌迪科技 Style3D 首席科学家兼凌迪研究院院长。他曾以唯一作者身份独立完成四篇 SIGGRAPH(全球规模最大、影响最大的图形学会议)论文。王华民的论文也屡屡被指定为斯坦福、UC 伯克利等名校图形学课程的参考文献。


他的学生遍布知名大厂,从硅谷的 Google、Facebook、Adobe,到国内的阿里、字节、百度等图形和模拟开发领域的重要岗位,都有他曾授业解惑的门徒。业内流传:如果你研究布料仿真,就不可能没读过王华民教授的论文。

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
人工智能 弹性计算 关系型数据库
OCP China Day 2022:vODLA异构计算资源池化技术架构和实践
OCP会议信息8月10日,由OCP社区主办、浪潮信息承办的OCP China Day 2022(开发计算中国技术峰会)在北京举行。开放计算正式成为当前及至未来数据中心的创新主力,通过全球化协作的创新模式,解决数据中心基础设施可持续发展的重大问题。OCP China Day作为开放计算领域生态覆盖最广且最具影响力的亚洲最大年度技术峰会,迄今已经成功举办4届。本届峰会以“开放.向未来:绿色、融合、赋能
OCP China Day 2022:vODLA异构计算资源池化技术架构和实践
WK
|
12月前
|
机器学习/深度学习 算法 数据挖掘
PSO算法的应用场景有哪些
粒子群优化算法(PSO)因其实现简单、高效灵活,在众多领域广泛应用。其主要场景包括:神经网络训练、工程设计、电力系统经济调度与配电网络重构、数据挖掘中的聚类与分类、控制工程中的参数整定、机器人路径规划、图像处理、生物信息学及物流配送和交通管理等。PSO能处理复杂优化问题,快速找到全局最优解或近似解,展现出强大的应用潜力。
WK
626 1
|
7月前
|
存储 缓存 监控
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
693 1
|
存储 NoSQL 编译器
实战总结|抽丝剥茧,记一次神奇的崩溃
本文详细回放了一个崩溃案例的分析过程。回顾了C++多态和类内存布局、pc指针与芯片异常处理、内存屏障的相关知识。
|
11月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
488 2
|
测试技术 Linux
linux 服务器运行jmeter 进行服务性能压测
linux 服务器运行jmeter 进行服务性能压测
934 0
|
机器学习/深度学习 存储 算法
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现(下)
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
|
人工智能 前端开发 算法
前端如何快速实现 3D 虚拟形象?
前端如何快速实现 3D 虚拟形象?
1643 1
|
缓存 编译器 程序员
C/C++编译器全局优化技术:全局优化是针对整个程序进行的优化,包括函数之间的优化
C/C++编译器全局优化技术:全局优化是针对整个程序进行的优化,包括函数之间的优化
355 0