当前位置: 首页 > news >正文

GAMES101-现代计算机图形学入门(Animation/simulation)

目录

  • 一些科普
    • Keyframe Animator
    • Physical Simulation
    • 质点弹簧系统 Mass Spring Rope
    • 粒子系统
    • 运动学 Forward Kinematics
    • 逆运动学Inverse Kinematics
    • Rigging
    • Motion Capture
  • 第二次课 cont.
    • Single Particle Simulation
    • 流体模拟 Fluid Simulation

GitHub主页:https://github.com/sdpyy
games101项目作业代码:https://github.com/sdpyy1/CppLearn/tree/main/games101

一些科普

Keyframe Animator

请添加图片描述

Physical Simulation

利用物理公式来模拟
请添加图片描述

质点弹簧系统 Mass Spring Rope

下面开始描述这个系统
胡克定律描述弹簧或弹性体所受的回复力 F 与形变量 x 成正比, k s k_s ks是劲度系数,但是弹簧本身也有长度
请添加图片描述考虑弹簧原始长度 , b − a ∥ b − a ∥ \frac{b - a}{\|b - a\|} baba这个向量用来表示方向,但问题是这样写,弹簧一旦拉开就不会不停的运动下去(动能和势能相互转化),所以还需要引入摩擦力
请添加图片描述
引入摩擦力之前先引入一些符号表示位置、速度、加速度
请添加图片描述
给物体一个相反与速度方向的力,但还有问题,这样会导致所有的运动都停下来,假设AB两个物体同步向右走,他俩都有速度,但相对之间没有速度,所以应该没摩擦力,但是用下面的公式,只要物体有速度,就会受到摩擦力而停止
请添加图片描述
我们在逐渐完善弹簧系统,摩擦力应该跟着物体AB的相对运动而产生,下图用两个物体速度差来表示相对速度,另外还需要考虑这个速度差是沿着弹簧方向才行,所以点乘 b − a ∥ b − a ∥ \frac{b - a}{\|b - a\|} baba来投影到ba方向
请添加图片描述
下面看一些弹簧结构请添加图片描述
模型的行为是由结构连接来决定的,下面看如果一块布这样设计,很明显是不合理的,图中展示了2种原因(布可以抵抗切变力但这个结构不行,布会对抗对折)
请添加图片描述
先来改进切变,加入蓝色弹簧来抵抗请添加图片描述
再加另外一个方向,但不能解决第二个问题
请添加图片描述
最终版
请添加图片描述

粒子系统

请添加图片描述
请添加图片描述

运动学 Forward Kinematics

请添加图片描述
已知角度求P的位置
请添加图片描述

逆运动学Inverse Kinematics

已知P的位置求角度
请添加图片描述

Rigging

请添加图片描述

请添加图片描述

Motion Capture

![请添请添加图片描述

第二次课 cont.

Single Particle Simulation

首先学习单粒子运动,假设粒子的运动由一个速度向量场决定,速度向量场的速度由位置和时间决定
在这里插入图片描述
要计算粒子在某个时间的位置,需要解下图所示的常微分方程
在这里插入图片描述
用欧拉公式来解微分方程,用上一步的数据来计算下一步的位置
在这里插入图片描述
欧拉方程的误差与步长大小有关
在这里插入图片描述
欧拉方程的不稳定性,在一个螺旋速度场中,本来应该旋转,但是不管步长选的多小都一定会飞出去。第二幅图的运动模拟也不合理。
在这里插入图片描述
如何解决呢,有人提出了中点法,先用欧拉算出a点,但不用a点,取中点b,考虑b点的速度,应用b点的速度回去重新算欧拉
在这里插入图片描述
进一步,有人用中点思想,算两次欧拉方法,不是回原点重新算,而是去中点算,如果算出来和第一次算出来差不多就不算了,说明步长够小了
在这里插入图片描述
还有隐式的欧拉方法
在这里插入图片描述
Runge-Kutta Families
在这里插入图片描述
Position-Based / Verlet Integration
在这里插入图片描述
刚体(不会发生形变)模拟
在这里插入图片描述

流体模拟 Fluid Simulation

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这门课的动画模拟更多都是在科普。

相关文章:

  • 16-字符串/贪心-相同的字符串
  • docker启动nacos+redis
  • 每日算法----2716. 最小化字符串长度----2025/03/28
  • Android 系统ContentProvider流程
  • 【Hysteria】部署+测试
  • 深入了解Linux内核:task_struct结构详解
  • WinForm真入门-简介
  • react如何引用(按需加载)百度地图,并结合and组件化封装
  • 【leetcode】拆解与整合:分治并归的算法逻辑
  • ​​​​​​Spring Boot热部署插件
  • 【第33节】windows原理:初探PE文件
  • 用 pytorch 从零开始创建大语言模型(三):编码注意力机制
  • 详解CountDownLatch底层源码
  • SQL:CASE WHEN使用详解
  • 二层网络综合实验
  • 从 JDK 11 到 JDK 17:OpenRewrite 实战 Spring Boot 升级指南
  • 项目-苍穹外卖(十七) Apache POI+导出数据
  • 路由器DHCP地址池冲突
  • 【网络协议详解】—— STP 、RSTP、MSTP技术(学习笔记)
  • 15 网络编程:三要素(IP地址、端口、协议)、UDP通信实现和TCP通信实现 (黑马Java视频笔记)
  • 国有六大行一季度合计净赚超3444亿,不良贷款余额均上升
  • 朝鲜新型驱逐舰“崔贤”号进行多项武器试验
  • 马上评丨别让“免费领养”套路坑消费者又坑宠物
  • 西湖大学独家回应本科招生走出浙江:经过三年试点,条件成熟
  • 杭州一季度GDP为5715亿元,同比增长5.2%
  • 外交部回应涉长江和记出售巴拿马运河港口交易:望有关各方审慎行事,充分沟通