Games101-动画与模拟(基本概念、质点弹簧系统、运动学)

在这里插入图片描述
动画:把物体变成活的,让它动起来
更关注的是美学。早期的动画是画出来的,并不关心对不对,符不符合物理,只要看起来对
图形学里对动画理解为对于建模或几何的拓展。动画无非就是在不同的时间或不同的帧有不同的几何形状,也就是将3D的模型延伸到时间的维度

将很多的图按顺序和一定的速度播放(因为人眼有视觉暂留的效应,所以不需要在整个时间范围内进行非常集中的采样)

Film(电影):每一秒放24张图(24fps)
Video(平常所说的视频):30fps
游戏(需要体验感好,连贯性高):60fps(甚至会到144HZ,也就是144张图每秒)
Virtual reality(虚拟现实):90fps(为了让人们戴上头戴式设备不晕,会有很多要求,就包括对帧率的要求非常高,要非常流畅,两个眼睛的帧率要达到90fps)

Historical Points in Animation

在这里插入图片描述
远古人类所画的壁画
在这里插入图片描述
随着科学的进步,人们人为的制造一些真正可以看到的动画
最早期,有类似圆盘的物体,圆盘中心固定在某个地方,可以旋转
在这里插入图片描述
到一定阶段,真正发明了电影技术
在这里插入图片描述
第一部手绘的和电影长度相当(Feature-Length)的动画。每一秒放24帧,那就要放24张图,放在一起播放,耗时很长
在这里插入图片描述
计算机本身也可以生成动画
在这里插入图片描述
显示人脸的三维网格模型
在这里插入图片描述
侏罗纪公园,真正将用电脑生成的恐龙放到了电影
在这里插入图片描述
第一个整个电影完全用计算机生成(CG,computer generate)——皮克斯的玩具总动员
是光栅化的方式生成的阴影
在这里插入图片描述
10年前的计算机动画
在这里插入图片描述
冰雪奇缘2,充满了各种细节

Keyframe Animation

在这里插入图片描述
上面一行,是一个人在不同的时间有3个不同的动作。(这3个动作是重要的位置,对应的帧就叫关键帧)
下面一行相当于在2个动作之间补出过渡的动作
在这里插入图片描述
给定一系列不同的帧,中间要插值出来,这就好像每一帧中有若干重要的点,这些重要的点在其他的帧长什么样,然后将它们一一对应找出来后,就可以将这些点在不同的帧之间通过插值的方法算出来

最简单的是线性插值,但下图就已经不是线性的了,对于这种过渡如何看着自然、真实,是有一定讲究的
在这里插入图片描述
线性插值:给你任意的连续的点,将其连起来,连成线段

但有时希望更好的连续性(比如C1),那就要用到曲线和样条,也就是说动画和之前所说的几何是非常有关联的

Physical Simulation

在这里插入图片描述
应用在物体有一个质量(质点),应用在物体上的力叫F,然后它就会获得一个加速度a(有加速度,就可以算速度,有速度就可以算位置。也就是说只要知道物体上的力和初始条件(初始位置、初速度),就可以动态的更新下一时刻的位置)
在这里插入图片描述
往某一个方向扔一个小球,小球会形成一个抛物线(因为它始终受到重力的作用,自然就会有一个加速度,也就会有速度,从而影响位置)
对于衣服来说,是用各种各样的网格形成的,任何一个顶点上有一定的质量,肯定会受到重力的影响,因为它又和其他的顶点相连,肯定还会受到来自其他点的作用力

虽然会复杂,但只要正确的把它受力的模型建立出来,就可以通过解一系列的方程将它算出来
在这里插入图片描述
例子:布料模拟
如果模拟得好,是不会出现反物理的现象的(比如衣服进到身体里等穿模现象),这就涉及到一系列的碰撞检测等问题
在这里插入图片描述
例子:流体(Fluids)
将下面的水分成2步看:

  1. 先模拟水是如何运动的,它的水滴在各种各样的地方是怎么形成的
  2. 当模拟了位置和形状后,进行渲染,得到它长什么样

