莱芜网站建设价格低,有做挂名法人和股东的网站吗,登录到wordpress后台,wordpress win8主题动画#xff1a;把物体变成活的#xff0c;让它动起来 更关注的是美学。早期的动画是画出来的#xff0c;并不关心对不对#xff0c;符不符合物理#xff0c;只要看起来对 图形学里对动画理解为对于建模或几何的拓展。动画无非就是在不同的时间或不同的帧有不同的几何形状… 动画把物体变成活的让它动起来 更关注的是美学。早期的动画是画出来的并不关心对不对符不符合物理只要看起来对 图形学里对动画理解为对于建模或几何的拓展。动画无非就是在不同的时间或不同的帧有不同的几何形状也就是将3D的模型延伸到时间的维度
将很多的图按顺序和一定的速度播放因为人眼有视觉暂留的效应所以不需要在整个时间范围内进行非常集中的采样
Film电影每一秒放24张图24fps Video平常所说的视频30fps 游戏需要体验感好连贯性高60fps甚至会到144HZ也就是144张图每秒 Virtual reality虚拟现实90fps为了让人们戴上头戴式设备不晕会有很多要求就包括对帧率的要求非常高要非常流畅两个眼睛的帧率要达到90fps
Historical Points in Animation 远古人类所画的壁画 随着科学的进步人们人为的制造一些真正可以看到的动画 最早期有类似圆盘的物体圆盘中心固定在某个地方可以旋转 到一定阶段真正发明了电影技术 第一部手绘的和电影长度相当Feature-Length的动画。每一秒放24帧那就要放24张图放在一起播放耗时很长 计算机本身也可以生成动画 显示人脸的三维网格模型 侏罗纪公园真正将用电脑生成的恐龙放到了电影 第一个整个电影完全用计算机生成CGcomputer generate——皮克斯的玩具总动员 是光栅化的方式生成的阴影 10年前的计算机动画 冰雪奇缘2充满了各种细节
Keyframe Animation 上面一行是一个人在不同的时间有3个不同的动作。这3个动作是重要的位置对应的帧就叫关键帧 下面一行相当于在2个动作之间补出过渡的动作 给定一系列不同的帧中间要插值出来这就好像每一帧中有若干重要的点这些重要的点在其他的帧长什么样然后将它们一一对应找出来后就可以将这些点在不同的帧之间通过插值的方法算出来
最简单的是线性插值但下图就已经不是线性的了对于这种过渡如何看着自然、真实是有一定讲究的 线性插值给你任意的连续的点将其连起来连成线段
但有时希望更好的连续性比如C1那就要用到曲线和样条也就是说动画和之前所说的几何是非常有关联的
Physical Simulation 应用在物体有一个质量质点应用在物体上的力叫F然后它就会获得一个加速度a有加速度就可以算速度有速度就可以算位置。也就是说只要知道物体上的力和初始条件初始位置、初速度就可以动态的更新下一时刻的位置 往某一个方向扔一个小球小球会形成一个抛物线因为它始终受到重力的作用自然就会有一个加速度也就会有速度从而影响位置 对于衣服来说是用各种各样的网格形成的任何一个顶点上有一定的质量肯定会受到重力的影响因为它又和其他的顶点相连肯定还会受到来自其他点的作用力
虽然会复杂但只要正确的把它受力的模型建立出来就可以通过解一系列的方程将它算出来 例子布料模拟 如果模拟得好是不会出现反物理的现象的比如衣服进到身体里等穿模现象这就涉及到一系列的碰撞检测等问题 例子流体Fluids 将下面的水分成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和ba和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 描述一些很小很小移动的东西 建模一堆很微小的东西定义每一个粒子会受到的力有重力、风力、粒子和粒子之间的力 很容易模仿一些魔法效果、雾、灰尘等等 粒子越多模拟得越精细但是越慢越少跑起来越快但效果差一些
挑战 粒子系统可以模拟流体这样可能需要很多粒子 粒子和粒子之间的作用不只有碰撞还可能有引力这样就要找粒子周围的最近的多少个粒子这样就需要一些加速结构然后粒子的位置还会移动就还要进行更新 算法
动态生成一些新的粒子计算每个粒子的作用力内部的、外部的根据作用力更新粒子的位置和速度如果粒子有存活时间移除消亡的粒子渲染粒子 难点定义相互作用力解作用力 吸引力和排斥力 重力,电磁力, … 弹力,推力, … 阻尼力 摩擦力, 空气阻力, 粘滞力, … 碰撞粒子和粒子之间、和墙、容器等不能穿模 万有引力再小的物体都会满足这个规律对于灰尘和粒子来说肯定会有万有引力 对于星系来说也和上面是同样的道理。对于粒子如何被画出来也是先模拟再渲染这2个过程是分开的 基于粒子的流体模拟 模拟的是粒子渲染的是像玻璃、是否带白沫等等 粒子系统不一定只是描述最简单的点这个粒子也就是在一个很大范围内有很多重复的东西一个群体中的个体如模拟一个鸟群个体的鸟应该满足哪些规则可以定义出它们之间的相互关系 个体的运动属性 吸引任何一只鸟都不愿意落单都会找到它周围的鸟并试图融入进去 排斥任何一只鸟都不希望和其他鸟离得太近 对齐如果大家都往某一个方向飞鸟因为不会离群也会沿着它能看到的大家飞的主要方向
Forward Kinematics/正运动学 在图形学中运动学分为正向的和反向的即正运动学和逆运动学 正运动学 描述一个和人骨骼连接拓扑结构类似的骨骼系统可以定义不同的关节 3种不同的关节
Pin (1D rotation) 钉子钉上的关节钉上后只能在钉住的平面内往一个方向旋转Ball (2D rotation)有一个东西可以包住一个球这个球可以任意的在任意方向旋转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 (恐怖谷效应)也就是害怕被人工智能统治世界如果生成的东西过于真实并且有人利用它做一些坏事