晓查 发自 凹非寺
量子位 出品 公众号 QbitAI
“买 bug 送游戏”对育碧游戏的玩家来说简直是常态。即使是育碧的当家游戏《刺客信条》、《孤岛惊魂》系列也是 bug 也是多到令人发指。
比如《刺客信条:大革命》中,主角的脸部建模突然失控,变成一张“滑稽脸”。
又或者是人物总会卡死在奇怪的地方。
最近,育碧蒙特利尔工作室,也就是开发出上面几款游戏的知名工作室,他们的研究员最近提出了一种游戏世界中的物理模拟方法,能够包括模拟布料的飘动和和其他弹性物体的变形。
这种方法结合机器学习,能比之前的标准物理模拟方法快 300 到 5000 倍,每秒甚至能模拟 3000 多帧画面!
文章的第一作者 Daniel Holden 在 Twitter 上公布了这项研究后,不少育碧玩家表示非常期待。
效果
研究人员在不同场景中模拟了不同物体在外力作用下的变形。
球在撞击一只兔子:
人物在跳动的时候,斗篷和裙子如何随风飘动:
然而在实际的游戏场景中,发生变化的物体可能不止一个,所以育碧还进行了压力测试。让几百只兔子在同一幅画面中被挤压撞击,还有 16 个人一起在画面中跳舞,观察斗篷的变化。
每个测试都能在 120FPS 和 240FPS 的帧速率独立模拟运行。
原理
这种方法的核心思想是将神经网络与子空间模拟相结合,产生一个可以完全在模拟子空间中运行的模拟步骤,并且能同时与外部对象进行交互。
作者使用 Maya 软件的 nCloth 离线获取训练数据X和Y,执行 PCA 获得压缩的表征Z和W。然后将Z和W输入神经网络φ进行训练,预测z*的压缩状态、给定对象z的先前状态zt-1,以及外部对象的压缩状态w*,从模型输出直接计算模拟对象位置x*和法线ñ*,用于渲染。
算法中还包括多种优化,比如高效的 GPU 解压缩算法和顶点法线逼近方法。
这种方法一个重要的优势是它的性能,运行速度更快,内存占用更少。下表列出了,它与其他方法的对比。结果证明,该方法相比标准模拟方法中实现了~300×到~5000 倍的加速。即使与其他最先进的方法(如 HRPD)相比,它也具有良好的性能。
以上所有性能测试均是在 Intel Xeon E5-1650 3.5 GHz CPU 和 GeForce GTX 1080 Titan GPU 上进行。
当然,育碧最后还是逃不过 bug 的命运。这套方法也并非没有局限性,如果某些参数过大,仍然会产生错误的模拟结果。
前面演示的小球碰撞布料的模拟,如果小球的速度足够快,就能直接穿过去,好像布料完全不存在一样。
论文地址:
http://theorangeduck.com/media/uploads/other_stuff/deep-cloth-paper.pdf
— 完 —