图形学笔记(十九)动画 —— 动画的历史、关键帧插值、物理仿真、质点弹簧系统、粒子系统、(反向IK)动力学、Rigging 绑定、Blend Shapes、动作捕捉
图形学笔记(十八)光场、颜色和感知—— 光场相机(全光函数、光线和光场的定义)、可见光谱、谱功率密度、颜色的生物学基础、Tristimulus Theory、同色异谱、加色与减色系统、颜色空间SPD
文章目录
- 1 Animation的理解
- 2 Historical Point in Animation
- 3 动画技术
- 3.1 Keyframe Interpolation 关键帧插值
- 3.2 Physical Simulation:物理仿真
- 3.2.1 概览
- 3.2.2 质点弹簧系统 Mass Spring System
- 3.2.3 Particle System 粒子系统
- 4 Kinematics 运动学
- 4.1 Forward Kinematics 正运动学
- 4.1.1 Articulated skeleton 关节骨骼系统
- 4.1.2 Joint 类型
- 4.1.3 Kinematics的优缺点
- 4.2 Inverse Kinematics 逆向运动学
- 4.2.1 概览
- 4.2.2 问题
- 4.2.3 N-link lK问题优化方法
- 4.3 应用
- 4.3.1 Rigging 绑定
- 4.3.2 Blend Shapes 混合形状
- 4.3.3 Motion Capture 动作捕捉
- 5 动画/电影生产的Pipeline
1 Animation的理解
“Bring things to life”
- 交流的工具
- 美学引导技术
建模的扩展
- 把3d模型延申到时间的维度
输出:按顺序播放的图片序列,提供一种运动感。
- 电影:24 fps
- Video(通常):30 fps
- Virtual reality:90 fps
2 Historical Point in Animation
First Animation:Shahr-e Sukhteh, Iran 3200 BCE
Phenakistoscope, 1831
First Film:Edward Muybridge, “Sallie Gardner”(1878)
最早用作科学研究工具。
First Hana-Drawn Feature-Length (>40 mins) Animation: Disney, "Snow White and the Seven Dwarfs”(1937)
First Digital-Computer-Generated Animation: lvan Sutherland,“Sketchpad”(1963) - Light pen, vector display
Eariy Conputer Animation: Ed Catmull & Frederick Parke, “Computer Animated Faces”(1972)
Digital Dinosaurs! Jurassic Park (1993)
First CG Feature-Length Film: Pixar,"Toy Story”(1995)
Compuier Animation - 10 years ago: Sony Pictures Animation, "Cloudy With a Chance of Meatballs”(2009)
Computer Animation - 2019: Walt Disney Animation Studios,“Frozen 2”(2019)
3 动画技术
3.1 Keyframe Interpolation 关键帧插值
关键帧动画的制作步骤:
- Animator 创建keyframes.
- Assistant(人或计算机)创建 in-between frames.
关键帧动画一般使用插值方法来进行补帧,把每一帧当作参数值的向量,下面是线性插值。
问题:线性插值效果不够好。
用于平滑/可控插值的回归样条。
3.2 Physical Simulation:物理仿真
3.2.1 概览
牛顿运动定律 F=maF = maF=ma
使用数值模拟生成物体的运动。
例子:布料模拟Cloth Simulation、Fluid 流体
、质点弹簧系统 Mass Spring System、头发 Hair、质点弹簧网格Mass Spring Mesh。
3.2.2 质点弹簧系统 Mass Spring System
1> A Simple Spring
理想化的弹簧:没有长度,作用力会导致位移。
ksk_sks是弹簧的系数coefficient:stiffness 进度系数。
2> 非0长度的弹簧
问题:永远震动oscillate下去。
3> Simple motion damping
- 在运动中表现viscous drag
- 在速度方向减速运动
- kdk_dkd是damping系数
问题:所有运动都会停止(不能表现弹簧内部的损耗)。
4> Internal Damping for Spring
只阻尼内部,由弹簧驱动的运动。
Viscous drag 仅限于弹簧长度的变化,不会减慢弹簧系统的整体运动(例如,整体平移或旋转)
Note: 这只是一种特殊的阻尼(damping)。
5> Structures from Springs
弹簧结构的连接可以决定一个图形的行为,比如改进下面的连接来模拟布料。
原始的不足之处:
- 切变会影响形状。
- 会使原来的形状不在一个平面上。
改进之后:
- 在对角线连接弹簧会抵抗切变。
- 在两个对角线都连切线避免了各向异性。
- 红色的弹簧会避免out-of-plane bending(两条对角线竖直方向会弯折)。
Mass Spring Dress + character 效果
有限元方法FEM(Finite Element Method)(代替弹簧系统的一种模拟布料的办法)
常用来做汽车碰撞,主要思想是力与力之间存在传导,效果如下。
3.2.3 Particle System 粒子系统
- 粒子系统就是将动态的系统建模为大量粒子的集合
- 每个粒子的运动都是由一组物理(或非物理)力定义的。
- 粒子系统是在图形和游戏上很流行的技术。
- 具备可扩展性:粒子越少,速度越快,粒子越多,速度越慢。
挑战
- 可能需要许多粒子(例如流体)
- 可能需要加速结构(例如寻找最近的粒子进行如引力的相互作用)
步骤
- 创建新的粒子(如果需要的话)。
- 计算每个粒子的力。
- 更新每个粒子的位置和速度。
- 移除死掉的粒子。
- 渲染粒子。
粒子系统的作用力
引力和斥力(repulsion) 如:万有引力、磁力、弹力(Springs)、弹簧、推进力(propulsion)。(eg:万有引力)
阻力(Damping forces):摩擦(Friction),空气阻力(air drag),粘度 (viscosity)…
碰撞(Collisions):墙壁、容器、固定的物体…。与动态物体、人物身体部位等…。
模拟动物集群(Flocking)as an ODE
(1) 把每个鸟建模成一个粒子。
(2) 每个粒子都受制于简单的力。
- attraction to center of neighbors(鸟找到周围的鸟融入到中间去)。
- repulsion from individual neighbors(大家不愿意离的太近个体之间存在斥力)。
- alignment toward average trajectory of neighbors(考虑运动的平均方向)。
(3) 使用数值方式(数值求解)模拟大粒子系统的演化。
(4) 可以模拟复杂的情况(鱼、蜜蜂等)。
4 Kinematics 运动学
4.1 Forward Kinematics 正运动学
4.1.1 Articulated skeleton 关节骨骼系统
- Topology 是一种拓扑结构(描述什么与什么连接)
- 关节(joints)间的几何关系。
- 树形结构
4.1.2 Joint 类型
Pin(1D rotation):在平面内旋转
Ball(2D rotation):可以旋转到不同的平面
Prismatic joint(translation):可以拉长
例子:2D中简单的两端骨骼。
Animator提供角度,计算机决定end-effector的位置p。
Animation是用角度参数与时间的函数来描述的。
4.1.3 Kinematics的优缺点
优点
- 直接控制方便
- 便于实施
不足
- 动画可能难以用物理的方式来制作(不直观,艺术家不喜欢)
- 消耗动画师的时间
4.2 Inverse Kinematics 逆向运动学
4.2.1 概览
根据尖端获得关节的位置。
Animator提供end-effector的位置,计算机决定满足限制的joint角度。
Direct inverse kinematics:对于两端的臂的求解方法如下。
4.2.2 问题
逆运动学的解不唯一。
解有可能不存在。
4.2.3 N-link lK问题优化方法
- 选择一个初始构型。
- 定义一个 error metric(如:目标与当前位置之间距离的平方)。
- 计算误差梯度作为构形的函数
- 应用梯度下降(或牛顿法,或其他优化程序)
4.3 应用
4.3.1 Rigging 绑定
Rigging是一套高级角色控制,允许更快速和直观地修改姿势、变形、表情等。
- 就像提线木偶的线一样。
- 捕捉所有有意义的角色变化。
- 因角色而异。
制作昂贵:具有人工误差并需要艺术和技术的训练。
4.3.2 Blend Shapes 混合形状
直接在曲面之间进行插值。
例如对一组面部表情进行建模。
最简单的方案:取顶点位置的线性组合,样条用于控制随着时间的推移权重的选择。
4.3.3 Motion Capture 动作捕捉
Motion Capture是创建动画序列的数据驱动方法。
下面是三种动捕设备(光学、磁力和机械)。
记录真实世界的表现(例如执行活动的人),从收集到的数据中提取姿态作为时间函数。
优点
- 非常贴近真实
- 可以快速的过去大量的真实数据。
缺点
- 准备工作复杂且高花费。
- 捕捉到的动画可能不满足艺术家的需要,需要选择。
Optical Motion Capture
- 在动捕演员上做标记(小球或贴片)。
- 8+ 摄像机,240 Hz,有遮挡现象会变得困难。
Motion Data
面部动画的挑战
Uncanny valley (恐怖谷效应)
人造角色的表情越真实就越恐怖,直到达到完全真实。
5 动画/电影生产的Pipeline
图形学笔记(十九)动画 —— 动画的历史、关键帧插值、物理仿真、质点弹簧系统、粒子系统、(反向IK)动力学、Rigging 绑定、Blend Shapes、动作捕捉相关推荐
- Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效
之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...
- 计算机图形学【GAMES-101】14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)
快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...
- Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法
Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...
- [计算机图形学]动画与模拟:关键帧动画、质点弹簧系统、运动学与绑定(前瞻预习/复习回顾)
一.动画的简要概念 动画和语言一样,一开始都是作为传达信息的工具.什么是动画呢?简单的理解就是让画面变成"活的",也就是让它们能够动起来,其次需要一定的美观.在图形学上,我们可以把 ...
- 图形学笔记(九)几何 ——几何表示方法(CSG、距离函数、水平集 、点云、网格(obj格式))、贝塞尔曲线(面)
图形学笔记(八)着色2 -- 纹理映射.重心坐标.双线性插值.Mipmap.三线性插值.各向异性过滤.纹理的应用(环境贴图.法线贴图等) 图形学笔记(十)几何2 -- 曲面细分(Loop细分.Catm ...
- 主成分分析碎石图_ISLR读书笔记十九:主成分分析(PCA)
本文使用 Zhihu On VSCode 创作并发布 前面写的一些统计学习方法都是属于监督学习(supervised learning),这篇主成分分析(principal components an ...
- 数据科学和人工智能技术笔记 十九、数据整理(上)
十九.数据整理(上) 作者:Chris Albon 译者:飞龙 协议:CC BY-NC-SA 4.0 在 Pandas 中通过分组应用函数 import pandas as pd# 创建示例数据帧 d ...
- ROS探索总结(十六)(十七)(十八)(十九)——HRMRP机器人的设计 构建完整的机器人应用系统 重读tf 如何配置机器人的导航功能
ROS探索总结(十六)--HRMRP机器人的设计 1. HRMRP简介 HRMRP(Hybrid Real-time Mobile Robot Platform,混合实时移动机器人平台 ...
- Mr.J-- jQuery学习笔记(十八)--自定义动画
animate(params,[speed],[easing],[fn]) 概述 用于创建自定义动画的函数. 这个函数的关键在于指定动画形式及结果样式属性对象.这个对象中每个属性都表示一个可以变化的样 ...
最新文章
- phpstudy多站点配置好后index of/ 列表无法出现的解决
- SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架
- linux的虚拟文件系统VFS
- java的源代码文件扩展名_【单选题】Java 的源代码文件具有( )的扩展名 (5.0分)
A. .c B. .class C...
- Oracle工具使用(export,import,sqlldr中文帮助及实例))
- 转载 敏捷教练,从A到Z
- HBase读性能优化策略
- Spark Streaming ReceiverTracker架构设计
- php redis hgetall 慢,redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- 树和二叉树总结(三)—BST二叉排序树
- PMP-强化练习题一(180题答案及解析)
- 从概念到代码在6个小时内:交付我的第一个Windows Phone应用
- 纸壳CMS主题增强,支持主题中加入模板
- 计算机常用屏幕分辨率,pc端常用电脑屏幕 ((响应式PC端媒体查询)电脑屏幕分辨率尺寸大全)...
- 指数多项式的Galois群计算
- cnpm install 与 npm install
- 《瓦尔登湖》中的“访客”篇中一首小诗与刘禹锡的《陋室铭》
- Lifelong Person Re-Identification via Adaptive Knowledge Accumulation论文笔记
- 【音视频】获取桌面程序窗口列表以及桌面、窗口的缩略图(4-4)
- HTML5 水果忍者游戏