丝路教育

咨询热线:025-68590001

热门课程

丝路教育>培训头条>影视后期培训>

maya影视动画培训-群组动画实现思路探讨

  • 发布:丝路教育学院
  • 点击次数:154
  • 时间:2021-04-10

伴随着影视制作软硬件技术的不断发展,群组动画作为一个新兴的技术领域,这种技术可以模拟众多角色的运动,在降低拍摄成本的同时,真实的再现了壮观的场面。群组动画从技术的角度分为后期合成的群组动画和全三维角色的群组动画,早在70年代,好莱坞的导演们就开始试图表现这些大场面,那时的技术还不是很完善,对于群组动画主要使用的是抠像,合成,拷贝的方法,对于镜头和导演意图的表现都有很大的局限性。如《宾虚》等影片。

  在1992年,《蝙蝠侠回归》首先使用了三维的群组动画,影片《阿甘正传》中的反越战大规模示威也是如此。而如今,当我们看到《指环王》、《星战》、《I robot》、《亚历山大》、《最后的武士》等影片时,我们发现群组动画已经成为大场面表现的标志之一,而且使用也越来越灵活,越来越复杂,场面也越来越壮观,对于剧情的推动起到了更好的作用。

  后期群组动画和三维群组动画有着不同的表现效果,后期合成群组动画主要使用在中景,全景,由于其中的演员都是由真人扮演, 场面的真实性很高,特别是有时拍摄小全景时,还能清晰的看见演员的表演,场面真实感人.三维群组动画主要使用在表现千军万马奔腾厮杀的大全景和航拍镜头中,场面宏伟震撼,激动人心,在带给观众激烈的视觉感观刺激时将影片推向高潮,并给观众留下深刻难忘的印象。

  由于群组的素材主要来自现场实拍,对前期拍摄的要求就比较高,,摄像机必须架设在三角架上,将摄像机锁死,固定机位,同机位多次拍摄素材,后期制作时将演员抠出来,最终合成。我们以前多部影视剧中都有应用。如图1-2所示。

  maya影视动画培训-群组动画实现思路探讨

  三维角色的群组动画相对于后期群组动画有更大的***度和发挥空间,然而实现就要相对复杂的多,纵观三维群组动画的发展,主要可以分为两大类:

  1、智能类(基于节点控制,可选择行为的)或说是AI类 这一类的制作是基于节点控制、选择的,也就是说在某种情况下,选择某种行为。这种方式类似于人的基本活动,所以也就被现在很多的影片采用。它可以实现角色在复杂地面的行走,而不会产生滑步,而且可以使角色具备动力学的特性,可以开发战斗,寻找,混合等多种复杂行为。由于这种制作方式是通过节点激活行为的方式来实现的,也就为事件制作的深度和广度提供了可能。

  现在国际使用的这类商业制作软件主要有以下几种:Massive、Behavior和Aitool,但是这类制作有一定的难度,不但要有一定的编程技巧,还要能很好的规划角色的行为流程。

  2、非智能类(基于图像或动作序列的) 非智能类的群组动画,制作难度相对较低,如果体现千军万马的效果,每个角色在画面中所占的相对像素就会小很多,利用流行的三维软件的粒子系统,配合表达式的控制一样能够实现从简单到复杂的群组动画,其主要是以粒子序列的形势表现,主要有SpriteParticle(序列粒子),InstanceParticle(实物粒子)两大类。

  这类群组制作的优点就是难度较低,对于单体细节要求不高、行为可以很好的完成,如简单飞鸟,人物行走等。虽然其行为的是基于序列的,默认情况下决定了行为的单一性。但是我们可以通过简单的表达式来控制,使其富有变化,甚至按照我们的意愿行动。下面我们就SpriteParticle(序列粒子),InstanceParticle(实物粒子)两种粒子类型为例,分析他们的优缺点和复杂动作的实现。

  1)SpriteParticle(序列粒子)的利用硬件渲染,渲染速度非常快,只是前期的贴图序列的制作比较繁琐。如果是定机位或垂直于人物运动的方向推进,在场景中还要有近中远角度的变化。在对单体取景的角度就要根据近远的层次,分别去不同的角度序列。

  2)我们这里做个小的测试利用摄像机与地面和每个角色粒子的夹角的变化,自动调用相应角度的序列。应用于定机位和垂直于人物运动的方向的推拉镜头。

  (1)首先创建一个NURBS平面,用比刷稍微刷一下,利用平面发射例子;并将粒子goal在表面上。

  (2)选择粒子,把粒子类型转为sprite,并执行Particles>Sprite Wizard,为sprite粒子再入序列桢贴图。

  (2)把我们利用五个摄像机渲染的走步动作序列串成一个序列,这里走步是25桢一个循环,按照一定的顺序,这里我们是按照角度由大到小的顺序,即第一段循环0-24,第二段,25-49,第三段50-74….以此类推,五个摄像机总的序列是0—124。

  (3)然后就对粒子的运动和序列桢调用情况进行控制。这里我们主要测试序列桢的分别调用,运动没做过多的控制,只是让他们随机的左右移动。自定义一批控制属性,把sprite的一些需要的隐藏属性调出来。

  4)我们计算的原理是这样的,创建两个Locator,分别点约束与目标摄像机的摄像机位置和目标位置。利用两个Locator的连线计算摄像机与水平方向的夹角,然后再计算摄像机与每个粒子的连线与水平方向的夹角。两个夹角的差值就是每个粒子于画面中心的夹角,把这个夹角的范围分为五份分别调入五个不同角度序列。

  (5)表达式如下:

  Create expression(创建表达式)//赋予离子生命值particleShape1.lifespanPP=20;//粒子生成后在nurbs表面随机分布particleShape1.goalV=particleShape1.parentV;particleShape1.goalU=particleShape1.parentU;//赋予粒子大小随机值particleShape1.spriteScaleYPP=rand(3.1,3.5);//将粒子随即分为两部分,一部分向左走,一部分向右走particleShape1.Rand=rand(-1,1);//一部分向右走,横向缩放值等与纵向缩放值if(particleShape1.Rand<0)particleShape1.spriteScaleXPP=particleShape1.spriteScaleYPP;//一部分向左走,当然走的姿势相应要镜像过来。elseparticleShape1.spriteScaleXPP=particleShape1.spriteScaleYPP*-1;//面片整体偏移到地面之上,偏移量就是Y轴放缩的1/2。particleShape1.goalOffset=<<0,particleShape1.spriteScaleYPP/2,0>>;//随即载入步伐循环的任意一个姿势particleShape1.orig=rand(24);//获取摄像机那边的Locator的世界坐标值Runtime expression:(运行表达式)//粒子如果移动到nurbs平面的边缘,就消失掉。if(particleShape1.goalU>0.98||particleShape1.goalU<0.02||particleShape1.goalV>0.98||particleShape1.goalV<0.02)particleShape1.lifespanPP=0;//粒子在表面的移动速度,可以修改0.002这个数值来调整移动的快慢particleShape1.goalU+=0.002*particleShape1.Rand;//贴图序列向前走particleShape1.orig+=1;//每到25的倍数桢就循环到0桢particleShape1.orig%=25;//以下部分为创建表达式与运行表达式都有的部分vector $CL=<>;//获取摄像机目标点的Locator的世界坐标值vector $AL=<>;//获取每个粒子的世界坐标值vector $Pw=particleShape1.worldPosition;//算出摄像机与目标点连线与Z轴的夹角float $anglec=angle(<<0,0,1>>,($CL-$AL));//算出摄像机与每个粒子连线与Z轴的夹角float $anglep=angle(<<0,0,1>>,($CL-$Pw));//获得这个夹角的差值,并将这个范围在-15—15度(测试得到)之间分为五份(0-4)particleShape1.cyclenum=4*linstep(-15,15,rad_to_deg($anglec-$anglep));//获得这个范围Id的整数部分。int $num=trunc(particleShape1.cyclenum);//根据这五部分的0-4,分别载入整个序列分为的五部分switch($num){case 0://载入序列的第一部分particleShape1.spriteNumPP=particleShape1.orig;break;case 1://载入序列的第二部分,与当前第一部分序列向后偏移25桢particleShape1.spriteNumPP=particleShape1.orig+25;break;case 2://载入序列的第二部分,与当前第一部分序列向后偏移50桢particleShape1.spriteNumPP=particleShape1.orig+50;break;case 3://载入序列的第二部分,与当前第一部分序列向后偏移75桢particleShape1.spriteNumPP=particleShape1.orig+75;break;case 4://载入序列的第二部分,与当前第一部分序列向后偏移100桢particleShape1.spriteNumPP=particleShape1.orig+100;break;}

  (6)粒子所带数字为每套序列的ID号,即cyclenum得值。

  (7)最终实现效果

  (8)这是对此方法的初次尝试,有什么不足的地方,或者更加完善的思路与方法,还望各位多多指教。下一部分我们再来测试一下InstanceParticle(实物粒子)的动作控制,Instance肯定不会有什么角度透视的问题,控制***度会更大,我们将测试几个不同动作之间的切换,以及配合当前动作,如何影响粒子在表面的移动速度。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:武汉-动漫培训 maya软件培训,动画影视培训中心   下一篇:游戏动漫培训:CG动画行业前途如何?
广州哪家视频剪辑培训机

广州哪家视频剪辑培训机

深圳影视剪辑名称(影视摄

深圳影视剪辑名称(影视摄

广州短视频剪辑培训哪里

广州短视频剪辑培训哪里

广州影视制片人培训(剪辑

广州影视制片人培训(剪辑

本网站版权归丝路视觉科技股份有限公司所有,盗用必究

全国所有校区课程0元试听

网站导航