当前位置:首页 >教程首页 > 游戏程序 > Unity3D游戏开发工程师班 >怎样使用UE3引擎制作动画

怎样使用UE3引擎制作动画

发布时间:2018-11-17 19:57:24

 

 

导言:

Unreal引擎是全球领先的游戏开发商和引擎研发商Epic Games的一款核心产品。作为一款成熟的商业引擎,Unreal引擎以其出色表现和强大的功能征服着游戏开发业,成为全球一流游戏公司购买引擎的首选产品。

 

在游戏中,当看见一个character穿过一片场景时,实际上看到的是一个多边形网格物体在character奔跑的同时随之改顶点变化状。这样的形变能够使网格物体像人类或是其它任何类型的character一样移动。

 

这也同样适用于带有类似仪表盘、方向盘、悬挂等可运动部件的载具。《Unreal》的动画系统负责处理这种形变,并且将游戏或工程中其他的静态网格物体转变成逼、可动的元素。

 

Unreal动画系统

动画系统所使用的形变可能由两种主要来源:关键帧动画或通过混合关键帧动画所形成的新的动画。关键帧动画有三种不同类型,其中大多数对于接触过3D动画的人来说都十分熟悉。

 

它们是带骨骼的关键帧动画、多网格物体渐变以及在FaceFX系统中创建的唇同步动画。 先前的两个选择通常在像3ds Max或Maya这样的外部应用软件中制作。

 

下图就是character因骨骼带动,使网格物体发生形变,看起来就像在动。(图01)

 

图01

 

所有应用于一个character上的动画都是累加实现的,即影响不同骨骼的多个动画可以同步播放。

 

例如,可以让一个character的动画用腿向前跑步的同时,上臂还能装填武器弹药。同时播放这些动画,让character可以同步奔跑和填装弹药。

 

动画混合也同样支持,可以使一个动画平滑的过渡到另一个动画,或是组合动画来实现新的动画。这种混合能够在一系列gameplay要素(如速度和方向)的基础上来实现。我们将在稍后的动画混合单元讨论关于动画混合的问题。

 

建立一个基本应用动画的带骨骼的网格物体

1、打开DM-CH_09_CargoDoor_Begin地图。此地图由两个房间组成,并且之间有一个开口。 将相机放置于位置更高的房间中,使它面向开口。(图02)

 

图02

 

2、在Generic browser中Chapter_09_Animation包从选择CargoBayDoor(货舱门)带骨骼的网格物体。然后,在房间的地面上点击右键并且选择Add Actor→Add SkeletalMesh:SkeletalMesh Chapter_09_Animation.Meshes.CargoBayDoor。

 

3、将这个新的SkeletalMeshActor(带骨骼的网格物体Actor)放置恰好合适房间之间的开口。不需要旋转,将Grid Snap设置为8会使操作更简单些。(图03)

 

图03

 

4、按下F4来打开带骨骼的网格物体Actor(CargoBayDoor)的属性栏并且如下设置:

 

●Collision(碰撞)
●CollisionType(碰撞类型):COLLIDE_BlockAll
●SkeletalMeshActor(带骨骼的网格物体Actor)
●SkeletalMeshComponent(带骨骼的网格物体组件)
●bHasPhysicsAssetInstance:True
●PhysicsAsset(物理资源):在Browser中选择CargoBayDoor_Physics物理资源并且按下Use Current Selection

 

5、在地面右击,选择Add Actor→Add Trigger,在门的一边放置一个触发器(Trigger)。打开触发器的属性栏,展开Advanced部分,然后如下设置:(图04)

 

●bHidden:False

 

图04

 #p#e#

 

6、在视图中选中触发器,打开Kismet。点击右键,选择 New Event Using Trigger_0 > Used。请为Used事件设置如下属性:

 

●bAimToInteract:False
●InteractDistance(交互距离):192.0
●MaxTriggerCount(最大触发次数):0

 

7、在视图中选中货舱门带骨骼的网格物体Actor,回到Kismet中。通过右击并选择New Matinee来创建一个新的Matinee序列。双击Matinee对象来打开Matinee编辑器。(图05)

 

图05

 

8、右点Group列表并且选择Add New Group。将新的组命名为BayDoor(舱门)。在组的属性栏中,通过点击Add New Item(添加新项)按键向GroupAnimSets(Group动画集)数组添加一个元素。

 

在Generic browser中选择AnimSet_cargo_bay_door动画集(AnimSet),然后按下元素[0]的Use Current Selection(使用当前选择)按键。

 

9、右点BayDoor组,选择Add New Anim Control Track。将时间滑块置为0.0,按下Enter键来放置一个新的关键帧。从出现的下拉列表中选择Open动画。(图06)

 

图06

 

10、拉动Matinee序列末尾的红色的序列标记,使它和Open动画的结尾一致,这样序列就会在动画结束的时候结束。(图07)

 

图07

 

11、测试关卡。动画应当在触发器第一次被触发的的时候开始播放。

 