Mass Spring System/质点弹簧系统

在这里插入图片描述
绳子模拟器:可以把一根绳子模拟成很多小的弹簧连接在一块,可以让它在重力的作用下来回摆
在这里插入图片描述
头发本身受重力,头发和头发之间有摩擦力
在这里插入图片描述
布料本身是网格描述的,自然就可以用各种不同的质点弹簧系统描述它,还可以通过一个点进行拖拽
在这里插入图片描述
质点弹簧系统:是一系列相互连接的质点和弹簧
最基础的单元:一个弹簧左右分别连着2个质点
一个理想的弹簧(没有长度、被拉开多长就会产生相应多大的力)

f a→b是应用到a上,往b方向的作用力,取决于a和b之间有多远
(b-a)是一个从a指向b的向量,所以这和它本身长度是有关系的,b-a越长,这个力越大,这样就可以写出a点往b方向去的力
Ks是劲度系数(胡克定律:固体材料受力后,应力和形变量之间成线性关系)
因为力的作用的相对性,a受到向右的力,b肯定受到向左的力,2和互为相反
在这里插入图片描述
弹簧正常情况下都应该有一定长度,叫做Rest length

弹簧可以拉伸和挤压,下面考虑拉伸,弹簧拉伸后:

b和a的距离为||b-a||
拉开的形变量(距离)为||b-a||-l
受力的方向((b-a)归一化):(b-a)/||b-a||

由于能量守恒,它会永远的振动下去(动能和势能始终在进行一个转换的过程)
在这里插入图片描述
加入摩擦力
引入在物理仿真中经常会用到的记号:
平常我们会用x来表示位置,x的一阶导数(x′)表示速度,x的二阶导数(x′′)表示加速度
在物理模拟中会用x上面加一个点表示速度,加2个点表示加速度
在这里插入图片描述
加入摩擦力(damping force)使它能停:
对于任何一个运动的质点,如果想让它停,那力的方向肯定和速度方向相反(如上图,b的速度往哪,摩擦力就与它相反,再乘上一个强度kd)

但这样会引起所有的运动都停下来。假如有一根弹簧a和b,a和b同步的向右一直移动,这样其实a和b之间没有相对的运动,也就是说这个弹簧没有拉伸,它不会振动,最后还会被摩擦力停下来。这样描述的摩擦力只能描述外部的力,描述不了弹簧之间内部的力(损耗)

拿一个质点弹簧系统,竖着放,一松手,会往地上掉,而且它作为一个整体,下落的速度是定的,那如果对a和b都应用摩擦力,它就会整个让弹簧往地上掉得越来越慢
在这里插入图片描述
加入内部摩擦力
内部的摩擦力应该和它们的相对运动有关系
内部摩擦力的目的:希望弹簧恢复到正常长度。只要a和b被拉开了,a就会向b方向去靠,所以这个摩擦力肯定是要使其往这个方向去。所以应用在b上的力的方向应该是向左的

方向:-(b-a)/||b-a||
大小:如上图红框里的部分(点乘),a和b之间的相对速度投影在ab方向上的速度(投影是因为有些速度(比如a固定,b绕a做圆周运动,它的速度是垂直弹簧的)并不能引起弹簧长度的改变)
在这里插入图片描述
弹簧可以组合成各种形状,如上图,可以每2根共用一个质量表示一张纸,也可以在三维空间中进行连接
在这里插入图片描述
现在用各种弹簧模拟一块布
问题1:切变会受影响(如果拉着上图布的2个角往外拽,形状自然会被拉成中间被拉成,两边收的形状。但布会抵抗切变的力,不会影响形状)
问题2:如果有一种力让整个形状变得不是一个平面(即out-of-plane bending)(如果沿着对角线折一块布,布本身有对抗这个的力)
在这里插入图片描述
解决切变的问题—加入斜的对角线
在以上的形状中加入斜的对角线,再拉就不能变成之前的形状了(因为拉的话,新加的蓝线会被压缩,那弹簧就会向外抵抗它)
但是这个结构不对称(对于一块布,往任何一个方向拉它,它的行为应该是一致的)

