机器学习如何彻底改变游戏中的物理模拟

来源:AI科技评论

编译:琰琰

编辑:王晔

量子力学奠基者之一、英国理论物理学家保罗·狄拉克(Paul Dirac)在1929年说过:“大部分物理和化学所需要的数学理论的定律都是已知的,但这些定律的方程太复杂无法求得精确解”。他认为,从蛋白质折叠、材料失效到气候变化,所有的物理现象都可以模拟为量子计算。但由于控制方程太复杂,科学家无法在现实的时间尺度上求解。

那么,这是否意味着我们永远无法实现实时物理模拟?

以前物理学家通过模型开发、求近似解等方法可以在较短时间内达到预期的结果。然而,随着研究、软件和硬件技术的进步,实时仿真只能在极限条件下才能够实现,这一点在视频游戏物理学中最为明显。

模拟物理现象(如碰撞、变形、破裂和流体流动)属于密集型计算。在游戏中实时模拟此类现象需要对不同的算法进行了大量的简化和优化。目前最先进模拟方法是刚体物理学(rigid body physics),它可以确保两个物体在碰撞和反弹的过程中不会发生变形或断裂,这是模拟虚拟游戏的基础。当两个物体碰撞时,算法能够进行实时检测并采用适当的力模拟碰撞。

如下,电子游戏中的“摧毁”可能是刚体物理学应用的最佳示例。

需要说明的是,刚体物理学可用于模拟不变形物体的碰撞,但虚拟游戏中往往存在着大量可变形物体,比如头发、衣服。而要想解决这个问题就需要用到柔体动力学(soft-body dynamics)

以下是模拟可变形物体的四种方法(按复杂度排序)

1

弹簧质量模型(Spring-Mass Model)

由命名可知,弹簧相互连接的点的质量系统代表模型检测的目标,我们可将其视为三维胡克定律网络。胡克定律是力学弹性理论中的一条基本定律,它表明受力固体材料中的应力与应变(单位变形量)之间成线性关系。

该模型的主要缺点是建立质量弹簧网络时需要大量的人力成本,并且材料特性与模型参数之间没有严密的逻辑关系。但尽管如此,该模型在“BeamNG.Drive”赛车游戏中也达到了非常不错的效果,如下图,基于弹簧-质量模型的实时车辆模拟器,可用于模拟车辆变形。

2

基于位置的动力学

(Position-bsed Dynamics,PBD)

运动学模拟的方法通常基于力学模型,如粒子加速度遵循牛顿第二定律计算,通过积分计算获取每个时刻的速度和位置。

在基于位置的动力学,通过求解约束方程的准静态问题来计算位置。PBD方法的精确度较低,但计算速度优于基于强制的方法,因此非常适合游戏、动画电影等视觉场景。游戏中人物的头发、衣服的运动通常都是采用该模型来实现。PBD不仅局限于可变形固体,还可用于模拟刚体物体和流体。更多内容可参考这篇关于PBD方法的综述[2]。

3

有限元法(finite element method ,FEM)

有限元方法计算变形材料是基于弹性场理论求解应力-应变方程。

它本质上遵循3D胡克定律,首先将材料划分为四面体的有限元,通过求解线性矩阵方程,获得每个时刻步长上顶点上的应力和应变。FEM是一种基于网格的软体动力学模拟方法,它的优点是精确度高,且模型参数与材料特性(如杨氏模量和泊松比)直接相关。一般而言,FEM模拟在工程应用方面不能实时运行,但最近知名半导体公司AMD发布多线程FEM库,表明FEMFX在游戏中可实时模拟变形材料。

AMD的实时有限元解算器FEMFX模拟木材断裂

AMD的FEMFX模拟塑性变形

4

材料点法(Material Point Method ,MPM)

MPM是一种高精度的无网格方法,它比基于网格的方法更适合模拟变形、断裂、多材料系统和粘弹性流体,因为运行效率和分辨率更高。MPM是目前最先进的无网格混合欧拉/拉格朗日的方法,是细胞内粒子(PIC)和流体隐式粒子(FLIP)等传统方法的升级。

