【GAMES101】Lecture 22 物理模拟与仿真

目录

单粒子模拟

显式欧拉方法

改进

中点法/修正的欧拉方法

自适应步长

隐式欧拉方法

非物理改变位置(Position-Based / Verlet Integration)

刚体模拟

流体模拟


单粒子模拟

先来研究粒子的运动,假设有一个速度矢量场,对于确定的位置和时间可以确定粒子的速度

就会有一个计算粒子随时间的位置的一阶常微分方程Ordinary Differential Equation (ODE),一阶表示只有一阶的导数,常表示没有偏导

显式欧拉方法

显式的欧拉方法或者说是前向的欧拉方法就是用上一时刻t的位置加上上一时刻的速度乘以其间的时间间隔Δt来计算当前的位置,同样的方法计算出当前的速度

这个欧拉方法的误差和时间间隔Δt有关,这个间隔越小误差越小,间隔越大误差就越大,并且这个误差会因为积累而变得越来越大

减小Δt可以减小显式欧拉方法的误差,但是不能改变它的不稳定性,归根结底是因为这个步长无论取的多小始终是无法赶上速度场的变化,并且一旦出现了偏差就会继续累计

改进

中点法/修正的欧拉方法

我先算Δt/2时刻的位置,然后取这个中点位置的速度来计算下一时刻的位置

也就是取这个步长时间内的平均速度来计算下一时刻的位置

自适应步长

哎这个就很简单了,就是我先用Δt算一次结果,再用Δt/2算一次结果,如果两次结果差别不大,那我就停下来,这个结果就算出来了,否则的话我就以这个Δt/2的结果继续比较计算Δt/4的结果,这样继续算下去

隐式欧拉方法

我们之前显式的欧拉方法是用上一时刻的速度和加速度来计算当前时刻,那么用下一时刻的速度和加速度来计算当前时刻的就叫作隐式的欧拉方法或者说是后向的欧拉方法

我们把这个每个步长产生的误差叫做局部误差,总体累积的误差叫做全局误差,我们不关心数据的大小,关心这个误差的阶数,像这个隐式的欧拉方法它的局部误差的阶就是二次的,全局误差的阶是一次的,也就是说,当步长减少一半的时候,全局误差也会减少一半,也就是阶数越高误差下降的越快

有一类方法,叫做龙格库塔(Runge-Kutta Families),非常适合用来解这个常微分方程,并且它有一个误差的控制是四阶的方法

非物理改变位置(Position-Based / Verlet Integration)

这个实现很简单,什么呢?就是我直接去改变这个位置来满足某种约束,比如弹簧,当弹簧拉伸到某种程度立刻调整弹簧两个端点回到初始位置

刚体模拟

所谓刚体就是说它不会发生形变,也就是这个刚体内部的所有粒子的运动都是一样,那么就可以把它当成一颗粒子对待,但是会考虑更多的属性,像位置、旋转的角度、速度和角速度,以及它们对时间的导数

流体模拟

这里是Position-Based的一个简单应用,比如模拟水,我假设水是由很多刚体小球组成的并且这个水不可压缩,那也就是说水的密度应该是到处一样的,也就是水的某个地方里的刚体小球是一样的,一旦密度发生变化,就通过改变小球的位置使某处的小球数量恢复,也就是需要知道某处密度相对于小球位置的梯度通过梯度下降法来实现

这里有两种方法或者说是两种视角来模拟这种大量的物质

一个是质点法,也叫拉格朗日方法或者拉格朗日视角,就是对于每个个体进行模拟

还有一个是网格法,也叫欧拉方法或者是欧拉视角,也就是把空间分成很多网格,对于每个网格去研究它里面的东西随时间会发生什么变化

这两个方法也可以结合使用,叫做物质点方法或者材质点方法,Material Point Method (MPM),怎么做呢?我先考虑每个粒子的属性,然后在网格里面考虑粒子之间的整体作用并记录在网格里面,再对于网格里面的粒子去更新它们的状态