虽然沿右上到左下对折解决了问题2,但沿右下到左上对折仍然没有解决问题2
在这里插入图片描述
加上另外一个方向上的斜对角线
但这个形状不能抵抗非平面的弯曲(沿着竖的或横的线折叠)
在这里插入图片描述
加上skip connection的连线
如上图的红线,任何一个点都和它隔一个点连一根线
这个红线的连接是非常弱的(正常情况下布也可以折过来),蓝线非常强
在这里插入图片描述
质点弹簧系统做的裙子(只是简化的表示,并无纤维、股和线等之间的力的关系)
在这里插入图片描述
有限元方法(FEM (Finite Element Method)),这个方法被广泛应用于车子碰撞(车子接触墙的地方受力,为什么车子一直到车尾都会坏掉,因为力之间有传导diffusion的作用)

Particle Systems

在这里插入图片描述
描述一些很小很小移动的东西
建模一堆很微小的东西,定义每一个粒子会受到的力(有重力、风力、粒子和粒子之间的力)
很容易模仿一些魔法效果、雾、灰尘等等
粒子越多模拟得越精细,但是越慢;越少,跑起来越快,但效果差一些

挑战
粒子系统可以模拟流体,这样可能需要很多粒子
粒子和粒子之间的作用不只有碰撞,还可能有引力(这样就要找粒子周围的最近的多少个粒子,这样就需要一些加速结构,然后粒子的位置还会移动,就还要进行更新)
在这里插入图片描述
算法

  1. 动态生成一些新的粒子
  2. 计算每个粒子的作用力(内部的、外部的)
  3. 根据作用力更新粒子的位置和速度
  4. 如果粒子有存活时间,移除消亡的粒子
  5. 渲染粒子
    难点:定义相互作用力,解作用力
    在这里插入图片描述
    吸引力和排斥力:
    重力,电磁力, …
    弹力,推力, …
    阻尼力:
    摩擦力, 空气阻力, 粘滞力, …
    碰撞:(粒子和粒子之间、和墙、容器等,不能穿模)
    在这里插入图片描述
    万有引力:再小的物体都会满足这个规律,对于灰尘和粒子来说肯定会有万有引力
    在这里插入图片描述
    对于星系来说,也和上面是同样的道理。对于粒子如何被画出来,也是先模拟,再渲染,这2个过程是分开的
    在这里插入图片描述
    基于粒子的流体模拟
    模拟的是粒子,渲染的是像玻璃、是否带白沫等等
    在这里插入图片描述
    粒子系统不一定只是描述最简单的点,这个粒子也就是在一个很大范围内有很多重复的东西(一个群体中的个体)如模拟一个鸟群,个体的鸟应该满足哪些规则(可以定义出它们之间的相互关系)
    个体的运动属性:
    吸引:任何一只鸟都不愿意落单,都会找到它周围的鸟,并试图融入进去
    排斥:任何一只鸟都不希望和其他鸟离得太近
    对齐:如果大家都往某一个方向飞,鸟因为不会离群,也会沿着它能看到的大家飞的主要方向

Forward Kinematics/正运动学

在这里插入图片描述
在图形学中运动学分为正向的和反向的,即正运动学和逆运动学
正运动学
描述一个和人骨骼连接拓扑结构类似的骨骼系统,可以定义不同的关节
3种不同的关节

  1. Pin (1D rotation) 钉子钉上的关节,钉上后只能在钉住的平面内往一个方向旋转
  2. Ball (2D rotation)有一个东西可以包住一个球,这个球可以任意的在任意方向旋转
  3. Prismatic joint (translation)可以拉长,也就是可以有一些移动
    可以定义一些简单的关节模型(即定义复杂模型是如何相连的),整个结构可以形成一个树形的加速结构
    在这里插入图片描述
    如上图,只能在平面内发生旋转,类似于肩和肘的旋转,假设第一段旋转θ1度,第二段旋转θ2度,那尖端在哪?
    在这里插入图片描述
    先算出上方黑点的位置,因为θ2是在θ1的基础上旋转的,可以用θ1加θ2计算
    在这里插入图片描述
    所以正向运动学,只要能定义好连接方式,定义好它们之间的各种位置,就可以找到各种点的位置。还可以画出随时间变化的角度的曲线
    在这里插入图片描述
    例子:走路
    在这里插入图片描述
    优点
    实现容易(告诉你任何一个位置,可以算出任何一个地方停在哪)
    缺点
    它的定义都很物理(比如定义什么东西旋转多少角度)
    但是艺术家们更喜欢直观的控制尖端进行动画的创建,而非调整角度

