一、前言

这是本专栏的倒数第二篇文章了,为什么不是最后一篇?因为我要单独写一篇总结哈哈,不管怎么说,从今年的3.13的MVP变换开始写,写到现在,也是一个很大的工程了,我很高兴能在大二下学期的期中这个时间点完成我人生中写的第一篇专栏,它没有什么开创性,但是对我来说意义重大,多余的话这里就不说了,这篇为大家介绍GAMES101最后一节课所讲的内容,利用欧拉方法求解常微分方程刚体与流体的模拟,上篇我们趋向于动画与模拟这块的介绍,这篇我们主要讲细节。

二、单个粒子的模拟

我们规定了一个粒子任何一个时刻的速度,我们又知道这个粒子一开始的位置,那么我们如何求解某个时间之后它出现在哪里呢?这个很简单,高中的物理公式。

那么我们定义一个速度场,类似于电场和磁场,给定任意一个位置,我都知道这个位置对应的速度,这就比较困难了。

1.常微分方程

根据上面所说的,我们定义出来任意一点的速度公式如上图,而这就是一个常微分方程常微分方程中,已知量是微分值,而未知量是原始值。我们要做的就是求解原始的微分之前的值。而常微分方程(ODE)顾名思义就是只涉及一个微分的方程,与之对应的是偏微分方程(PDE)。带入到我们这里就是,我们知道速度,想求位置。

2.欧拉方法

我们说了我们想求一个粒子的位置,想求任意时刻的位置,我们需要一个起始位置,这里假如是Xt,如上图中的t写在右上角表示t时刻。我们取一个Δt,也就是步长,根据上面的公式,我们每个下一个步长的位置和速度都可以根据上一个步长的速度和加速度求得。这种所有下一步的量都由上一步估计的方法就叫做前向欧拉方法,或者叫显式欧拉方法

欧拉方法有一定的问题,如上图所示,我们的步长取多长影响了最终我们得出的运动轨迹和我们想要的运动轨迹的拟合程度的精确,显然步长取的越小越密效果越好。

其次,欧拉方法有严重的不稳定性,如上图中的螺旋速度场,我们想得到的是一个做圆周运动的轨迹,但是最终结果得到的是粒子从速度场中偏离了出去,因为步长再小也是离散的,所以无论取多小的步长,最终这个粒子一定会偏离出去。而第二幅图的速度场,如果正确模拟,我们最终的粒子应该是沿着水平方向向右非处,但是我们看到的结果是上下来回的穿梭,这同样是欧拉方法的不稳定性造成的问题。

3.解决不稳定

(1)Midpoint Method—中点法

中点法,和欧拉方法类似,只不过做了一步改进,我们之前说欧拉方法的下一个点的位置是由上一个点的位置和速度决定的。中点法则不是,如上图,我们先同样的根据初始点的位置和速度计算出下一个点的位置和速度,但是我们不利用下一个点的位置和速度,我们取这两个点的中点的速度,然后用初始点的位置和中点的速度计算出下一个点的最终位置,因为速度场的变化在两点之间可能特别快,而中点的速度某种意义上来说比初始点更具有代表性。

中点法公式

(2)Adaptive Step Size—自适应步长

自适应步长法也顾名思义,我们之前说步长的长短决定了我们拟合出的效果好不好,那也就是说步长越短,也就拟合的越好。和中点法类似,对于一个步长Δt,我们计算出初始点经过Δt的位置xt,然后计算经过Δt/2的位置,再通过Δt/2位置的速度计算出再经过Δt/2的最终位置xt/2,如果xt和xt/2的位置差的很远,就说明我们取的步长过大了,所以要缩小步长,知道最终计算的两个结果相差在我们规定的范围内停下来,这就是自适应步长法。

(3)Implicit Euler Method—隐式欧拉方法