完结撒花,用了这个寒假学了games101课程并一直坚持把这个笔记做完,我一开始是先学这个OpenGL,发现确实很多概念不是很懂,然后来学games101,然后就非常的通透,目前games101作业还在做,估计这个寒假可以完成,再做几个小项目,希望能冲上游戏开发的岗位,唉大三了,希望能够顺利找到理想的暑期实习

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

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

相关文章

Java:字符集、IO流 --黑马笔记

一、字符集 1.1 字符集的来历 我们知道计算机是美国人发明的,由于计算机能够处理的数据只能是0和1组成的二进制数据,为了让计算机能够处理字符,于是美国人就把他们会用到的每一个字符进行了编码(所谓编码,就是为一个…

(已解决)将overleaf上的文章paper上传到arxiv上遇到的问题。

文章目录 前言初级问题后续问题 前言 首先说一点,将paper的pdf文件直接上传arxiv是不行的,arxiv要求我们要上传源文件,所以才这么麻烦。 初级问题 首先上传文件之后有可能会在下面这个界面出现问题,这里一般都比较常见的问题&a…

Latex排版遇到的常见问题及解决方法

这里写目录标题 1. 图片/ PDF 裁剪1.1 PPT 画图转PDF1.2 PPT裁剪 2. 表格内的文本换行问题2.1 表格跨行显示2.2 表格内文本换行,使用 ‘makecell’ 包 换行2.2 表格内文本添加 圆点 1. 图片/ PDF 裁剪 1.1 PPT 画图转PDF 1.2 PPT裁剪 将输出的PDF文件裁剪成合适尺…

最新酒桌小游戏喝酒小程序源码,带流量主,附带搭建教程

喝酒神器,增加了广告位,根据文档直接替换即可,原版本没有广告位 直接上传源码到开发者端即可 通过后改广告代码,然后关闭广告展示提交,通过后打开即可 搜索adunit-848e5f13d1ff237a替换为你的Banner 搜索adunit-597…

【Spring学习】Spring Data Redis:RedisTemplate、Repository、Cache注解

1,spring-data-redis官网 1)特点 提供了对不同Redis客户端的整合(Lettuce和Jedis)提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK、JSON、字符…

MySQL之Windows下MySQL5.7x.与MySQL8.0.x版本共存安装

MySQL之Windows下多版本共存安装 文章目录 MySQL之Windows下多版本共存安装1. my.ini配置如下:2. 安装3. 修改注册表4. 登录5. 修改root用户密码 场景:老项目跑的MySQL5.7.x,而新项目中用到了MySQL8.0.x,为了开发或测试方便在同一台主机上同时…

2013-2022年上市公司迪博内部控制指数、内部控制分项指数数据

2013-2022年上市公司迪博内部控制指数、分项指数数据 1、时间:2013-2022年 2、范围:上市公司 3、指标:证券代码、证券简称、辖区、证监会行业、申万行业、内部控制指数、战略层级指数、经营层级指数、报告可靠指数、合法合规指数、资产安全…

学习记录691@spring面试之bean的作用域

Spring为Bean定义了5种作用域,分别为Singleton(单例)、Prototype(原型)、Request(请求级别)、Session(会话级别)和Global Session(全局会话)。 S…

three.js 细一万倍教程 从入门到精通(二)

目录 三、全面认识three.js物体 3.1、掌握几何体顶点_UV_法向属性 3.2、BufferGeometry设置顶点创建矩形 3.3、生成酷炫三角形科技物体 四、详解材质与纹理 4.1、初识材质与纹理 4.2、详解纹理偏移_旋转_重复 偏移 旋转 重复 4.3、设置纹理显示算法与mipmap mapFil…

《UE5_C++多人TPS完整教程》学习笔记8 ——《P9 访问 Steam(Acessing Steam)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P9 访问 Steam(Acessing Steam)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者&…

Python语言例题集(003)