Inverse Kinematics/逆运动学

为了让艺术家更好的使用这套系统,去直观的的调骨骼的位置,就引入了逆运动学
在这里插入图片描述
逆运动学可以手里捏着尖端到处移动,它会自动的调整它的关节的位置,使得尖端就在你要的位置上
在这里插入图片描述
如上图,逆运动学就是固定P点,它会告诉你θ1、θ2
在这里插入图片描述
解起来就比较复杂
在这里插入图片描述
在这里插入图片描述
逆运动学的解有时候不唯一(多解)
如上图,尖端的位置确定了,但是可以有2个不同的摆放方式,取哪一个?
在这里插入图片描述
逆运动学有时会出现无解的情况
如上图,最上面的关节点只可能出现在下图的虚线上,尖端通过旋转可以在一个圆上,从而尖端只有可能在外层的圈和内层的圈之间,其他位置到不了
在这里插入图片描述
优化问题:
一般N链IK问题的数值求解
•选择初始配置
•定义错误度量(例如:目标与当前位置之间距离的平方)
•计算误差梯度作为配置的函数
•应用梯度下降(或牛顿方法,或其他优化过程)(知道尖端位置,如何优化θ1和θ2)
梯度下降法来解,而不是用数学方法真的去解θ1,θ2

Rigging

在这里插入图片描述
对于一个形状的控制,其实就是木偶操作(就好像用各种线提木偶的部件的不同位置,它就会形成某一种造型),一定程度上就是逆运动学的一个应用。动画或电影就会应用Rigging给角色添加动作

一些建模软件(3ds MAX、MAYA),要先给物体加上骨骼,要知道操作哪些点会影响其他的哪些点,包括软选取、蒙皮等操作。

本课程就理解成对物体或角色的不同地方加一些控制点
在这里插入图片描述
例子
在这里插入图片描述
人物有2个不同的造型,这2个造型之间可以通过插值的方式做。利用控制点做了2个不同的造型,然后将控制点和控制点之间的位置做插值
实际上在blend控制点以及它周围能够影响的区域

Motion Capture/动作捕捉

在这里插入图片描述
给真人各个不同的地方加上控制点,让这些控制点的位置直接反应到虚拟的造型上去。要建立虚拟的人物和真实的人物之间的关系
在这里插入图片描述
优点
可以迅速捕捉大量的真实数据。如果艺术家们直接去调可能耗时会很长
真实感非常强
缺点
进行动作捕捉需要很多前期的准备(上面的衣服不容易穿,放标志点不自然)
捕捉出来的动作可能不符合艺术家的需求,需要调整(比如真人去演动画人物,动画人物的表情是很夸张的;或者有时捕捉不到好的数据,比如捕捉条件有限制,人在正面的时候看到的控制点,背面也有但正面看不到,那就要在背后加一个摄像机,这就需要成本,而且正常需要更多的摄像机;人物动作的时候还会遮挡)
在这里插入图片描述
除了白色控制点,还有磁力的(不受遮挡影响)、机械的(真正在人身上贴上机械的东西)
在这里插入图片描述
应用最广泛的还是光学的捕捉方法,贴一些Maker(贴片或小球)贴在人身上,然后用很多很复杂的摄像机,将这些点的位置非常准确的测出来
在这里插入图片描述
下面的曲线就是一个控制点(Maker)在不同的时间会出现在三维空间中的位置显示出来
在这里插入图片描述
虽然通过动作捕捉等非常真实的动画生成方式,可以得到非常真实的动画但是也会有一些担忧
Uncanny valley (恐怖谷效应):也就是害怕被人工智能统治世界,如果生成的东西过于真实,并且有人利用它做一些坏事

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

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

