【GAMES101】Lecture 21 动画

news2024/11/24 23:05:18

目录

关键帧(Keyframe animation)

物理仿真(Physical simulation)

质点弹簧系统

粒子系统

运动学(Kinematics)

正运动学(Forward Kinematics)

逆运动学(Inverse Kinematics)

Rigging


关键帧(Keyframe animation)

我们知道动画是由一帧一帧的图像连续播放形成,一般电影是一秒放24帧,也就是24fps,然后一般的视频是30fps的,虚拟现实要求达到90fps,那么关键帧就是指动画序列中的重要帧或关键时刻,用于定义动画中物体的位置、姿态、形状等

关键帧之间的帧称为"间隔帧"或"过渡帧",它们是通过插值方法补充关键帧之间的动画过渡效果,当然不是简单的线性插值,像我们之前的贝塞尔曲线,估计也有点关系

物理仿真(Physical simulation)

质点弹簧系统

假设有这么一个理想化的弹簧系统牵着两个质点,这个弹簧没有原长度,那么根据这个胡克定律,这个系统产生的弹力就等于两个质点的位移差乘以劲度系数,当然a和b受到的弹力大小相等方向相反

那实际上弹簧是有原长的,那就需要将拉神量减去弹簧的原本长度,同时乘以一个单位方向向量

用这个x来表示位移的话,那么\dot{x}就表示x的一阶导数就是速度,\ddot{x}表示二阶导数就是加速度

但是刚刚的质点弹簧系统还有一点问题,就是这个系统不会停下来,这个时候就需要引入摩擦力,考虑到要让它停下来那么它速度越大我这个摩擦力应该越大,摩擦力大小就等于质点速度再乘以一个抑制系数,方向和速度方向相反

但是还有一点问题,就是就是这两个质点只有在弹簧的方向上有速度才需要有这个摩擦力,如果质点在弹簧的垂直方向上有速度就不应该有这个摩擦力,因此刚刚单纯的乘以质点的速度就需要换成速度在弹簧方向上的投影

这样一个比较好的质点弹簧系统就好了,我们可以用它来组成其他的东西,比如布料,但是如果我从这个斜对角线的方向上去拉扯这个布料,这个结构不会产生弹力来抵抗我这个拉扯,因为我没有改变这个弹簧的拉伸,那这就不对

所以就在这个结构的对角线上加上弹簧,这样在对角线方向上的拉扯就会产生弹力来抵抗,但是这个结构依然没有办法抵抗水平和垂直方向的折叠,这种折叠同样不会改变目前结构的弹簧拉伸量

解决办法就是在间隔一个质点之间加上弹簧,这样当发生水平或者垂直方向上的折叠时,新加的弹簧会被压缩产生弹力来抵抗折叠

粒子系统

粒子系统本质上是想定义个体和群体的运动行为,那怎么做呢,这节课先简单说一下,对于动画里面的每一帧,根据需要选择创建新的粒子,然后计算每个粒子受到的力,更新每个粒子的速度和位置,如果有必要选择销毁某些粒子,最后进行渲染

粒子系统作用力广泛存在于吸引力和排斥力、重力、电磁力…、弹簧、推进力…阻尼力、摩擦力、空气阻力、粘度…碰撞、墙壁、容器、固定物体…、动态物体、角色身体部位等等,例如粒子系统应用于鸟群,对于一只鸟而言,它会有向鸟群靠近的这个吸引力,但是同时会有和其他鸟保持一定距离的排斥力,并且它飞行的方向是和鸟群的飞行方向一致

运动学(Kinematics)

正运动学(Forward Kinematics)

比如说我们要做一个骨架的运动,如何保证这个骨架它在运动的过程中骨架的各个部分之间的连接关系和几何关系能够保持,这就是运动学的内容

把这个关节的连接类型分成三种,一个是Pin,只能在某个平面上做旋转,一个是Ball,可以往各个方向转,还有一个是移动关节,就是可以伸缩的