#!/usr/bin/python3 #猜数字 import random secretNumberrandom.randint(1,20) print(‘我想了一个1到20间的整数&#xff0c;你能猜出来吗&#xff1f;’) for guessesTaken in range(1,7): print(‘猜一下&#xff01;’) guessint(input()) if guess<secretNumber: pr…

《Linux 简易速速上手小册》第10章: 性能监控与优化(2024 最新版)

文章目录 10.1 理解系统负载10.1.1 重点基础知识10.1.2 重点案例&#xff1a;服务器响应变慢10.1.3 拓展案例 1&#xff1a;多核 CPU 系统的负载解读10.1.4 拓展案例 2&#xff1a;分析具体时间段的系统负载 10.2 优化性能10.2.1 重点基础知识10.2.2 重点案例&#xff1a;优化 …

没更新的日子也在努力呀,布局2024!

文章目录 ⭐ 没更新的日子也在努力呀⭐ 近期的一个状态 - 已圆满⭐ 又到了2024的许愿时间了⭐ 开发者要如何去 "创富" ⭐ 没更新的日子也在努力呀 感觉很久没有更新视频了&#xff0c;好吧&#xff0c;其实真的很久没有更新短视频了。最近的一两个月真的太忙了&#…

LLM大模型相关问题汇总

一、基础篇 1. 目前 主流的开源模型体系 有哪些&#xff1f; 2. prefix LM 和 causal LM 区别是什么&#xff1f; 3. 涌现能力是啥原因&#xff1f; 4. 大模型LLM的架构介绍&#xff1f; 5. 你比较关注那些主流的开源大模型&#xff1f; 6. 目前大模型模型结构都有那些&a…

CSP-202312-2-因子化简(质数筛法)

CSP-202312-2-因子化简 一、质数筛法 主流的质数筛法包括埃拉托斯特尼筛法&#xff08;Sieve of Eratosthenes&#xff09;、欧拉筛法&#xff08;Sieve of Euler&#xff09;、线性筛法&#xff08;Linear Sieve&#xff09;等。这些算法都用于高效地生成一定范围内的质数。 …

设计模式-观察者模式 Observer

观察者模式 一、概述二、使用场景三、发布订阅1) 观察者模式2) 发布-订阅模式 四、源码使用1) jdk中的观察者2) Guava中的消息总线 五、进阶1) 异步非阻塞模型 一、概述 观察者模式是一种行为设计模式&#xff0c;允许对象间存在一对多的依赖关系&#xff0c;当一个对象的状态…

二叉搜索树题目:二叉搜索树的最小绝对差

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉搜索树的最小绝对差 出处&#xff1a;530. 二叉搜索树的最小绝对差 难度 3 级 题目描述 要求 给定一个二叉…

C#入门及进阶|数组和集合(四):数组的参数传递

数组的参数传递 向方法传递参数有两个方法&#xff0c;一个是“传值”&#xff0c;另一个是“传引用”。 传值时&#xff0c;如果对被调用的方法的值的副本进行修改&#xff0c;不会影响原始变量的值。 1.值传递 通过“传值”方式来传递引用&#xff0c;相当于允许方法直接访问…

什么是Java中的微服务架构,你能列举一些微服务架构的优缺点吗?

什么是Java中的微服务架构&#xff0c;你能列举一些微服务架构的优缺点吗&#xff1f; 微服务架构是一种将单个应用程序拆分为多个小型服务的架构风格&#xff0c;每个服务都运行在自己的进程中&#xff0c;并通过轻量级的通信机制&#xff08;通常是HTTP或者消息队列&#xf…

【DSP】数字信号处理发展里程碑(AI【文心一言】 辅助生成)

在远离尘嚣的学术殿堂中&#xff0c;数字信号处理&#xff08;DSP&#xff09;这一学科犹如一颗璀璨的明珠&#xff0c;其发展历程充满了传奇色彩。下面&#xff0c;就让我们一起穿越时空&#xff0c;回到那些激动人心的时刻&#xff0c;见证数字信号处理从无到有、从弱到强的壮…