相关文章

了解Cookie登录:原理、实践与安全指南

什么是Cookie登录? Cookie是什么 当你首次登录网站时,你会输入用户名和密码。在后台,网站的服务器验证这些凭据是否正确。一旦确认你的身份无误,服务器就会创建一个Cookie,并将其发送到你的浏览器。这了解Cookie登录…

2024年深圳杯东三省数学建模联赛A题论文首发+问题一代码分享

深圳杯A题论文代码分享资料链接:链接:https://pan.baidu.com/s/1L2NVgoefSW-yuqZjEB3wcw 提取码:sxjm 基于优化模型的多个火箭残骸的准确定位 摘要 在现代航天技术中,火箭是实现空间探索的关键工具。由于火箭发射过程中的高成…

Qt:学习笔记一

一、工程文件介绍 1.1 main.cpp #include "widget.h" #include <QApplication> // 包含一个应用程序类的头文件 //argc&#xff1a;命令行变量的数量&#xff1b;argv&#xff1a;命令行变量的数组 int main(int argc, char *argv[]) {//a应用程序对象&…

Shell和Linux权限

目录 shell Liunx权限 用户 sudo Linux的权限管理 文件访问者的分类 文件的属性 文件的权限 文件全权限值的表示方法 1.字符表示 2.八进制数值表示 用户符号 修改文件访问权限 修改文件拥有者 修改拥有者和所属组 修改所属组 文件目录的权限的含义 问题 粘滞…

程序员学CFA——数量分析方法(四)

数量分析方法&#xff08;四&#xff09; 常见概率分布基本概念离散型随机变量与连续型随机变量离散型随机变量连续型随机变量 分布函数概率密度函数&#xff08;PDF&#xff09;累积分布函数&#xff08;CDF&#xff09; 离散分布离散均匀分布伯努利分布二项分布定义股价二叉树…

Linux系统编程---线程同步

一、同步概念 同步即协同步调&#xff0c;按预定的先后次序运行。 协同步调&#xff0c;对公共区域数据【按序】访问&#xff0c;防止数据混乱&#xff0c;产生与时间有关的错误。 数据混乱的原因&#xff1a; 资源共享(独享资源则不会)调度随机(意味着数据访问会出现竞争)线…

算法模版自用(杂)

文章目录 算法库函数next_permutation(start,end) prev_permutation(start,end) (全排列函数)nth_element &#xff08;求第k小值&#xff09;next(it,num),prev(it,num)min_element(begin(),end()),max_element(begiin(),end()) (取最小值最大值) _int128的输入输出STLlist 数…

内容互动性的提升策略:Kompas.ai的智能工具

在数字营销的新时代&#xff0c;内容的互动性已成为提升用户参与度和品牌忠诚度的关键因素。互动性内容不仅能够吸引用户的注意力&#xff0c;还能够促进用户与品牌的沟通和交流&#xff0c;从而加深用户对品牌的理解和认同。本文将分析互动性内容在提升用户参与度中的作用及其…

基于DEAP数据集的四种机器学习方法的情绪分类

在机器学习领域&#xff0c;KNN&#xff08;K-Nearest Neighbors&#xff09;、SVM&#xff08;Support Vector Machine&#xff09;、决策树&#xff08;Decision Tree&#xff09;和随机森林&#xff08;Random Forest&#xff09;是常见且广泛应用的算法。 介绍 1. KNN&am…

【Java】从0实现一个消息队列中间件

从0实现一个消息队列中间件 什么是消息队列需求分析核心概念核心API交换机类型持久化网络通信网络通信API 消息应答 模块划分项目创建创建核心类创建Exchange创建MSGQueue创建Binding创建Message 数据库设计配置sqlite实现创建表和数据库基本操作 实现DataBaseManager创建DataB…

