【GAMES101 课程小结】:Lecture 21/22 动画与仿真

内容目录

  1. 动画生成技术介绍
  2. 单个粒子运动的模拟
    (1) Explicit Euler method
    (2) 数值解法的稳定性分析与改进
  3. 刚体的模拟
  4. 流体的模拟

正文

一. 动画中使用到的一些技术

1. 动画的生成
动画的生成一般是用一组静态的图片快速播放来实现。通常,我们称这些图片为序列帧。
类似小时候玩的这种翻页小人书。
在这里插入图片描述
视频来源
https://www.bilibili.com/video/av60057208/

通常视频需要达到 30 帧每秒,才不会有特别明显的卡顿。
对于一些虚拟现实的场景,需要达到两眼同时满足90帧每秒以上。
2. 关键帧动画
先画出几张关键的画面
在这里插入图片描述

而后通过类似插值的方法
在这里插入图片描述
在中间插入画面。

3. 物理仿真
构建基于牛顿定律的一些仿真模型
一些研究示例:
布料仿真
在这里插入图片描述

流体仿真
在这里插入图片描述

弹簧体仿真(作业8)
在这里插入图片描述

毛发仿真
在这里插入图片描述
4. 粒子系统
粒子动画大致思路

  1. 在每一帧画面中创建粒子
  2. 计算作用在每个粒子上的力
  3. 更新每个粒子的位置与速度
  4. 消除掉死亡的粒子
  5. 渲染粒子

5. Rigging
类似体现木偶的方式,对模型进行操作。

6. 动作捕捉

7. CG动画的产品流水线
在这里插入图片描述
预研阶段
方案 -> 场景原画 -> 幻灯片demo -> 进一步设计
生产阶段
场景布置 -> 建模 -> 模型纹理 -> Rigging 让模型运动 -> 动画
后期处理阶段
后期渲染 滤镜 剪辑

二.单个粒子运动的模拟

在这里插入图片描述
假设给定起始点 x0 与时间 t , 希望可以得到 t 时刻顶点的位置。

1. 显式欧拉方法
迭代式如下
在这里插入图片描述
不足:

  1. 误差与步长相关。
    在这里插入图片描述
  2. 无论选取多大的步长,都可能出现无法收敛的情况。不稳定。
    在这里插入图片描述
    方法改进

2. 中值法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将两式合并
在这里插入图片描述

3. 自适应步长法
在这里插入图片描述
计算
在这里插入图片描述

4. 隐式方法
在这里插入图片描述

稳定性好
但需要求微分方程,运算较复杂。

龙格-库塔方法 常微分方程数值解法

RK4
在这里插入图片描述

5. 基于非物理的方法
6. 刚体模拟 (Rigid Body Simulation)
在这里插入图片描述
7. 流体模拟
模型假设

  1. 假设水是由许许多多的刚体粒子组成
  2. 假设水的任何位置都是不可被压缩的(即密度相同,所以只要那个位置密度被改变了, 就可以通过修正的方式来改变粒子的位置)

8. 欧拉方法 vs 拉格朗日方法
在这里插入图片描述
粒子模拟中两种不同观察视角的方法。

拉格朗日视角更多从微观角度出发,观察每个粒子的运动规律。
欧拉视角,宏观角度,观察网格区域里粒子的变化情况。

两个中方法结合的一种研究实践
Material Point Method(MPM)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在这部分的课程中,我们将专注于使用光线追踪来渲染图像。在光线追踪中 最重要的操作之一就是找到光线与物体的交点。一旦找到光线与物体的交点,就 可以执行着色并返回像素颜色。在这次作业中,我们需要实现两个部分:光线的 生成和光线与三角的相交。本次代码框架的工作流程为: 1. 从 main 函数开始。我们定义场景的参数,添加物体(球体或三角形)到场景 中,并设置其材质,然后将光源添加到场景中。 2. 调用 Render(scene) 函数。在遍历所有像素的循环里,生成对应的光线并将 返回的颜色保存在帧缓冲区(framebuffer)中。在渲染过程结束后,帧缓冲 区中的信息将被保存为图像。 3. 在生成像素对应的光线后,我们调用 CastRay 函数,该函数调用 trace 来 查询光线与场景中最近的对象的交点。 4. 然后,我们在此交点执行着色。我们设置了三种不同的着色情况,并且已经 为你提供了代码。 你需要修改的函数是: • Renderer.cpp 中的 Render():这里你需要为每个像素生成一条对应的光 线,然后调用函数 castRay() 来得到颜色,最后将颜色存储在帧缓冲区的相 应像素中。 • Triangle.hpp 中的 rayTriangleIntersect(): v0, v1, v2 是三角形的三个 顶点, orig 是光线的起点, dir 是光线单位化的方向向量。 tnear, u, v 是你需 要使用我们课上推导的 Moller-Trumbore 算法来更新的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值