Games101学习笔记 Lecture22 Animation(cont.)

一、单个粒子模拟

  • 想模拟粒子在场中的运动

Ordinary Differential Equation ODE 常微分方程

  • 将粒子的位置与时间之间的关系表达为一个方程
    在这里插入图片描述

ODE求解方法——欧拉方法

  • 通过迭代的方法近似粒子的运动轨迹
  • 步骤
    • 初始化: 设置初始位置 x0 和时间步长 Δt。
    • 迭代:
      • 计算当前时间步长 t 下粒子的速度 v ( x ( t ) , t ) v(x(t), t) v(x(t),t)
      • 根据速度和步长更新粒子的位置: x ( t + Δ t ) = x ( t ) + Δ t ∗ v ( x ( t ) , t ) x(t + Δt) = x(t) + Δt * v(x(t), t) x(t+Δt)=x(t)+Δtv(x(t),t)
      • 更新时间: t = t + Δ t t = t + Δt t=t+Δt
    • 重复步骤 2,直到达到所需的时间步数
  • 问题
    • 控制好步长 —— 误差随着时间步长的增加而增加
    • 稳定性差:当时间步长较大时,容易导致模拟结果发散在这里插入图片描述

解决不稳定

中点法

  • 在每个时间步长内,计算当前时间步长和下一时间步长中点的速度,并用该速度更新位置
    在这里插入图片描述

改进欧拉方法

  • 计算当前时间步长和下一时间步长速度的平均值,并用该平均值更新位置
  • 二次模型比一次更准确
    在这里插入图片描述

自适应步长

  • 根据误差估计来调整时间步长
  • 把时间分成两部分,若结果相近符合,则不用继续分 Δ t Δt Δt,反之,继续分时间步长

隐式欧拉方法

  • 使用下一时间步长的速度来更新位置

二、流体模拟

基于位置的方法

  • 基本思想:将流体视为由大量不可压缩的刚性球体组成,并通过调整这些球体的位置来模拟流体的流动
  • 核心假设:流体的密度保持恒定,任何密度变化都会通过调整球体位置来“纠正”
  • 实现方法:计算每个粒子的密度梯度,并通过梯度下降法更新粒子的位置
  • 问题:不是基于物理的,会耗散能量(误差),难以模拟复杂现象

物质点方法

  • 基本思想: 结合拉格朗日(质点法)和欧拉(网格法)两种视角,使用粒子来携带材料属性,并使用网格来进行数值积分
  • 实现方法
    • 拉格朗日视角:使用粒子来表示流体,每个粒子携带密度、速度等属性
    • 欧拉视角:使用网格来表示流体的状态,并在网格上求解流体的运动方程
    • 交互:粒子将属性传递给网格,网格进行更新,然后插值回粒子

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 13:34:01       48 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 13:34:01       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 13:34:01       41 阅读
  4. Python语言-面向对象

    2024-07-18 13:34:01       52 阅读

热门阅读

  1. 中电金信-杭州工商银行|面试真题|2024年

    2024-07-18 13:34:01       18 阅读
  2. Vue学习---vue 防抖处理函数,是处理什么场景

    2024-07-18 13:34:01       19 阅读
  3. k8s logstash多管道配置

    2024-07-18 13:34:01       15 阅读
  4. 数据分析中的拆解方法介绍

    2024-07-18 13:34:01       19 阅读
  5. Memcached开发(四):数据存储与检索

    2024-07-18 13:34:01       17 阅读
  6. Pytest 框架快速入门

    2024-07-18 13:34:01       17 阅读
  7. 掌握未来:深度解析Xcode Cloud服务的高效使用

    2024-07-18 13:34:01       16 阅读