按现价和不变价计算与公布的统计指标主要有哪些

在经济统计和分析工作中 , 有些指标可以直接用实物量表示 , 如粮食和工业品产量等&#xff1b;而有些指标则是用价值量表示的 , 如全国居民人均可支配收入、社会消费品零售总额、商品房销售额等。在计算价值量指标时&#xff0c;一般均要考虑采用什么价格来计算。统计上常用的价…

设计模式(三):抽象工厂模式

设计模式&#xff08;三&#xff09;&#xff1a;抽象工厂模式 1. 抽象工厂模式的介绍2. 抽象工厂模式的类图3. 抽象工厂模式的实现3.1 创建摩托车的接口3.2 创建摩托车的具体实现3.3 创建汽车的接口3.4 创建汽车的具体产品3.5 创建抽象工厂3.6 创建具体工厂3.7 创建工厂生成器…

苹果一次性开源了8个大模型! 包含模型权重、训练日志和设置,OpenELM全面开源

不以开放性著称的苹果居然同时开源了大模型的权重、训练和评估框架&#xff0c;涵盖训练日志、多个保存点和预训练设置。同时升级计算机视觉工具包 CVNets 为 CoreNet&#xff01;支持 OpenELM&#xff01; ▲图1.由Stable Diffusion3生成。 OpenELM是Apple苹果公司最新推出的…

律师口才训练技巧课程介绍?

律师口才训练技巧课程介绍 一、课程背景与目标 律师口才作为法律职业的核心能力之一&#xff0c;对于律师在**辩论、法律咨询、谈判协商等场合的表现具有至关重要的作用。然而&#xff0c;许多律师在口才方面存在不足&#xff0c;难以充分发挥自己的专业能力。因此&#xff0c;…

底层逻辑(1) 是非对错

底层逻辑(1) 是非对错 关于本书 这本书的副标题叫做&#xff1a;看清这个世界的底牌。让我想起电影《教父》中的一句名言&#xff1a;花半秒钟就看透事物本质的人&#xff0c;和花一辈子都看不清事物本质的人&#xff0c;注定是截然不同的命运。 如果你看过梅多丝的《系统之美…

“AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?

通义灵码入职阿里云云原生团队后&#xff0c;已经展示过 Ta 生成单元测试和自动生成代码的强大实力。今天&#xff0c;阿里云后端工程师云徊将从项目开发的实际需求出发&#xff0c;演示通义灵码在开发工作中可提供的帮助。 通义灵码在 Git 开发项目中起到了哪些作用&#xff…

WildCard开通GitHub Copilot

更多AI内容请关注我的专栏&#xff1a;《体验AI》 期待您的点赞&#x1f44d;收藏⭐评论✍ WildCard开通GitHub Copilot GitHub Copilot 简介主要功能工作原理 开通过程1、注册Github账号2、准备一张信用卡或虚拟卡3、进入github copilot页4、选择试用5、选择支付方式6、填写卡…

为什么单片机控制电机需要加电机驱动

通常很多地方只是单纯的单片机MCU没有对电机的驱动能力&#xff0c;或者是介绍关于电机驱动的作用&#xff0c;如&#xff1a; 提高电机的效率和精度。驱动器采用先进的电子技术和控制算法&#xff0c;能够精准控制电机的参数和运行状态&#xff0c;提高了电机的效率和精度。拓…

【Hello算法】 > 第 3 关 >栈与队列

数据结构 之 数组与链表 1 栈 / 栈的常见操作、实现、应用2 队列 /队列的常见操作、实现、应用3 双向队列4 Tips ———————————————————————————————————————————————————————————- ————————————————…

Hybrid Homomorphic Encryption:SE + HE

参考文献&#xff1a; [NLV11] Naehrig M, Lauter K, Vaikuntanathan V. Can homomorphic encryption be practical?[C]//Proceedings of the 3rd ACM workshop on Cloud computing security workshop. 2011: 113-124.[MJS16] Maux P, Journault A, Standaert F X, et al. To…