正运动学就是每个关节旋转多少,然后找这个移动的位置

逆运动学(Inverse Kinematics)

逆运动学就是我想要移动到某个位置,我怎么旋转每个关节才能实现,这个就很难

这个问题有可能是无解的,也有可能是多解的,那一般怎么做的呢?先有一个初始的位置,然后定义这个误差的度量(比如目标和当前位置距离的平方和),计算误差的梯度,使用梯度下降法求解

Rigging

所谓rigging就是操作这个人物如何运动,像这个王者荣耀里面元歌操纵傀儡那样

对应的就会有这个操作点,也就是关键点,那么在关键帧之间的过渡帧就可以通过这些关键点的插值来实现

因此我们可以通过动作捕捉在真人上检测关键点的移动来反应到动画人物上的关键点移动

在动画制作过程中,动画人物建模完成上纹理后就通过rigging产生动作后再渲染

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

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

相关文章

【MySQL】-18 MySQL综合-4(MySQL储存引擎精讲+MySQL数据类型简介+MySQL整数类型+MySQL小数类型)

MySQL储存引擎精讲MySQL数据类型简介MySQL整数类型MySQL小数类型 十一 MySQL存储引擎精讲11.1 什么是存储引擎11.2 MySQL 5.7 支持的存储引擎11.3 如何选择 MySQL 存储引擎11.4 MySQL 默认存储引擎 十二 MySQL数据类型简介12.1 MySQL 常见数据类型1) 整数类型2) 日期/时间类型3…

Day30 回溯算法part06

又是眼红别人的一天 重新安排行程 菜鸡思路:把从jfk往下所有的情况都列举出来,result数组包含五个元素的时候返回数组。 我们只需要找到一个行程,就是在树形结构中唯一的一条通向叶子节点的路线 N皇后 这个isValid函数也很不好想啊 首先…

blender怎么保存窗口布局,怎么设置默认输出文件夹

进行窗口布局大家都会,按照自己喜好来就行了,设置输出文件夹如图 这些其实都简单。关键问题在于,自己调好了窗口布局,或者设置好了输出文件夹之后,怎么能让blender下次启动的时候呈现出自己设置好的窗口布局&#xff…

【leetcode热题100】反转链表 II

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2…

bugku 1

Flask_FileUpload 文件上传 先随便传个一句话木马 看看回显 果然不符合规定 而且发现改成图片什么的都不行 查看页面源代码&#xff0c;发现提示 那应该就要用python命令才行 试试ls 类型要改成图片 cat /flag 好像需要密码 bp爆破 根据提示&#xff0c;我们先抓包 爆破 …

Windows安全中心显示页面不可用

2024年2月过年当天重装电脑之后&#xff0c;第二天&#xff08;还是第三天&#xff09;安全中心开始提示如标题所示的问题。 问题环境 Windows 11 家庭中文版23H2安装日期2024/‎2/‎10 我解决之前没有截图&#xff0c;所以此处放一个别人的图做示例。 实际解决方式 搜索了…

用code去探索理解Llama架构的简单又实用的方法

除了白月光我们也需要朱砂痣 我最近也在反思&#xff0c;可能有时候算法和论文也不是每个读者都爱看&#xff0c;我也会在今后的文章中加点code或者debug模型的内容&#xff0c;也许还有一些好玩的应用demo&#xff0c;会提升这部分在文章类型中的比例 今天带着大家通过代码角度…

[算法前沿]--059-大语言模型Fine-tuning踩坑经验之谈

前言 由于 ChatGPT 和 GPT4 兴起,如何让人人都用上这种大模型,是目前 AI 领域最活跃的事情。当下开源的 LLM(Large language model)非常多,可谓是百模大战。面对诸多开源本地模型,根据自己的需求,选择适合自己的基座模型和参数量很重要。选择完后需要对训练数据进行预处…

Redis——缓存的持久化