隐式的欧拉方法和显式的欧拉方法的不同之处在于,显示欧拉方法是根据上一个位置的信息去求解下一个位置的信息,隐式欧拉方法则是根据下一个点的信息去求,如上图。而下一个点的信息通常是未知的,我们要求解的是一个非线性的常微分方程,所以求解通常需要用到牛顿迭代法,这里不详细介绍,有兴趣的朋友自行了解。我们只需要知道,隐式的欧拉方法更稳定

(4)稳定性的定义

我们一直提到稳定性,那么稳定性如何定义呢?通常人们会定义一个局部的误差,也就是每个步长产生的误差,而最终每个步长产生的步长加和得出的就是总体误差。人们用这两个误差来衡量稳定性。正常情况下,人们认为研究这两个数的大小是没有意义的,我们需要研究的是这两个数和Δt的关系,也就是阶数。通常用O(h)表示,上图给出了隐式欧拉方法的局部误差是O(h^2),总体误差是O(h)h就是Δt,阶数越高越好,因为阶数越高我们相应减少步长而减少的误差就越多。

(5)Runge-Kutta Families—龙格库塔法

龙格库塔法不是一个方法是一类方法,它们特别适合求解非线性的常微分方程,其中有一种龙格库塔的方法叫RK4用的最广泛,4就是4阶的意思,可想而知误差很小。

(6)Position-Based / Verlet Integration

Position-Based或者叫 Verlet Integration不是一种基于物理的方法,之所以被称为“非物理”的方法,是因为它们主要关注在给定时间步长下尽可能准确地模拟物体的运动,而不是严格遵循物理规律。实际应用中,这些简化和近似手段通常可以带来较好的性能和视觉效果。其核心思想是通过直接操作物体上的粒子的位置信息,从而达到约束物体运动的目的(调整位置从而满足某种限制)。当然因为不基于物理,它有时很难保证它符合能量守恒定律。

三、Rigid Body Simulation—刚体模拟

刚体的模拟非常简单,因为它不会发生弹性形变,这也就说明它内部所有的点的运动形式都是相同的,那这和单独一个粒子的模拟没什么太大的区别。只不过在刚体的模拟里,人们会更多的考虑其它的物理量,如上图,位置,朝向,速度,角速度时间的导数。和粒子的模拟相比,无非是多了几个变量,我们同样可以用之前说的欧拉方法以及一系列方法去求解。

四、Fluid Simulation—流体模拟

接下来我们说流体模拟,来作为我们之前所说的非物理的Position-Based方法的例子。

首先我们认为,水体是由许多不可压缩的刚体小球组成的。

其次,假设水在任何一个地方都是不可压缩的,2L水不可能变成1L水,也就说任何位置密度都相同。

而第二个假设就给了我们这么一个根据位置去约束的条件,假设我们一开始平静的水面是各处密度相等的,一旦有一个位置水的密度发生了变化,那么根据我们的定义其它地方的小球也要跟着变化,从而来符合“各处密度都相等”这个条件。

1.欧拉方法和拉格朗日方法

在物理模拟中,模拟大规模的物质的两个思路:拉格朗日方法欧拉方法拉格朗日方法,俗称质点法就是我们上面提到的对于一大片水我们把它当成许多小水滴,然后我们找出每个小水滴的位置,最终整个水的位置就是正确的,或上图,我们模拟一群小鸟,把每个小鸟的位置都找出,我们就得出了整个鸟群的样子,当然这其中也会考虑它们之间的约束关系。 欧拉方法,或者叫网格法,我们把空间分成许多网格,我们考虑一个网格内随着时间如何变化,如上图,我们看一个网格,t-1的时间里网格里是蓝色的鸟,t时间是黑色鸟,t+1时间是橙色的鸟。两种方法的视角不同,拉格朗日视角是盯着物体看,欧拉视角是盯着空间看。

2.Material Point Method (MPM)—物质点法

当然,也有两种方法结合的方法,叫做物质点法,既考虑欧拉方法,又考虑拉格朗日方法。我们先假设物体的各个粒子都有各自的材质属性,比如密度等等,然后模拟它的运动过程,但是这些过程我们在格子中考虑,最终格子中记录的信息我们再写回粒子中。