如果想自己扩展这个例子,你可以在Kismet中试着建立一个网络,将会在触发器每次交替的正向和反向播放动画用来模拟门的打开和关闭。也同样可以使它直到当前方向的播放结束前无法改变动画方向。

 

Skeletal Animation(骨骼动画)

骨骼动画是改变hierarchy of digital bones(带有层次结构的数字骨骼)(在character中构成一套骨骼系统)顶点位置的过程。顶点通过一个加权影响系统(weighted influence system)联系到骨骼上,可以使特定的骨骼受到各个顶点一定百分比的控制。

 

这个加权影响系统可以在关节上加上平滑的弯曲,而不会在方向上有生硬的变化。这种网格物体和骨骼的连接的结果在《Unreal》中就是指带骨骼的网格物体。(图08)

 

图08

 

骨骼的位置和旋转可以在如3Ds Max或Maya这样的外部3D应用软件中被应用动画。动画不会在UnrealEd中播放。当要对一个character或对象的骨骼应用动画时,美术人员通常使用一个用户定制的控制系统来驱动这些骨骼。

 

这个用来驱动character和对象骨骼的控制系统通常被称作控制骨架绑定。对一块块的骨架绑定应用动画,就像控制一个数字木偶一样,骨骼也同样会运动,这样会连带驱动网格物体的顶点。从某种意义上说可以比手动移动网格物体顶点更快地创建character跑步、跳跃、战斗等动画。

 

完成之后,这个带骨骼的网格物体(由实际网格物体本身加上控制它的骨骼所组成)将会导入《Unreal》。然而,这个带骨骼的网格物体是同动画分开导入的。动画将只会由一个骨骼到另一个上的位移和旋转的变化组成。

 

任何用来驱动3D软件包中的骨架的骨架绑定或控制对象都将被忽略。将带骨骼的网格物体从动画中分离出来的好处是多个不同的对象(如各类character)能够用一套动画来驱动,而不用为同样类型的每个独立的对象创建不同的动画。

 

带骨骼的网格物体

《Unreal》中的带骨骼的网格物体的例子可以是character、载具以及武器。正如前面所述,带骨骼的网格物体是通过将网格物体与一套层次结构的骨骼相联接而来的。这种连接方法被称作skinning(蒙皮),并且通常在外部的3D软件包中处理的。

 

一个带骨骼的网格物体的每个顶点都受到它周围不同骨骼的一定比例的影响。例如,一个正好位于character前臂中点的顶点可能会受到来自前臂骨骼100%的影响,因为无论前臂骨骼朝哪动,都会带动前臂。

 

然而,位于character手肘位置的顶点将会受到一部分来自前臂骨骼的影响,以及一部分来自上臂骨骼的影响。这种分配给单独的顶点的不同的权重,能使从一个骨骼到另一个骨骼的顶点变化平滑过渡。(图09)

 

图09

 

Chunks(小块网格)与Sections(大段网格)

为了在Unreal中使用skinning(蒙皮)技术并且也为了控制网格物体如何渲染,所有的带骨骼的网格物体都被分成了单独的段。这些段总共有两种不同的类型:小块网格(chunks)和大段网格(sections)。

 

一个大段网格是由所有的包含同样材质的网格物体的多边形组成的。正如您所知,在《Unreal》中可以在网格物体上应用多个材质。一个包含三种单独材质的网格物体将会由三个不同的大段网格组成。

大段网格将会根据对网格物体大段网格有影响的骨骼的数量进一步分成更多小的段。这些段就是所谓的小块网格。每个小块网格至多可以包含75根骨骼。应当注意的是,只有那些有顶点权重影响的骨骼才会被计算在内。任何对网格物体的形变没有影响的骨骼都将被忽略并且不会用于创建小块网格。

 

小块网格和大段网格十分重要,这是因为,带骨骼的网格物体包含越多小块网格和大段网格,就需要花费越多时间来渲染到屏幕上。因此,必须要控制小块网格和大段网格的数量尽可能的少。这些可以通过在网格物体上使用尽可能少的材质,以及在保证网格物体合适的韧性的前提下使用尽可能少的骨骼来实现。

 

例如,一个包含若干不同材质的网格物体如果使用适当的纹理方法的话,通常可以将这些材质都压缩进一张贴图中。彻底掌握本地3D应用软件中的蒙皮工具能够有助于获取需要应用在物体上……

学员作品赏析
  • 2101期学员李思庭作品

    2101期学员李思庭作品

  • 2104期学员林雪茹作品

    2104期学员林雪茹作品

  • 2107期学员赵凌作品

    2107期学员赵凌作品

  • 2107期学员赵燃作品

    2107期学员赵燃作品

  • 2106期学员徐正浩作品

    2106期学员徐正浩作品

  • 2106期学员弓莉作品

    2106期学员弓莉作品

  • 2105期学员白羽新作品

    2105期学员白羽新作品

  • 2107期学员王佳蕊作品

    2107期学员王佳蕊作品

专业问题咨询

你担心的问题,火星帮你解答
×

确定