MPM模拟不是实时运行的,在一个含有一百万个点的系统中,MPM每帧大约需要半分钟。详细内容可见MPM综述文章[3]。

一片面包的撕裂模拟需要1100万MPM粒子

5

机器学习与物理模拟

以上四种方法与机器学习有什么关系呢?

我们注意到,基于传统方法,模型的计算速度、精度/分辨率等指标已经陷入了一种瓶颈。物理解算器经过过去几十年的优化,其发生阶跃式改进的空间已所剩无几。而在此背景下,机器学习就派上了用场。

最近,牛津大学[5]、Ubisoft La Forge实验室[6]、DeepMind公司[7,8]以及苏黎世联邦理工学院[9]的研究表明,深度神经网络可以学习物理间的相互作用并实现模拟,重点是速度可以提高多个数量级。其过程大致为:生成数以百万计的模拟数据——通过神经网络进行训练——使用经过训练的模型模拟物理解算器。

其中,生成数据和训练模型阶段会耗费大量时间,但经过训练的神经网络模型在模拟物理阶段速度会非常快。例如,牛津大学的研究人员[5]开发了一种被称为:深度仿真器网络搜索(Deep Emulator Network Search,DENSE)的方法,该方法将模拟速度提高了20亿倍,并通过了10个科学案例的验证,包括天体物理学、气候、聚变和高能物理学。

在游戏领域,Ubisoft La Forge研究团队开发的模型使用简单的前馈网络,通过在三个时间帧中对3D网格对象的顶点位置进行训练来学习预测下一帧[6]。该模型本质上是将预测与模拟数据集中的已知位置进行对比,并通过反向传播来调整模型参数,以最小化预测误差。

该团队使用Maya的nCloth物理解算器生成模拟数据,这是一种针对布料优化的高级弹簧质量模型。他们还实施了主成分分析(PCA),实验表明,仅在最重要的基础上进行训练,神经网络模拟物理的速度比物理解算器快5000倍。

数据驱动下的布料和粘性材料的物理模拟

相关视频: https://www.youtube.com/watch?v=yjEvV86byxg

同样,DeepMind的团队近期在图形网络方面的工作也取得了惊人的成果[7]。与传统神经网络的每一层节点相连不同,图神经网络直接具有类似于图的网络结构。利用图网络模型,该研究团队成功地模拟了各种刚性、柔性材料,如沙子、水、黏液等。

该模型预测的不是粒子的位置,而是加速度。它使用欧拉积分计算速度和位置;使用一系列物理解算器(包括PBD、SPH和MPM)生成模拟数据。由于没有针对速度进行特殊优化,该模型没有明显快于物理解算器,但它证明了机器学习与物理可以进行有效的结合。

复杂物理模拟与深度学习预测之间的比较

相关视频: https://www.youtube.com/watch?v=h7h9zF8OO7E

虽然该研究领域仍处于初级阶段,但我们观察到基于深度学习的技术进一步增强了物理模拟。从量子力学、分子动力学到微观结构以及经典物理,各种规模和复杂度的物理现象都有很多模拟模型,我们相信,机器学习和物理学二者结合将创造巨大的潜在价值。

相关研究

[1] Paul Dirac, Quantum Mechanics of many-electron systems, Proc. R. Soc. Lond. A 123, 714 (1929)

[2] J. Bender et al., A Survey on Position Based Dynamics, EUROGRAPHICS (2017)

[3] Chenfanfu Jiang et al., The Material Point Method for Simulating Continuum Materials, SIGGRAPH courses (2016)

[4] J. Wolper et al., CD-MPM: Continuum Damage Material Point Methods for Dynamic Fracture Animation, ACM Trans. Graph. 38, 119 (2019)

[5] M. Kasim et al., Building high accuracy emulators for scientific simulations with deep neural architecture search, arXiv (2020)

[6] D. Holden et al., Subspace Neural Physics: Fast Data-Driven Interactive Simulation, SCA Proc. ACM SIGGRAPH (2019)

[7] A. Sanchez-Gonzalez et al., Learning to Simulate Complex Physics with Graph Networks, Proc. 37th Int. Conf. ML, PMLR, 119 (2020)