1、持久化机制 Redis的所有数据都保存在内存中&#xff0c;如果没有配置持久化功能&#xff0c;Redis重启后数据就会全部丢失&#xff0c;所以需要开启Redis的持久化功能&#xff0c;将数据保存到磁盘上&#xff0c;这样当Redis重启后&#xff0c;可以从磁盘中恢复数据。Redis…

第六篇【传奇开心果系列】Vant of Vue 开发移动应用示例:深度解析响应式布局支持

传奇开心果系列 系列博文目录Vant开发移动应用示例系列 博文目录前言一、Vant响应式布局介绍二、媒体查询实现响应式布局示例代码三、短点设置实现响应式布局示例代码四、响应式工具类实现响应式布局示例代码五、栅格系统实现响应式布局示例代码六、响应式组件实现响应式布局示…

LeetCode.144. 二叉树的前序遍历

题目 144. 二叉树的前序遍历 分析 这道题目是比较基础的题目&#xff0c;我们首先要知道二叉树的前序遍历是什么&#xff1f; 就是【根 左 右】 的顺序&#xff0c;然后利用递归的思想&#xff0c;就可以得到这道题的答案&#xff0c;任何的递归都可以采用 栈 的结构来实现…

【单片机】简单的自定义延时程序设计(代码演示)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY…

洛谷UVA题目Unknown Error

UnexpectedResponseStatus: expect status code: 301 Moved Permanently on https://onlinejudge.org/index.php?optioncom_comprofiler&tasklogin, got: 200 OK 如果你绑定了账号&#xff0c;去原站Online Judge - Home 登录一下&#xff0c;好久没登陆&#xff0c;需要激…

ElasticSearch级查询Query DSL上

目录 ES高级查询Query DSL match_all 返回源数据_source 返回指定条数size 分页查询from&size 指定字段排序sort 术语级别查询 Term query术语查询 Terms Query多术语查询 exists query ids query range query范围查询 prefix query前缀查询 wildcard query通…

vs2019 - signtool签名和验签的手工操作

文章目录 vs2019 - signtool签名和验签的手工操作概述笔记导入根证书时间戳服务器的选择code sign - 签名文件在代码签名(code sign)前后的区别签名后, 查看属性, 是正常的.用signtool命令行进行验签移除签名END vs2019 - signtool签名和验签的手工操作 概述 signtool是进行c…

【深度学习:MPT-30B】提高开源基础模型的标准

【深度学习&#xff1a;MPT-30B】提高开源基础模型的标准 MPT-30B家族MPT-30B (Base)MPT-30B-InstructMPT-30B-Chat使用 MosaicML Inference 部署 MPT-30B 模型通过 MosaicML 培训定制 MPT-30BLLM Foundry 下一步是什么&#xff1f; 附录致谢数据MPT-30B 8k 上下文窗口微调数据…

2.12作业

程序代码&#xff1a; #include<stdlib.h> #include<string.h> #include<stdio.h>//递归实现n! int n(int element) {if(0element)return 1;return element*n(element-1); }//递归实现0-n的和 int sub_sum(int element) {if(0element)return 0;return eleme…

Java的接口

目录 1.接口的概念 2.语法规则 3.接口的使用 4.接口的特性 总结&#xff1a; 5.实现多个接口 6.接口间的继承 1.接口的概念 接口就是公共的行为规范标准&#xff0c;大家在实现时&#xff0c;只要符合规范标准&#xff0c;就可以通用。 在Java中&#xff0c;接口可以看成…

C语言求解猴子分桃子

问题&#xff1a;海滩上有一堆桃子&#xff0c;五只猴子来分。第一只猴子把这堆桃子平均分为五份&#xff0c;多了一个&#xff0c;这只 猴子把多的一个扔入海中&#xff0c;拿走了一份。第二只猴子把剩下的桃子又平均分成五份&#xff0c;又多了 一个&#xff0c;它同样把多的…

【Java】Spring如何扫描自定义的注解?

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋…