图形学笔记(十八)光场、颜色和感知—— 光场相机(全光函数、光线和光场的定义)、可见光谱、谱功率密度、颜色的生物学基础、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

  1. First Animation:Shahr-e Sukhteh, Iran 3200 BCE

  2. Phenakistoscope, 1831

  3. First Film:Edward Muybridge, “Sallie Gardner”(1878)
    最早用作科学研究工具。

  4. First Hana-Drawn Feature-Length (>40 mins) Animation: Disney, "Snow White and the Seven Dwarfs”(1937)

  1. First Digital-Computer-Generated Animation: lvan Sutherland,“Sketchpad”(1963) - Light pen, vector display

  2. Eariy Conputer Animation: Ed Catmull & Frederick Parke, “Computer Animated Faces”(1972)

  3. Digital Dinosaurs! Jurassic Park (1993)

  4. First CG Feature-Length Film: Pixar,"Toy Story”(1995)

  5. Compuier Animation - 10 years ago: Sony Pictures Animation, "Cloudy With a Chance of Meatballs”(2009)

  6. Computer Animation - 2019: Walt Disney Animation Studios,“Frozen 2”(2019)

3 动画技术

3.1 Keyframe Interpolation 关键帧插值

关键帧动画的制作步骤:

  1. Animator 创建keyframes.
  2. 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
弹簧结构的连接可以决定一个图形的行为,比如改进下面的连接来模拟布料。


原始的不足之处:

  1. 切变会影响形状。
  2. 会使原来的形状不在一个平面上。

改进之后:

  • 在对角线连接弹簧会抵抗切变。
  • 在两个对角线都连切线避免了各向异性。
  • 红色的弹簧会避免out-of-plane bending(两条对角线竖直方向会弯折)。

Mass Spring Dress + character 效果

有限元方法FEM(Finite Element Method)(代替弹簧系统的一种模拟布料的办法)
常用来做汽车碰撞,主要思想是力与力之间存在传导,效果如下。

3.2.3 Particle System 粒子系统

  • 粒子系统就是将动态的系统建模为大量粒子的集合
  • 每个粒子的运动都是由一组物理(或非物理)力定义的。
  • 粒子系统是在图形和游戏上很流行的技术。
  • 具备可扩展性:粒子越少,速度越快,粒子越多,速度越慢。

挑战

  • 可能需要许多粒子(例如流体)
  • 可能需要加速结构(例如寻找最近的粒子进行如引力的相互作用)

步骤

  1. 创建新的粒子(如果需要的话)。
  2. 计算每个粒子的力。
  3. 更新每个粒子的位置和速度。
  4. 移除死掉的粒子。
  5. 渲染粒子。

