GAMES101(21~22节,动画和仿真)

news2024/11/18 13:57:08

Animation

关键帧

动画和几何(曲线)相关

物理模拟/仿真

牛顿第二定律:F = ma

需要清楚网格间相互作用力,也需要把物理仿真和渲染分为两部来看,例如布料模拟,流体模拟

mass spring system质点弹簧系统

一个基本单位时一个弹簧,两个质点

推导受力分析
a点受到b方向的力

胡克定律(Hooke's Law):ks劲度系数(取决于弹簧的材料) *  单位向量(方向)*(||b-a||  - l )原始长度(形变量)

根据力的相互作用,a点受到b方向的力,b点受到往a方向的力,又因为当前静止状态,也就是作用力 == 反作用力,b点受到往a方向的力 == a点受到b方向的力的反作用力

其实总的受力应为这样的平衡关系,ab都有弹力势能和拉力

这时当b松手,b的拉力消失,b点受力不再平衡,a对b产生的弹力势能,转换为动能,

没有其他力影响,因而总能量不变,动能势能不断相互转换,b永远不会停止

一阶导数,在物理模拟中在上方 · 点号,二阶用 ·· 表示

对于路程/时间函数 的一阶导数为速率,二阶导数为加速度

那么为了让b停止,需要加摩擦力,和b导数-.>b的速度的方向相反 ,其中kd依旧是劲度系数

但是这样会让所有运动都停止,假设ab同时被拉开,并且保持相对静止,同时向右运动,这时我为ab同时添加f摩擦力,因为根据上面的公式f和速度方向相反,也就是左方向,那么就会导致ab停止,但是ab的相对拉开的 状态没有改变

这样是不符合我们的期望,我们期望,b可以在左右弹的过程逐渐停止,可是当同时ab运动时,上述并不能让ab恢复弹簧的原长度,仅能让ab不再向右移动

中间缺了点乘的符号

那么如何让ab依旧保持向右移动,并且ab逐渐恢复弹簧的原长度呢?

负号(相反),单位向量a->b,b导数(速度) - a导数(速度),单位向量a->b

首先前两个,浮点 * 向量 = b->a得到的依旧是向量

后两个相乘,得到浮点,v向量 * 单位向量, = ||v|| costheta

  • 假设b相对a向右弹,那么b的速率>a的速率,且为正值,cos = 1,fr即取相反值向左
  • 假设b相对a向左弹,那么b的速率>a的速率,且为负值,cos = -1,fr即取相反值向右

这里为什么要乘以单位向量?

假设b相对于a圆周运动,ba速度虽然不同,但弹簧的长度没有改变,因为ab的相对弹力没有改变,不应该在内部施加摩擦力(圆周运动不应该有恢复原状的返回力,只有在ab方向上的速度改变,才应在内部施加摩擦力),

假如没有单位向量,那么获得的fr摩擦力向量就是速度的反向,考虑上述不应有摩擦力的情况,因此,当点乘单位向量b->a,会根据向量的夹角cos,当为90度,结果为0 ,即没有摩擦力

也就是第一个单位向量,保证了结果是向量,第二个单位向量,保证了正确的摩擦力结果

模拟

模拟一个布,不应该受到形变的影响,比如延对角线拉扯(通过蓝线),延某方向弯折,通过(较弱红线)

single particle simulation单粒子模拟

单粒子模拟:指对单个粒子运动轨迹的计算

假设知道初始位置,和每一刻的速度(矢量),那么它的新的位置很容易计算,但是我们根本不可能知道每一刻的速度

假设在速度场模拟粒子运动轨迹

速度场:在任意时刻t和位置x,都有对应的速度v(x,t),也就是相当于函数

dx / dt 导数(切线)即速度,导数为瞬时速度

常微分方程

方程的形式有很多。代数方程是指含有未知数的等式;而微分方程,是指含有未知函数及其导数的等式。代数方程的解是常数,而微分方程的解是函数。

如果函数只有一个自变量的微分方程称为常微分方程(ordinary differential equation,ODE)
如果函数含有两个或者多个自变量的微分方程称为偏微分方程(partialdifferential equation,PDE)

此外,微分方程也可以根据阶数来分类:最高阶导数是一阶导数,则称为一阶微分方程(first-order-equation);最高阶导数是二阶导数,则称为二阶微分方程(second-order-equation)

Euler欧拉方法:

欧拉方法是求解常微分方程数值解的一种重要方法。它通过将微分方程离散化,将连续的函数关系转化为一系列离散的点之间的关系,从而利用迭代的方法逐步逼近微分方程的解。

就是利用最基本的速度,加速度公式:

下一帧的位置 = 上一帧的位置 + t增量 * 上一帧速度

其中下一帧的速度又等于 = 上一帧的速度 + t增量 * 上一帧加速度

可以看到,下一帧的计算参数都是由上一帧的值提供

这种欧拉方法有缺陷,delta需要很小的步长才可以准确,并且稳定性不高,有误差

midpoint method

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

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

相关文章

Nest.js实现一个简单的聊天室

本文将介绍如何使用 Nest.js 和 Uni-app 实现一个简单的实时聊天应用。后端使用 nestjs/websockets 和 socket.io,前端使用 uni-app 并集成 socket.io-client。这个项目允许多个用户同时加入聊天并实时交换消息。 效果图: 一、准备工作 安装 Node.js 和…

数据结构与算法——Java实现 24.中缀表达式转后缀

目录 中缀表达式转后缀表达式 引言 思路 代码 正因为我有能力跨越,考验才会降临 —— 24.9.28 中缀表达式转后缀表达式 引言 Java中的编译器会将我们编写代码中的中缀表达式转化为后缀表达式,然后编译好输出程序 思路 遍历中缀表达式,如果遇…

电脑学习通看不到课程解决办法

电脑学习通看不到课程解决办法 查看学习通时发现没有课程 解决方法1: 更改单位 具体见:超星学习通关于PC版无法查看课程问题解决 解决方法二:添加应用 添加应用 点击账号管理 点击应用管理 添加应用、添加首页这个应用 添加完成后查看首页就能看到课程了 然后就OK啦、就可…

[JavaEE] HTTP/HTTPS

目录 一、HTTP 1.1 HTTP是什么 1.2 HTTP发展史 1.3 HTTP工作过程 1.3.1 抓包工具的原理 1.4 HTTP请求格式 1.4.1认识URL 1.5 HTTP响应格式 1.6 认识HTTP"方法"(method) 1.6.1 GET方法 1.6.2 POST方法 1.6.3 其他方法 1.7 GET 与 POST 的区别 1.8 认识…

Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!

🧸本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻 📜后续会退出ububtu安装docker教程,敬请期待 📜作者首页&…

某客户Oracle RAC无法启动故障快速解决

某日,9:50左右接到好友协助需求,某个客户Oracle RAC无法启动,并发过来一个报错截图,如下: 和客户维护人员对接后,远程登录服务端进行故障分析。 查看hosts信息,首先进行心跳测试,测…

Java爬虫:获取SKU详细信息的艺术

在电子商务的世界里,SKU(Stock Keeping Unit,库存单位)是每个商品的唯一标识符,它包含了商品的详细信息,如尺寸、颜色、价格等。对于商家和开发者来说,获取商品的SKU详细信息对于库存管理、订单…

Spring Boot 整合 Keycloak

1、概览 本文将带你了解如何设置 Keycloak 服务器,以及如何使用 Spring Security OAuth2.0 将 Spring Boot 应用连接到 Keycloak 服务器。 2、Keycloak 是什么? Keycloak 是针对现代应用和服务的开源身份和访问管理解决方案。 Keycloak 提供了诸如单…

秦巴山区SHP格式矢量范围

‌秦巴山区的shp范围包括河南、湖北、重庆、四川、陕西、甘肃六省市的80个县(市、区)。‌这一区域不仅地理范围广泛,而且生态多样性丰富,是国家重要的生物多样性和水源涵养生态功能区。秦巴山区的地貌类型以山地丘陵为主,间有汉中、安康、商丹…

Centos8.5.2111(1)之本地yum源搭建和docker部署与网络配置

由于后边可能要启动多个服务,避免服务之间相互干扰,本课程建议每个服务独立部署到一台主机上,这样做会导致资源占用过多,可能会影响系统的运行。服务器部署一般不采用GUI图形界面部署,而是采用命令行方式部署&#xff…

lDE 使用技巧与插件推荐(含案例说明)

在使用集成开发环境(IDE)进行编程时,掌握一些技巧和使用高效的插件可以显著提高开发效率。以下是一些通用的IDE使用技巧和插件推荐,适用于多种流行的IDE,如IntelliJ IDEA、Visual Studio Code、PyCharm等。每个技巧和插…

IEEE GRSL投稿历程分享

投稿期刊:IEEE geoscience and remote sensing 本人为本科生,在投这本期刊时已经经历了三次拒稿(两次RS,一次GRSL),被RS拒稿意料之中,因为工作量并不是特别大,所以写得比较短&#…

【RocketMQ】RocketMQ快速入门

🎯 导读:该文档介绍了Apache RocketMQ消息队列的基础应用,包括消息发送与接收的基本流程。首先通过创建生产者实例,并指定名称服务器地址,启动后即可发送消息至指定主题。然后创建消费者实例订阅相应主题,并…

js逆向——webpack实战案例(一)

今日受害者网站:https://www.iciba.com/translate?typetext 首先通过跟栈的方法找到加密位置 我们跟进u函数,发现是通过webpack加载的 向上寻找u的加载位置,然后打上断点,刷新网页,让程序断在加载函数的位置 u r.n…

Mamba模型初步解析 — Mamba : Linear-Time Sequence Modeling with Selective State Spaces

Mamba模型初步接触 — Mamba : Linear-Time Sequence Modeling with Selective State Spaces "Mamba"是一种序列建模架构,它采用了称为选择性状态空间模型(SSMs)的结构来优化处理长序列数据的效率和性能,这在语言处理、…

如果只能保留一个复制粘贴软件,那一定是它pastemate

下载地址:Pastemate 在日常的工作和生活中,使用电脑必离不开的功能中,一定有复制粘贴。传统的复制粘贴方式效率不那么高,Windows内置的剪切板功能感觉又差那么些意思。 🧐对于功能和颜值都有要求的你,一定…

端口隔离配置的实验

端口隔离配置是一种网络安全技术,用于在网络设备中实现不同端口之间的流量隔离和控制。以下是对端口隔离配置的详细解析: 基本概念:端口隔离技术允许用户将不同的端口加入到隔离组中,从而实现这些端口之间的二层数据隔离。这种技…

Linux入门2——初识Linux权限

目录 0. Linux下的用户 1.文件访问者的分类 2.文件类型和访问权限 3. 文件权限值的表示方法 4.文件访问权限的相关设置方法 4.1 修改文件的访问权限 4.2修改文件的拥有者和所属组 0. Linux下的用户 在学习Linux权限之前,我们要先来了解Linux下的用户&#x…

(十七)、Mac 安装k8s

文章目录 1、Enable Kubernetes2、查看k8s运行状态3、启用 kubernetes-dashboard3.1、如果启动成功,可以在浏览器访问3.2、如果没有跳转,需要单独安装 kubernetes-dashboard3.2.1、方式一:一步到位3.2.2、方式二:逐步进行 1、Enab…

杭州网站设计中的常见误区及解决方案

在杭州网站设计领域,随着数字经济的快速发展,越来越多的企业意识到互联网的重要性。然而,在实际的网站设计过程中,仍然存在一些常见的误区,这些误区可能会影响用户体验和网站的整体效果。以下是几种普遍存在的误区及其…