3.小结

  1. 欧拉方法(Eulerian method)

欧拉方法是一种描述流体或者可变形物体运动的方法,在此方法中,观察者固定在空间中观察流经某个点的物质。这种方法关注的是每个固定点的状态变化,而不是跟随单个粒子的运动轨迹。在计算过程中,物质特性(如速度、密度等)被定义在一个固定的网格上。

  1. 拉格朗日方法(Lagrangian method)

拉格朗日方法与欧拉方法相反,它关注的是沿着单个粒子的运动轨迹的物质状态。观察者跟随物质粒子运动,聚焦于粒子随时间推移的属性变化。在拉格朗日视角下,物质特性(如位置、速度等)被定义在每个粒子上。

  1. 物质点方法(Material Point Method,MPM)

物质点方法(MPM)是一种将欧拉方法和拉格朗日方法结合起来的方法,它试图克服两者的局限性。在 MPM 中,物体被表示为一组离散的物质点,每个物质点携带了与其相关的物质特性(如密度、速度等)。物质点在一个固定的网格上进行计算,而后根据网格上的信息更新物质点的状态。

MPM 的主要步骤如下:

  1. 将物质点的物质特性(如质量、速度等)传递到固定的网格节点上。
  2. 在网格上求解物质的运动方程,例如牛顿第二定律。
  3. 根据网格节点的速度更新物质点的速度和位置。
  4. 重复以上过程直至计算结束。

总之,物质点方法利用了欧拉方法中固定网格的优势,使计算更加稳定;同时,通过拉格朗日方法对物质点的处理,能够捕捉物体的大变形和拓扑变化。

五、总结

这是本专栏的最后一篇文章,那么到这里GAMES101的所有内容基本上就都介绍完了,从光栅化到几何,到光线传播,以及相机透镜颜色空间这些,最后到动画与模拟,就都介绍完了,本篇主要简单介绍了利用欧拉方法以及其它改进的方法求解常微分方程的简单思路,以及刚体和流体的模拟,当然本篇只是简单介绍了一下,想更详细的了解还要靠大家自己,但是前面渲染的内容,介绍的已经相对详细了,尤其是MVP变换,我认为是本专栏中最详细的一篇,那么到这里就结束了,再见~

参考:

GAMES101_Lecture_22 (ucsb.edu)

Lecture 22 Animation Cont._哔哩哔哩_bilibili

