Games101学习笔记 Lecture22 Animation(cont.)

news2024/11/14 13:47:37

Lecture22 Animation(cont.

  • 一、单个粒子模拟
    • Ordinary Differential Equation ODE 常微分方程
    • ODE求解方法——欧拉方法
    • 解决不稳定
      • 中点法
      • 改进欧拉方法
      • 自适应步长
      • 隐式欧拉方法
  • 二、流体模拟
    • 基于位置的方法
    • 物质点方法

一、单个粒子模拟

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

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,反之,继续分时间步长

隐式欧拉方法

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

二、流体模拟

基于位置的方法

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

物质点方法

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

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

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

相关文章

Token Labeling(NeurIPS 2021, ByteDance)论文解读

paper:All Tokens Matter: Token Labeling for Training Better Vision Transformers official implementation:https://github.com/zihangJiang/TokenLabeling 出发点 ViTs的局限性:尽管ViTs在捕捉长距离依赖方面表现出色, 但…

代码随想录算法训练营第五十八天|108.冗余连接、109.冗余连接II

108.冗余连接 题目链接:108.冗余连接 文档讲解:代码随想录 状态:还行 思路: 并查集可以解决什么问题:两个节点是否在一个集合,也可以将两个节点添加到一个集合中。 题解: public class Main {p…

套用BI方案做数据可视化是种什么体验?

在数字化转型的浪潮中,数据可视化作为连接数据与决策的桥梁,其重要性日益凸显。近期,我有幸体验了奥威BI方案进行数据可视化的全过程,这不仅是一次技术上的探索,更是一次对高效、智能数据分析的深刻感受。 初识奥威&a…

.net dataexcel 脚本公式 函数源码

示例如: ScriptExec(""sum(1, 2, 3, 4)"") 结果等于10 using Feng.Excel.Builder; using Feng.Excel.Collections; using Feng.Excel.Interfaces; using Feng.Script.CBEexpress; using Feng.Script.Method; using System; using System.Collections.Gen…

场景分析法挖掘需求的常见4大步骤

场景分析方法,有助于精确定位需求,优化产品设计,促进团队协同,减少项目风险,提升用户满意度与市场竞争力。若场景分析不足,产品可能偏离用户需求,导致功能冗余或缺失,用户体验差&…

java中传引用问题

在 Java 中,所有对象都是通过引用传递的,而基本数据类型是通过值传递的。 引用传递: 当一个对象作为参数传递给方法时,传递的是对象的引用。对这个对象引用进行的修改会影响到原始对象。例如: public class Test {p…

Designing Data-Intensive Applications数据密集型应用系统设计-读书笔记

目录 第一部分可靠性、可扩展性、可维护性硬件故障描述负载 吞吐与延迟可维护性 第二章 数据模型与查询语言第三章索引哈希索引B-tree事务 第三章 编码第二部分、分布式数据系统第五章 数据复制单主从复制节点失效日志实现复制滞后问题 多主节点复制 第六章、数据分区3 第一部分…

10个常见的电缆载流表,值得收藏!

众所周知,电线电缆的载流是所有电工、电气人员都必须具备的基本储备,但是如果要将那么多的“数字”都记得清清楚楚,还是有一点困难的!今天咱们就做了一个电力电缆载流量对照表,速度收藏!下次参考不迷路! 1、0.6/1KV聚氯乙烯绝缘电力电缆载流量 以上电缆载流量计算条件:…

世界启动Ⅳ--利用AI和费曼技巧学习一切

前言 有无数的学习技巧可以帮助你消化复杂的概念,并有信心记住它们。如果你像我一样是一个不断学习的学生,你就会明白有效学习方法的重要性。其中最简单的一种就是费曼技巧。 在本文中,我将解释如何有效地应用费曼学习方法,以及…

应用最优化方法及MATLAB实现——第5章代码实现

一、概述 继上一章代码后,这篇主要是针对于第5章代码的实现。部分代码有更改,会在下面说明,程序运行结果跟书中不完全一样,因为部分参数,书中并没有给出其在运行时设置的值,所以我根据我自己的调试进行了设…

迁移学习在乳腺浸润性导管癌病理图像分类中的应用

1. 引言 乳腺癌主要有两种类型:原位癌:原位癌是非常早期的癌症,开始在乳管中扩散,但没有扩散到乳房组织的其他部分。这也称为导管原位癌(DCIS)。浸润性乳腺癌:浸润性乳腺癌已经扩散(侵入)到周围的乳腺组织。侵袭性癌症比原位癌更难治愈。将乳汁输送到乳…

C++中的new和模版

前言 随着C的学习,讲了C的发展过程、流插入、流提取、函数缺省值、类与构造等等。接下来学习C很方便的 玩意,函数模版。函数模版就像是模具一样,C会自动用模版编译出合适的函数供程序员使用。以前不同类型相同操作的函数都能通过函数模版&…

【iOS】——内存对齐

内存对齐是什么 内存对齐指的是数据在内存中的布局方式,它确保每个数据类型的起始地址能够满足该类型对齐的要求。这是因为现代处理器在访问内存时,如果数据的起始地址能够对齐到一定的边界,那么访问速度会更快。这种对齐通常是基于数据类型…

客户中心应急管理的作用和特征

近些年作为事故、灾难等风险的预防主体和第一响应者,客户中心的应急管理取得了较大进展,但总体上仍存在很多薄弱环节,如安全事故频发,自然灾害、公共卫生、社会安全事件等给运营机构带来了多方面的不利影响。从信息角度看&#xf…

20240720 每日AI必读资讯

OpenAI 推出GPT-4o mini取代 GPT 3.5! - 性能超越 GPT 4,而且更快更便宜 - 该模型在MMLU上得分为82%,在LMSYS排行榜上的聊天偏好测试中表现优于GPT-4。 - GPT-4o mini的定价为每百万输入标记15美分和每百万输出标记60美分,比之…

【golang-ent】go-zero框架 整合 ent orm框架 | 解决left join未关联报错的问题

一、场景 1、子表:cp_member_point_history cp_member_point_history表中字段:cp_point_reward_id 是cp_point_reward的主键id 当本表中的cp_point_reward_id字段为0(即:没有可关联主表的) CREATE TABLE cp_member_poi…

项目开发之文件上传 (秒传、断点续传、分片上传)(看这一篇就懂了)

目录: 前言秒传什么是秒传核心逻辑代码实现 小文件上传什么是小文件上传核心逻辑代码实现 分片上传什么是分片上传核心逻辑代码实现 断点续传什么是断点续传核心代码实现 前言 文件上传在项目开发中再常见不过了,大多项目都会涉及到图片、音频、视频、文…

npm安装依赖包报错,npm ERR! code ENOTFOUND

一、报错现象: npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/vue failed, reason: connect ETIMEDOUT 104.16.23.35:443 npm WARN registry Using stale data…

Python | Leetcode Python题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:ancestor rootwhile True:if p.val < ancestor.val and q.val < ancestor.val:ancestor ancestor.leftelif p.val >…

【力扣】最小栈

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 设计一个支持 push…