粒子系统的作用力

  • 引力和斥力(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问题优化方法

  1. 选择一个初始构型。
  2. 定义一个 error metric(如:目标与当前位置之间距离的平方)。
  3. 计算误差梯度作为构形的函数
  4. 应用梯度下降(或牛顿法,或其他优化程序)

4.3 应用

4.3.1 Rigging 绑定

Rigging是一套高级角色控制,允许更快速和直观地修改姿势、变形、表情等。

  • 就像提线木偶的线一样。
  • 捕捉所有有意义的角色变化。
  • 因角色而异。

制作昂贵:具有人工误差并需要艺术和技术的训练。

4.3.2 Blend Shapes 混合形状

直接在曲面之间进行插值。

例如对一组面部表情进行建模。

最简单的方案:取顶点位置的线性组合,样条用于控制随着时间的推移权重的选择。

4.3.3 Motion Capture 动作捕捉

Motion Capture是创建动画序列的数据驱动方法。

下面是三种动捕设备(光学、磁力和机械)。

记录真实世界的表现(例如执行活动的人),从收集到的数据中提取姿态作为时间函数。

优点

  1. 非常贴近真实
  2. 可以快速的过去大量的真实数据。

缺点

  1. 准备工作复杂且高花费。
  2. 捕捉到的动画可能不满足艺术家的需要,需要选择。

Optical Motion Capture

  • 在动捕演员上做标记(小球或贴片)。
  • 8+ 摄像机,240 Hz,有遮挡现象会变得困难。

Motion Data

面部动画的挑战
Uncanny valley (恐怖谷效应)
人造角色的表情越真实就越恐怖,直到达到完全真实。

5 动画/电影生产的Pipeline

图形学笔记(十九)动画 —— 动画的历史、关键帧插值、物理仿真、质点弹簧系统、粒子系统、(反向IK)动力学、Rigging 绑定、Blend Shapes、动作捕捉相关推荐

  1. Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效

    之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...

  2. 计算机图形学【GAMES-101】14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  3. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  4. [计算机图形学]动画与模拟:关键帧动画、质点弹簧系统、运动学与绑定(前瞻预习/复习回顾)

    一.动画的简要概念 动画和语言一样,一开始都是作为传达信息的工具.什么是动画呢?简单的理解就是让画面变成"活的",也就是让它们能够动起来,其次需要一定的美观.在图形学上,我们可以把 ...

  5. 图形学笔记(九)几何 ——几何表示方法(CSG、距离函数、水平集 、点云、网格(obj格式))、贝塞尔曲线(面)

    图形学笔记(八)着色2 -- 纹理映射.重心坐标.双线性插值.Mipmap.三线性插值.各向异性过滤.纹理的应用(环境贴图.法线贴图等) 图形学笔记(十)几何2 -- 曲面细分(Loop细分.Catm ...

  6. 主成分分析碎石图_ISLR读书笔记十九:主成分分析(PCA)

    本文使用 Zhihu On VSCode 创作并发布 前面写的一些统计学习方法都是属于监督学习(supervised learning),这篇主成分分析(principal components an ...

  7. 数据科学和人工智能技术笔记 十九、数据整理(上)

    十九.数据整理(上) 作者:Chris Albon 译者:飞龙 协议:CC BY-NC-SA 4.0 在 Pandas 中通过分组应用函数 import pandas as pd# 创建示例数据帧 d ...

  8. ROS探索总结(十六)(十七)(十八)(十九)——HRMRP机器人的设计 构建完整的机器人应用系统 重读tf 如何配置机器人的导航功能

    ROS探索总结(十六)--HRMRP机器人的设计 1. HRMRP简介         HRMRP(Hybrid Real-time Mobile Robot Platform,混合实时移动机器人平台 ...

  9. Mr.J-- jQuery学习笔记(十八)--自定义动画

    animate(params,[speed],[easing],[fn]) 概述 用于创建自定义动画的函数. 这个函数的关键在于指定动画形式及结果样式属性对象.这个对象中每个属性都表示一个可以变化的样 ...

最新文章

  1. phpstudy多站点配置好后index of/ 列表无法出现的解决
  2. SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架
  3. linux的虚拟文件系统VFS
  4. java的源代码文件扩展名_【单选题】Java 的源代码文件具有( )的扩展名 (5.0分) A. .c B. .class C...
  5. Oracle工具使用(export,import,sqlldr中文帮助及实例))
  6. 转载 敏捷教练,从A到Z
  7. HBase读性能优化策略
  8. Spark Streaming ReceiverTracker架构设计
  9. php redis hgetall 慢,redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
  10. 树和二叉树总结(三)—BST二叉排序树
  11. PMP-强化练习题一(180题答案及解析)
  12. 从概念到代码在6个小时内:交付我的第一个Windows Phone应用
  13. 纸壳CMS主题增强,支持主题中加入模板
  14. 计算机常用屏幕分辨率,pc端常用电脑屏幕 ((响应式PC端媒体查询)电脑屏幕分辨率尺寸大全)...
  15. 指数多项式的Galois群计算
  16. cnpm install 与 npm install
  17. 《瓦尔登湖》中的“访客”篇中一首小诗与刘禹锡的《陋室铭》
  18. Lifelong Person Re-Identification via Adaptive Knowledge Accumulation论文笔记
  19. 【音视频】获取桌面程序窗口列表以及桌面、窗口的缩略图(4-4)
  20. HTML5 水果忍者游戏

热门文章

  1. 实例!智能制造厂内物流解决方案
  2. 一、程序设计和C语言
  3. asm 10g 11g 升级降级测试
  4. BaseAnimation是基于开源的APP,致力于收集各种动画效果(最新版本1.3)
  5. 六问射频脉冲频谱测试
  6. java八大经典排序算法
  7. linux安装谷歌验证器
  8. 百度地图坐标、Google坐标、腾讯坐标相互转化
  9. 浏览器解析jsx_preact 源码学习系列之一:JSX解析与DOM渲染
  10. oracle 创建记录锁,oracle教程之创建自己的锁定