[计算机图形学]动画与模拟:欧拉方法、刚体与流体(前瞻预习/复习回顾)相关推荐

  1. [计算机图形学]动画与模拟:关键帧动画、质点弹簧系统、运动学与绑定(前瞻预习/复习回顾)

    一.动画的简要概念 动画和语言一样,一开始都是作为传达信息的工具.什么是动画呢?简单的理解就是让画面变成"活的",也就是让它们能够动起来,其次需要一定的美观.在图形学上,我们可以把 ...

  2. 图形学笔记(二十)粒子、刚体、流体的模拟—— 欧拉方法、Errors 和 Instability、中点法、自适应步长、隐式欧拉方法、Runge-Kutta方法、刚体与流体模拟(质点法、网格法、MPM)

    图形学笔记(十九)粒子.刚体.流体的模拟-- 欧拉方法.Errors 和 Instability.中点法.自适应步长.隐式欧拉方法.Runge-Kutta方法.刚体与流体模拟(质点法.网格法.MPM) ...

  3. [计算机图形学]重心坐标应用纹理(前瞻预习/复习回顾)

    一.重心坐标,插值 上篇的最后我们提到了,当顶点在纹理上的对应uv坐标成功找到之后,三角形三个顶点中间的值需要用三角形的重心坐标插值计算得到,那么这个运算是怎么进行的,本篇我们将介绍.插值的运算不仅仅 ...

  4. [计算机图形学]反走样(前瞻预习/复习回顾)

    一.前言:走样的产生 上一篇我们谈到了光栅化,在讲述光栅化时我们得到了光栅化之后的这样一张图,如下图 显然,这和我们原本的三角形严重不符,原因是像素是方块,而无法完美的拟合三角形. 也就是说我们得到的 ...

  5. 计算机图形学--动画与模拟

    动画的历史 关键帧动画 在2个位置之间补充关键得位置,这种方式叫做关键帧. 关键帧插值,计算出中间的帧 控制关键帧插值的线条 物理模拟 比如:使用牛顿定律,计算物体下一个时刻的位置.推导或者实现不同的 ...

  6. [计算机图形学]几何:曲线和曲面(前瞻预习/复习回顾)

    一.曲线 1.Bézier Curves-贝塞尔曲线 贝塞尔曲线也是一种显式的几何表示方法.贝塞尔曲线定义了一系列的控制点,致使确定满足这些控制点关系的唯一一条曲线:如上图定义的贝塞尔曲线满足 起始点 ...

  7. [计算机图形学]辐射度量学、渲染方程与全局光照(前瞻预习/复习回顾)

    一.前言 我们前面讲到的Blinn-Phong着色,Whitted-Style光线追踪都有一定问题,那就是它们并没有严格的按照物理规则定义各个变量.比如,Blinn-Phong中的光的强度,并没有一个 ...

  8. [计算机图形学]光线追踪的基本原理(前瞻预习/复习回顾)

    一.光栅化的弊端 我们为什么要用光线追踪呢,在之前的篇章中,我们提到了,光栅化的方式很难表示一些全局的效果,如(1)软阴影,(2)Glossy的反射(类似镜子但又不像镜子那么光滑的材质,如打磨的铜镜和 ...

  9. [计算机图形学]材质与外观(前瞻预习/复习回顾)

    一.图形学中的材质 不同的物体表面有着不同的材质,而不同的材质意味着它们与光线的作用不同.那么我们之前在介绍辐射度量学和渲染方程提到过其中一个函数,叫做BRDF,而在实际上,也就是BRDF定义了不同的 ...

最新文章

  1. python3 uvloop 简介
  2. Springboot 连接数据库
  3. 用linux mail命令发送邮件时指定发送人
  4. 二级级联菜单---纯js实现
  5. LeetCode119.杨辉三角II
  6. 这个充电宝用起来好方便!
  7. 洛谷P3233 [HNOI2014]世界树
  8. 3.ZooKeeper客户端Curator的进阶使用「第三章 ZooKeeper Java客户端」「架构之路ZooKeeper理论和实战」
  9. 常用自然语言处理NLP模型原理
  10. 国家知识产权局宣告易百珑自发电专利权有效
  11. matlab2017b和2018a,Matlab 2018a 比2017b有哪些改进?
  12. 8421BCD码 5421BCD码 余三码 格雷码 余三循环码之间的关系,转换以及简易方法
  13. Trinity安装与报错
  14. 《薛兆丰的经济学课》课程总结3--生命有限
  15. 分布式网络爬虫关键技术分析与实现一网络爬虫相关知识介绍
  16. 加法的横式竖式教案c语言,20以内竖式加减法教案
  17. Nginx篇之实现反向代理和端口转发
  18. QQ 等级全球第一的人找到了:小时候家里开网吧
  19. ccs船用计算机检验标准,CCS 船用铸钢件检验标准.pdf
  20. 安卓系统的发展历程?

热门文章

  1. 射频功率放大器的基本原理、分类、工作状态设计方法以及发展趋势
  2. 看过的最好的护肤心得
  3. 看,这是我们领导说的
  4. 计蒜客:乳草的侵占(BFS)
  5. 创利树智慧门店是如何解决,线下实体门店三大痛点的?
  6. 四川2名干部任前公示 王菲拟提名为广元市市长-四川-广元-任前公示
  7. Win7视觉效果设置详解
  8. 一文讲解ElasticSearch
  9. ABP官方文档(三)【模块系统】
  10. uushare第二版功能详细介绍