[8] T. Pfaff et al., Learning Mesh-based Simulations with Graph Networks, arXiv (2021)

[9] B. Kim et al., Deep Fluids: A Generative Network for Parameterized Fluid Simulations, Computer Graphics Forum, 38, 59 (2019)

编译连接:hppts://www.reddit.com/r/MachineLearning/comments/phvgzb/r_how_machine_learning_will_revolutionise_physics/

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)大脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《动手学深度学习 PyTorch版》学习笔记(二):自动求梯度

一、自动求梯度 1、requires_grad_(), detach(), torch.no_grad()的区别 参考博客:https://www.jianshu.com/p/ff74ccae25f3 2、.grad_fn 每个Tensor都有一个.grad_fn属性,该属性即创建该Tensor的Function, 就是说该Tensor是不是通过某些运算得到的&am…

学习计划1

今天开始着手做热词的项目,但是对于数据的处理仍然没有好的办法,网上最多的方法便是用C#操作,但是在尝试之后仍然没有进展转载于:https://www.cnblogs.com/ljysy/p/10574018.html

线性表——顺序表

1 算法思想:顺序遍历整个链表,找出最小值元素,用一个min存储这个值,同时将最后一个元素填补此值#define Maxsize 100 typedef Elemtype int typedef struct{Elemtype data[Maxsize];int length; }bool delmin(sqlist &L,Elem…

重新认识区块链:1550余个应用案例带来的启示

来源:资本实验室,本文摘自《2021全球区块链应用市场报告》当我们谈论区块链的时候,但凡对区块链有所了解的人都能够就相关主题或多或少地表达出自己的一些见解。例如:从技术体系上看,区块链是分布式数据存储、点对点传…

线性表——链表

#include <iostream> #include <bits/stdc.h> using namespace std;typedef int Elemtype; //定义单链表 typedef struct Lnode{Elemtype data;struct Lnode *next; }Lnode,*Linklist; int a[4]{1,2,3,4}; int n4;//建立不带头节点的链表 void buildlist(Lnode *L)…

《动手学深度学习 PyTorch版》学习笔记(三):线性回归

线性回归输出是一个连续值&#xff0c;因此适用于回归问题。回归问题在实际中很常见&#xff0c;如预测房屋价格、气温、销售额等连续值的问题。 一、基本要素 摘自原书 模型定义 设房屋的面积为 x1&#xff0c;房龄为 x2&#xff0c;售出价格为 y。我们需要建立基于输入 x…

php 实现图片上传并压缩功能

前段时间由于项目需要&#xff0c;要实现图片上传并且压缩生成缩略图的功能。 接口代码如下&#xff1a; $allowext array ( png, jpg, jpeg, gif,mp4,doc); $fileElement file; $filepath_rel userfiles/upload/chatfile/.date("Ymd")."/"; // 相对路径…

OpenAI 是如何被10亿美元收买了“非盈利”灵魂的?

来源&#xff1a;AI科技评论编译&#xff1a;陈彩娴、琰琰近日&#xff0c;一篇名为“How OpenAI Sold its Soul for $1 Billion”&#xff08;OpenAI是如何因为 10 亿美元出卖自己的灵魂&#xff09;的文章在 Reddit 上引起了热议。文章作者 Alberto Romero 抨击知名的非营利机…

传输速率、波特率、奈氏准则

波特率与传输速率 波特率与数据传输速率C的关系&#xff1a;CBlog2N N:为一个码元所取的离散值的个数。 408考研-2011-34 若某通信链路的数据传输速率为2400bps&#xff0c;采用四相位调制&#xff0c;则该链路的波特率是_____。 A.600波特 B.1200波特 C.4800波特 D.9600波特…

【算法】蓝桥杯dfs深度优先搜索之排列组合总结

【导航】 上一篇文章 → 《【算法】蓝桥杯dfs深度优先搜索之凑算式总结》 为了重申感谢之意&#xff0c;再次声明下文的大部分灵感均来自于【CSDN】梅森上校《JAVA版本&#xff1a;DFS算法题解两个例子&#xff08;走迷宫和求排列组合数&#xff09;》  强烈大家去上面那篇文…

人工神经网络能否驾驭生物神经元的“浓稠”程度?5到8层可能并非极限

来源&#xff1a;图灵人工智能编译&#xff1a;李扬霞编辑&#xff1a;青暮计算神经科学家通过训练人工神经网络来模仿生物神经元&#xff0c;提供了一种探讨单个脑细胞复杂性的新方法。虽然我们糊状的大脑似乎与计算机处理器中的芯片大相径庭&#xff0c;但科学家对两者的比较…

leaf 叶子(张量)

在pytorch的tensor类中,有个is_leaf的属性,姑且把它作为叶子节点. is_leaf 为False的时候,则不是叶子节点, is_leaf为True的时候为叶子节点(或者叶张量) 所以问题来了: leaf的作用是什么?为什么要加 leaf? 我们都知道tensor中的 requires_grad()属性&#xff0c;当requires_…

线性表——链表删除

王道链表题1-4 #include <iostream> #include <bits/stdc.h> using namespace std;typedef int Elemtype; //定义单链表 typedef struct Lnode{Elemtype data;struct Lnode *next; }Lnode,*Linklist; int a[4]{1,2,3,4}; int n4;//建立不带头节点的链表 void buil…

10个绕过反病毒的恶意用户技巧

原文&#xff1a;https://blog.netspi.com/10-evil-user-tricks-for-bypassing-anti-virus/ 介绍 译者注&#xff1a;很多不通顺的语句改掉了&#xff0c;还有反病毒解决方案统一翻译为了反病毒软件。无关紧要的话直接意思翻译 许多反病毒软件的部署配置方法较弱&#xff0c;为…

困扰爱因斯坦的「幽灵般的超距作用」,是如何被贝尔定理证明确实存在的?...

文章来源&#xff1a;机器之心作者&#xff1a;Ben Brubaker原文链接&#xff1a;https://www.quantamagazine.org/how-bells-theorem-proved-spooky-action-at-a-distance-is-real-20210720/我们理所当然地认为&#xff0c;世界上某个地方发生的一件事不会立即对远方的事物产生…

Jupyter notebook 导入和卸载 conda 虚拟环境

一、导入 进入Anaconda Prompt&#xff0c;激活要使用的虚拟环境。 conda activate xxx # 你要使用的虚拟环境名称安装 ipykernel 插件&#xff0c; 建议使用 pip 进行安装&#xff0c; conda 安装容易失败 pip install ipykernel安装完成之后&#xff0c;键入以下命令 pyt…

处理器管理与进程管理

4.python练习 1.观察父进程、子进程 2.观察进程运行状态 3。输入多个作业的作业编号&#xff0c;到达时间&#xff0c;所需CPU时间&#xff0c;形成列表&#xff0c;以备算法使用。 转载于:https://www.cnblogs.com/hclhechunlu/p/10580946.html

小白 LeetCode 242 有效的字母异位词

字母异位词 字符串由相同字母组成&#xff0c;但允许排列顺序不同。 如“aaabbb” 与 “ababab” 是字母异位词&#xff0c; 而“aabb” 与 “ab” 不是字母异位词。 题目&#xff1a;给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例…

LSTM之父:吐槽了两年,来划划重点:“这5篇最高引论文都源于我们。”

来源&#xff1a;AI科技评论作者&#xff1a;陈彩娴编辑&#xff1a;青暮昨晚&#xff0c;“递归神经网络之父”Jrgen Schmidhuber 在推特上亲自发文&#xff0c;称目前引用数最高的5项神经网络工作都基于他的团队成果&#xff0c;一时引起了网友的广泛讨论。这并不是他首次发声…

初学者配置环境变量

1. 首先选择计算机右击&#xff0c;选择最后一个属性&#xff0c;进入属性面板 2. 点击“高级系统设置”&#xff0c;点击“环境变量” 3. 在“系统变量”的处配置所需要配置的环境变量&#xff0c;点击“新建”按钮 4. 配置java的环境变量 JAVA_HOME 、CLASSPATH 、 Path5. JA…