【文档说明】游戏中计算机动画技术课件.ppt,共(72)页,4.409 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-77620.html
以下为本文档部分文字说明:
游戏中的计算机动画技术浙江大学计算机学院教学内容和目标动画的基本概念和方法动画场景中的碰撞检测运动的指定方法关键帧动画的编程基于动作捕捉技术的动画编程粒子系统与动画计算机动画简介(1/3)动画的定义:◦就是一组连续的图像序列。当按一定的速率
显示的时候,能传递一种运动的感觉动画的技术要求:◦每一幅图像或者每一动画帧,都必须有机地、无缝地和其他的图像融合在一起,这样才能随着时间的变化,产生平滑的、连续的运动计算机动画简介(2/3)传统的动画制作方法◦将人物运动的所有帧序列手工地绘制出来计算机在动
画制作中的作用◦自动产生某些中间帧序列◦模仿手工动画,将多层绘制的场景由计算机来进行合成制作方式的改变◦从“绘制出每一帧”到“使用计算机工具来制定图像序列如何变化”计算机动画简介(3/3)动画的分类:◦二维动画二
维动画集中于图像的处理和操作,如sprite-basedanimation,blendingormorphingbetweenimages,embeddinggraphicalobjectsinvideofootages,orcreatingabstrac
tpatternsfrommathematicalequations◦三维动画三维场景和人物的建模以及他们之间的交互建模运动的指定(√)绘制游戏中的两维动画(1)展示形式◦直接播放方式游戏的片头或者篇尾,例如AVI或者MPEG◦连续贴图方式通过连续贴图成像技术来产生动
画效果编程关键◦定时器创建一个定时器利用回调函数来显示动画删除定时器游戏中的两维动画(2)镂空动画(spriteanimation)◦一幅背景图◦一组蒙版图◦人物的连续显示方式DOUBLE-BUFFER不要在窗口中直接贴图,避免闪烁建立一个
内存DC,然后把所有的贴图动作都在这个DC上进行,最后把结果显示到操作窗口中。游戏中的两维动画(3)对动画序列中的每一帧◦Load背景图◦确定sprite绘画的位置◦将某一蒙版图与背景图作AND运算◦将对应的人物图与背
景图作OR运算◦更新sprite绘画的位置演示◦Spriteanimationdemo1游戏中的两维动画(4)半透明的动画效果◦将要贴上人物的背景图部分取出,放入buffer◦在buffer中的背景图上,AND蒙版图,OR人物图◦在buffer中的位图乘上透明度t◦再次取出相应的背景
图,作半透明计算,并生成半透明图片◦直接将半透明图贴在背景图中游戏中的两维动画(5)透明效果演示◦Spriteanimationdemo2游戏中的两维动画(6)观看演示◦Spriteanimationdemo3思考
下列问题◦动画中的效果有什么不一样?◦猜猜使用的动画技术?游戏中的两维动画(7)“终点返回起点”游戏中的三维动画概述(1)三种主要的运动方式◦场景内容不变,视点在移动漫游等◦场景内容在动态改变,视点不变人物表演
动画等◦混合方式场景内容和视点都在运动游戏中的三维动画概述(2)最简单的情形◦使用标准的绘制程序,仅移动物体或视点.技术核心◦各个运动物体的平移和旋转量确定。关键问题◦如何指定和控制物体在场景中的运动.◦相机或者物体移动,或者
两者同时移动.游戏中的三维动画概述(3)相机的任意外部参数都可以形成动画。这类动画一般在第一人称游戏中最常用。用户可以控制相机位置(三个自由度)和相机的朝向(两个自由度).◦在两个相邻的关键点上需要插值相机参数,在此过程中最重要的是保持相机的up向量。此外,用户也可以控制视点的运动
,而视线则始终跟踪一个目标点。◦该目标点可以是静止的,也可以移动。游戏中的三维动画概述(4)所涉及的关键技术◦漫游碰撞检测(collisiondetection)√◦人物动画骨架驱动的动画√运动的生成√面部表情◦粒子系统√基于BSP树的CD(1)碰撞检测(CD----Collis
ionDetection)用于确定两个物体是否相交以及在何处相交.单纯确定是否相交又叫做相交测试.◦检测两个运动物体最初接触的时刻.◦检测两个运动物体在何处检测.物体相交的类型:◦线与物体求交,◦平面与物体求交,◦物体与物体求交.基于BSP树的CD(2)游戏中需要碰撞检测的场合有:◦
在大型地貌系统中需要正确驱动交通工具;◦监测轨道中行驶的汽车并检测两辆车是否碰撞;◦确定导弹是否击中目标,◦弹性物体在物体之间的弹跳◦两个人物交战时的状态查询◦决定是否某个物体可以通过一个通道基于BSP树的CD(3)碰撞检测
采取两步法◦首先剔除明显不相交的物体包围体方法以及其他空间剖分策略◦检测可能相交的物体之间的情况并在给的精度下求得相交点.基于BSP树的CD(4)BSP树是游戏中组织场景的最常见方式之一;BSP的叶结点可分为◦虚节点◦实节点PABDCABCD
EF基于BSP树的CD(5)检测一个点的运动路径是否与BSP树中的实节点相交◦检测与剖分平面的交点如何检测一个动画人物与场景的交点◦Boundingbox/sphere◦“膨胀”BSP树PADCADP基于BSP树的CD(6)算法步骤◦HitCheckBSP(N,v0,v1)◦If
(notisSolidCell(N))returnFALSE◦Elseif(isSolidCell(N))Pimpact=v0ReturnTRUE◦End◦Hit=FALSE;◦If(clipLineInside(Nshiftout,v0,v1,&w0,&w1))Hit=HitC
heckBSP(N.negtivechild,w0,w1);If(hit)v1=Pimpact;◦End◦If(clipLineInside(Nshiftin,v0,v1,&w0,&w1))Hit|=HitCheckBSP(N.p
ositivechild,w0,w1);If(hit)v1=Pimpact;◦End◦ReturnHit;V0V1w0W1W0W1n基于BSP树的CD(7)为什么是两边都要检查?ABCDE基于BSP树的CD(
8)其他的包围盒的方法◦AABBs(Axis-alignedboundingboxes,与坐标轴平行的包围长方体),一对AABB如果有交当且仅当它们在某些个轴上的投影有相交的部分。AABB方法简单,当物体旋转时,或
者重新计算包围体,或者应用一个新的包围体。◦OBBs(Orientedboundingboxes,旋转后的最贴近物体的长方体)球轴平行AABB有向OBB离散多边形基于BSP树的CD(9)层次包围盒◦整个物体可以表示为一个OBB层次树。树的根即整个物体的OBB,叶节点包含一个或多
个多边形.◦如果两个物体的根节点的OBB相交,那么碰撞测试将从上往下遍历下去,直到找到相交的叶节点。因此,OBB树越贴近物体,处理碰撞查询所需要的遍历次数越少。人物动画概述(1)从绘制流水线的角度看◦在某个瞬间(某一帧
),只要知道此时的物体和场景的空间位置的信息,就可以绘制出画面关键:运动指定◦一帧一帧指定:每秒25到30帧,。。。人物动画的难点:◦动画人物的身体的各部分的和谐的、自然的运动。人物动画概述(2)人的
视觉系统(人类动画师)并不明显区分建模信息、运动信息和视觉效果信息基于骨架的人物动画◦抽象出骨架:建模和运动分开,在绘制时进行骨架和模型的绑定。方便运动的指定模型和运动都可以重用人物动画概述(3)什么是关节?◦它由一系列刚体、它们之间的连接关系组成,这
使得物体的不同部分可以相关联地运动。整个物体的运动受全局的连接关系限制◦整个结构由一条联结关系组成,某个关节的运动造成它的邻接关节运动◦并且限制了邻接关节的运动方式,如人类的骨架关节无法做完全旋转。动作(motion)获取的三种主要方式(1/
3)关键帧:指定每一关键时刻的物体的运动位置和方向◦优点:简单,易理解◦缺点:它要求动画师经验丰富,并且耗时难以模仿动作的某些细微特征或者特定的动作动作获取的三种主要方式(2/3)动态(过程)模拟(物理建模)◦根据物理规律和指定的目标,使用算法或者过程来模拟产生运
动或者动作序列优点:◦很容易根据运动的要求配置相应的参数,初学者也能产生高质量的动画序列缺点:◦对简单的运动比较有效◦没有系统性的方法来描述一个复杂的运动,或者一个具有细微特性的运动动作获取的三种主要方式(3/3)基于动作捕捉设备◦将表演者的现场表演
的运动数据实时纪录下来,并映射到计算机的动画人物中优点:◦实时,直观,可视运动数据可以被实时地、直观地可视化。演员、导演和动画师可以在一起工作,来获取所期望的动作,便于交流,◦高质量动作数据可以产生特定人物的特定运动数据,这是手工指定所无法比拟的产
生的运动数据比较真实、自然,并可表现出表演者的人物个性。很多细微的运动元素已经自然地体现在捕捉下来的数据中,不需要通过领域知识来添加。我们的mocap设备(1/2)浙江大学计算机学院动作捕捉实验室◦曹光彪东楼313-314生产厂
家:◦Motionanalysis公司如果只用于游戏和动画,Vicon更佳我们的mocap设备(2/2)性能◦10Hawk摄像头◦每秒200帧◦精度小于0.5mm动作数据到3D人物模型的映射照片的版权归相关的公司或者团体所有Mocap在游戏开发中的应用示例
关键帧技术关键帧系统的应用背景◦在电影和动画界,这是一个最常用的技术◦为了节省动画片制作中的巨大工作量,动画公司采用层次的系统结构,即高级动画师首先手绘一段关键帧构成的动画序列。◦然后这些序列由动画师(inbetweener)完成帧间动画的绘制。最后,由动画师(inker)将这些序列着
色。关键帧技术(续)扩充到三维动画◦三维空间中的物体也可以由关键帧定义◦并由计算机完成中间帧的生成。相比手绘动画,在计算机动画中需要更多的关键帧以获得完美的效果。关键帧技术(续)以一个弹性球为例.下图展示了三个关键帧。123指定关键帧指定骨架关键帧
有多种方法,比如:◦最简单的情形:通过空间中的一系列点确定—关键帧点定义一个物体所经过的点序列,并将这些点列用三次曲线拟合生成路径。指定关键帧信息比较好的方法◦允许动画师指定更多的关键帧之间的运动信息例如直接定义一条运动曲线.◦此外,可以定义运动路径上的速度变换函
数.一般地,为了正确控制运动,必须显式地定义◦位置变换与时间的函数关系◦指定路径上的动态行为.指定关键帧信息参数◦位置◦关节角◦形状-变形物体◦材质◦相机运动◦光照如果我们仅考虑位置,那么我们可以应用一个与时间相关的4x4位置矩阵于场景物体。关键帧插值◦为了使
物体运动真实,矩阵的二阶导数必须连续◦矩阵中的位置部分的三个分量可以独立插值,但旋转部分不行。1000)()()()()()()()()()()()()(333231232221131211tttatat
atttatatatttatatatMzyx关键帧控制器VoidKeyFrameController::Update(floattime){InterpolateTranslation(time,localTranslate);
InterpolateRotation(time,localRotate)}每个插值进程以某一时刻为准,找到与之最近的两个关键帧时刻点。这两个关键帧用下面描述的方法进行插值。旋转部分插值(1)基本思想:◦用四元数表示旋转◦
将旋转矩阵变换到四元数空间,然后在四元数空间进行插值◦插值后的四元数变回到三维空间并应用到物体上。四元数◦可视作一个类似矩阵概念的算子,它能将一个向量变到另外一个,但是四元数的选择是唯一的.旋转部分插值
(2)4-元数是什么?◦将旋转定义为绕轴n旋转角度θ的一对关系:R(θ,n).绕三个轴向变成绕一个轴向为什么使用4-元数来插值?◦基于欧拉角的旋转具有轴相关性旋转部分插值(3)VRRrr||nnθr⊥VθR⊥r⊥))((sin))(cos1()(cos))((sin))()((cos)(
)(sin)(cos)()(||||rnnrnrrnnrnrnrnRrRrRrVrRrrnrnVnrnrrnrnr旋转部分插值(4)考察四元数的旋转功能。r可表示为四元数p
=(0,r),因此该操作可视为:因此,将向量r旋转一个角度(θ,n)相当于利用角度位移的概念,即将它提升到四元数空间,然后表示为单位四元数(cos(θ/2),sin(θ/2)n)))(2sin)()2cos1(2cos,0(
)(1||)sin,(cos1rnrnnrqpqpRnwherenqp旋转部分插值(5)对四元数(0,r)执行操作q()q-1,可将方向参数化为以下四项:cos(θ/2),sin(θ/2)nx,sin(
θ/2)ny,sin(θ/2)nz利用四元数代数操作每个分量旋转部分插值(6)假设动画师设置了一系列旋转的关键帧序列,那么◦每一帧可由单个旋转矩阵决定。这些矩阵序列将被转换到一系列四元数。◦在关键帧四元数之间进行插值,产生一系列连续的四元数,再将它们转换到
旋转矩阵。这些矩阵在应用到物体上。◦一般的,四元数的使用对动画师来说是透明的。旋转部分插值(7):四元数到旋转矩阵将一个向量P旋转一个四元数q:q(0,P)q-1q又可表示为:(cos(/2),s
in(/2)n)=(s,x,y,z)它等价于下面的旋转矩阵:10000)(212222022)(212202222)(21222222yxyzsxxzsyyzsxzxszxyxzsyszxyzyM旋转部分插值(
8):旋转矩阵到四元数若旋转矩阵则1000000222120121110020100MMMMMMMMMMsMMzsMMysMMxMMMswherezyxsq444121),,,(0110200212
21221100四元数的球面线性插值(1)球面线性插值的公式是:◦考虑两个二维向量A和B,它们之间的夹角是Ω,其中向量P与A成θ角度◦P是A和B的球面线性插值的结果:P=αA+βBAΘPΩB球面线性插值(2)一般地,α,β由下式给出:|P|=1,A·B=cosΩ,
A·P=cosθAΘPΩBsinsinsin)sin(BAP球面线性插值(3)两个单位四元数q1和q2之间的夹角为Ω:q1·q2=cosΩ它们之间的球面线性插值可将前面的公式推广到四维:(u[0,1])sin
sinsinu)-sin(1qu)q2,slerp(q1,21uq关键帧骨架的人物动画实例(2)Create14Joints.JointNewJoint(j0,null,0,0,0)JointNewJoint(j1,j0,0,22,0)JointNewJoint(j2
,j0,5.3,16.7,0)JointNewJoint(j3,j2,12.5,15.8,0)JointNewJoint(j4,j3,22.1,15,0)JointNewJoint(j5,j0,-5,17,0)JointNewJoint(j6,j5,-12,16,0)JointNewJoint
(j7,j6,-21.8,15,0)JointNewJoint(j8,j0,3,-3,0)JointNewJoint(j9,j8,4.5,-19,0)JointNewJoint(j10,j9,7.1,-38.2,0)JointNewJoint(j11,j0,-3
,-3,0)JointNewJoint(j12,j11,-5,-18.80)JointNewJoint(j13,j13,-8.3,-38.1,0)SceneSaveScene(sprocket2\sprocket)FinetuneJoi
ntpositions.关键帧骨架的人物动画实例(3)InitVertex-JointBlendingWeights.ObjectInitWeights()CreatethefirstKeyFrame.KeyFrameNewKeyFrame(0,0)PoseKeyFrame,an
dFixVertex-JointBlendingWeightsPass2关键帧骨架的人物动画实例(3)CreatethesecondKeyFrame.KeyFrameCopyKeyFrame(0,500)Create
remainingKeyFrames.KeyFrameCopyKeyFrame(0,1000)KeyFrameNewKeyFrame(0,250)KeyFrameNewKeyFrame(0,750)人物动画中的运动生成(1)三个主要的运动动方式◦前向动力学◦
逆向动力学◦运动捕获人物动画中的运动生成(2)Jointspace:各个关节点和关节的DOFEnd-effectorspace:endeffector的m-维空间Worldspace:人物场景空间◦骨架/关节点的位置是各个关节夹角(用户指定,前向动力学)的一个函数◦用户也可以
直接指定骨架的姿势和关节点的位置(逆向动力学)人物动画中的运动生成(3)动画编程人员眼中的前向动力学和逆向动力学问题描述JointspaceθEndeffectorspaceXX=f(θ)前向动力学θ=f-1(X)逆向动力学人物动画中的运动生成(4)两个骨架Link的例子
:))cos(sin)cos(sin(tan)2(cos2212222122112122212212xLLyLyLLxLLLLLyxθ1L1L2θ2X(x,y)人物动画中的运动生成(5)IK的解决方案:◦解析解◦差分算法◦优化◦非线性规划
◦。。。。。。。IK的演示◦IKdemo人物动画中的运动生成(6)动作捕捉数据驱动◦前向或者逆向动力学?动作捕捉数据的格式◦TRC◦HTR◦BVH◦BVA◦C3D◦….人物动画中的运动生成(7)文件格式实例◦骨架定
义◦各帧的数据BVH文件解剖BVHdemo粒子系统(1)粒子动画◦逐个地运动一大堆粒子,模拟自然界的“点云”运动的整体效果。比如焰火.粒子◦是一些小的物质,每个都有自己的运动脚本粒子系统(2)工
作原理◦基本思路是某些自然现象可以通过描述一大群单个粒子的运动和绘制来加以模拟.工作方式◦单个粒子一般被视做几何上微小或者为零的基本单元,小到多个粒子可能投影到屏幕的一个象素—但是每个粒子拥有自己的属性,如颜色。粒子系统(3)粒子的建模◦一般可以设计一个脚本赋予每个粒子一定的随机
性,产生彼此之间的差异性。例如,每个粒子的位置在随时演化之中。不同的自然现象通过群体粒子属性脚本和单个粒子差异脚本描述。粒子系统(4)控制每个粒子差异性的参数包括下列特征,它们与粒子的位置和粒子本身的生命周期有关:◦运动轨迹,◦形状,◦颜色.粒子的
动力学行为和外观是时间函数,可以集成到同一个脚本描述粒子系统(5)Reeves(1983)描述了生成单帧粒子动画的五个步骤:◦生成新的粒子并放置到当前系统中;◦赋予每个新的粒子属性.◦删除超越生命周期的粒子◦活性粒子根据各自的脚
本运动◦绘制活性粒子粒子系统(6)单个粒子的脚本描述包含下面一系列属性:◦初始位置与速度◦发射的方向◦尺寸(如半径)和形状◦弹性系数和碰撞系数◦透明度◦摩擦系数、重力和风力◦生命周期◦纹理一般地,一个粒子总是被作为一个带纹理映射的长方形在绘制在屏幕上并与背景做透明度融合粒子系统(7)某时刻
t的粒子数量由下式决定:N(t)=M(t)+rand(t)V(t)其中,M(t)是数学均值期望,V为方差.方程用于控制总体的点云变化(收缩和增长)尺寸.粒子系统(8)对于一个粒子系统:◦初始化所有粒子◦启动粒子系统◦处理所有粒子◦工作
完成后清除所有粒子演示◦Particledemo