虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx

上传人:b****7 文档编号:21952346 上传时间:2023-02-01 格式:DOCX 页数:13 大小:129.82KB
下载 相关 举报
虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx_第1页
第1页 / 共13页
虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx_第2页
第2页 / 共13页
虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx_第3页
第3页 / 共13页
虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx_第4页
第4页 / 共13页
虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx

《虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx》由会员分享,可在线阅读,更多相关《虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx(13页珍藏版)》请在冰豆网上搜索。

虚拟现实制作技术Unity教案项目十二模型动画交互开发二docxWord格式.docx

模具

实地参观

挂图

现场演练

V

多媒体

上机训练

CAI

听力训练

虚拟仿真

其他

教学过程设计(分教学步骤列出内容、时间安排、教学方法、训练项目、素材等)

第二种方法,选择人形动画模型,单击三角按钮,单击生成一个Avatar的文件。

Attets•

图20

要对过渡条件进行控制,就需要设置过渡条件参数,Mecanim动画系统支持的过渡条件参数有Float、Int、Bool和Trigger4种。

Float.Tnt用来控制一个动画状态的参数,比如速度方向等可以用数值量化的东西。

Bool用来控制动画状态的转变,比如从走路转变到跑步。

Trigger木质上也是bool类型,但它默认为false,且当程序设置为true后,它会自动变回falseo

当设置好运动状态机后返回场景,Hierarchy视图中选择Constructor,将Assets中AnimatorController拖入Inspector下的含有Avatar的角色模型Animator组件中,如下图21所示。

▼就Animator&

|Controller

dEAnimatorControllerO|

Avatar

iConstructorAvzfSrO

ApplyRootMoton

Y

UpdateMode

CullingMode

[CmUUfdateTransforms

ClipC«

unt:

4

CurvesPos:

0Quat:

0Eultn0Sc«

l•:

0Muscles:

524Genenc:

0PPtn0

3CurvesCount:

524Consent:

41(7.8%)Dense:

483(92.2%)

0(0.0%)

图21

运行测试效果就是人物模型静止不动、跑、跳、走、静止……的状态。

课堂

小结

Unity可以用两种方式控制动画

1.Animation,这种方式简单,直接Play("

Idle"

)或者CorssFade("

)就可以播放动画;

2.Animator,Unity5.x之后推荐使用这种方式,因为里面可以加上混合动画,让动画切换更加平滑。

上机

实训

完成课堂实例。

作业

请参照任务演示及对应文字资料提交本次学习任务“角色动画的应用”的最后运

布置

行截图(要包括关键的Inspector展示)。

InspectorConfigureAvatar

Scene视图中的模型处于T形姿态,表示Avatar映射成功。

新课

一、实践任务一模型动画任务构思

模型动画是一类常见游戏动画,玩家通过特点的操作对模型进行动作指定,从而完成交互功能。

本任务通过模型动画的制作,了解骨骼绑定后的fbx模型动画在Unity3D软件中的使用方法。

1.任务设计

本任务在Unity3D内导入一个绑定好骨骼动画的第三人称人物模型,人物身上绑定了若干个动作,通过代码实现键盘与模型动画的交互功能。

2.实施过程步骤1:

创建项目并保存场景feiRenxingo步骤2:

执行Assets-*ImportPackage-Characters命令载入预先准备好人物资源和纹理,或是选中资源拖动到Assets中,如下图1所示。

Assets♦

■RH«

MittrialsctnttvucterfeiRtnxinf

Censtruct^r

c^nttvvcter.

步骤3:

将模型添加到Scene视图中,使用左手定律,调整模型坐标位置,如下图2所示。

步骤4:

打开Assets中的文件夹Materials,里面有一个材质球,选中材质球,在

Inspector里单击MainMapsT的Albedo,选择纹理,如下图3所示。

给人物贴好纹理,如下图4所示。

SelectTextureAssets

Noneconttn'

ctordittuie

Inspector

.con$tructor_don«

SMder

Pendenn^Mode。

—•

MainMaps

oUxulhc

Defau^hedrer

□DefAuttPmm

Bidground

/Chedrmiri

-DropdownArrowInputFieldB^drgroundKnob

UIMAtk

UJSpnte

图4

步骤5:

选中Assets中Constructor,在右侧的Inspector面板中选择Rig,设置动画类型AnimationType为Legacy,单击Apply按钮。

这时再单击Hierarchy中的Constructor,会发现Inspector面板发生变化,出现了Animation组件,如下图5所示。

▼^Animation

AnimationpJDTake001►AnimationsPlayAutomatically《

AnimatePhysicsCullingTypeOnRertdmr,

步骤6:

选中Assets中Constructor,在右侧的Inspector面板中选择Animations,

如下图6所示。

可以看到现在模型是一个完整的动画,给模型做一个动画的切片。

这时在Inspector面板最下方的动画效果图中是看不到人物模型的,为了方便操作(做动画切片时要根据人物动作确定开始帧和结束帧),可以先将设置动画类型AnimationType为Humanoid,以后再修改。

在ClipsT点击+号,生成一个切片TakeOOlO,因为一开始是静止的,改名为idle,如下图7所示。

在Start与End中设置这个动画的开始和结束帧数,在Start中输入1,End中输入62,如下图8所示。

图7

图8

继续生成一个切片TakeOOlO,改名为run,在Start中设置65,End中输入81,是模型跑动的一个过程。

再生成一个切片walk,在Start中设置83,End中输入116,是模型散步的一个过程。

最后生成一个切片jump,在Start中设置120,End中输入140,是模型散步的一个过程。

选择完整的切片TakeOOl,点击-号删除。

切片做好的效果如下图9所示。

单击Hierarchy中的Constructor,弹出如图10所示的对话框,单击Apply按钮。

选中Assets中Constructor,在右侧的Inspector面板中选择Rig,设置动画类型AnimationType为Legacyo

步骤7:

选择Hierarchy中的Constructor,Inspector面板中的组件Animation中默认的动画是静止idle。

动画组Size是4,也就是有4个动画,每个动画元素是idle、run、walk,jump,如下图11所示。

切片动作完成后,一定要将滚动条拖动到最下方,单击apply按钮,如下图12所示。

▼♦Animation

Arwnabon

QidltO

▼An«

tJoni

4

Element0

jO

Element1

OninO

Element2

QwifrO

Element3

DjumpO

PhyAutom«

tic^iy

a

AmmMePhysics

LJ

CuiinflTyp«

►Curves

►Events

►Motion

►ImportMessages

|RevertJAppM1

图11图12

步骤8:

创建C#脚本,命名为control,并将其连接到摄像机上。

//定义一个公共变量,类型是游戏对象,名称是obj,最初是空的,没有游戏对象。

PublicGameObjectobj=null;

voidStart()(

//初始化时,通过Find方法寻找名称是Constructor的对象,赋值给obj。

obj=GameObject.Find("

Constructor"

);

//wrapMode是切片动画运行的模式,表示的是一个动作,以什么样的形式来做。

有四种模式。

//Once模式表示做一次动作后,停留在最后一帧,动作算是结束了。

//ClampForever模式表示这个动作,做到最后一帧的时候,会永远的停留在最后--帧,不算动作结束。

//Loop模式表示的是没有设置的情况下会不停的重复这个动作,当时间播放到末尾的时候重新播放从开始播放。

//单击Play按钮后,如果没有按字母键,人物就一直是idle,在原地静止不动。

obj.GetComponent<

Animation>

().wrapMode=WrapMode.Loop;

)〃设置动画播放类型为循环

voidUpdate()(

//按键后播放不同动画if(Input.GetKeyDown(KeyCode.A))〃按A键后,播放idle的动画,播放的动画名称一定要和前面动画切片的名称一致。

{obj.animation.Play("

idle"

}if(Input.GetKeyDown(KeyCode.B)){obj.animation.Play("

nm"

)if(Input.GetKeyDown(KeyCode.C))(obj.animation.Play("

walk"

}if(Input.GetKeyDown(KeyCode.D))(obj.animation.Play(*jump*);

})〃显示提示信息,为了增强可读性,告诉用户可以按哪些键voidOnGUI()(//GUILayout.LabelC按字母键A、B、C、D切换播放模型骨骼动画〃);

}步骤9:

单击Play按钮测试,可以通过键盘A、B、C、D键控制人物动作。

二、角色动画在游戏中的应用

对人形动画己经有了一定的了解,下面学习在游戏开发中人形角色动画的具体应用步骤。

1.Animator组件

Animator组件是关联角色及其行为的纽带,每一个含有Avatar的角色动画模型都需要一个Animator组件。

Animator组件引用了AnimatorController用于为角色设置行为,如下图12所示。

▼*■n/Animator

Controller

ApplyRootMotionUpdateModeCullingMode

None(RuntimeAnimatorControllerO

ZConstructorAvatar

CullUpdafTransforms

Hot图12

Animator组件具体参数如下表所示:

参数

含义

功能

控制器

关联到伯色的Animator控制器

选择Assets中的人物模型,拖放到场景中,场景中就有一个人形动画模型,Inspector面板上出现了Animation组件,如下图13所示。

骨架结构的映射

定义Mecanim动画系统的简化人形骨

架结构到该角色的骨架结构的映射

ApplyRootMotion

应用RootMotion选项

设置使用动画本身还是使用脚本来控制角色的位置

AnimatePhysics

动画的物理选项

设置动画是否与物理属性交互

动画的裁剪模式

设置动画是否裁剪以及裁剪模式

▼Animator

5

Av«

Ur

«

ConstructorAvAUrO

I8

jCullUpdateTr«

nsf«

rms«

图13AnimatorController

AnimatorController可以从Project视图创建一个动画控制器(执行Create-*AnimatorController命令)。

同时会在Assets文件夹内生成一个后缀名^9.Controller的文件,这就是动画控制器,可以重命名,如下图14所示。

FolderScript

$cnp<

EditorTwtC»

Script

ScenePrefib

AudioMixer

图14

MateriallensRare

RenderTexturelightmapPerimeters

SpritesAnimatorController

AnimationAAnimatorOverrideController

AvatarMaskPhysicMatenal

Phy«

ks2DMmrUIGUISide

CustomFontle9«

cy

参照上文给模型做一个动画的切片,返回动画状态机进行相应设置。

2.Animator动画状态机

一个角色一般会拥有若干不同的状态,需要在不同的条件下播放不同的状态动画(执行动作),还需要控制动画的播放速度、播放时间等。

在Unity中使用动画状态机

(Animator)来将动画状态以流程图的网格化形式可视化,可以通过它来实现角色动画状态的播放以及切换。

动画状态机可以通过动画状态机窗口进行设置,如下图15所示。

图15

1AnyState

动画状态机一旦创建,默认情况下AnyState,AnyState状态的代表各个状态随时都可能会跳转至他所指向的状态,表示任意状态的特殊状态。

例如如果希望角色在任何状态下都有可能切换到死亡状态,那么AnyState就可以做到。

2Entry

绿色的Entry表示状态机的入口状态。

当我们为某个GameObject添加上Animator组件时,这个组件就会开始发挥它的作用。

如果AnimatorController控制多个Animation的播放,那么默认情况下Animator组件会播放哪个动画呢?

是由Entry来决定的。

但是Entry本身并不包含动画,而是指向某个带有动画的状态,并设置其为默认状态。

被设置为默认状态的状态会显示为橘黄色。

在图15中Idle就是默认状态。

可以随时在任意一个状态上通过鼠标右键->

SetasLayerDefaultState更改默认状态,如下图16所示。

CM

3Exit

Exit状态表示状态机的出口状态,以红色标识。

如果动画控制器只有一层,那么这个状态没有作用。

但是如果需要从子状态机中返回到上一层(Layer)时,把状态指向Exit就可以了,如图17所示。

4状态间的过渡关系

直观上说它们就是连接不同状态的有向箭头。

动画状态过渡的搭建可以通过创建空的动画状态,或是直接把创建的动画片段拖动进去,如图18所示。

图18

动画状态机之间的箭头标示两个动画之间的连接,右击一个动画状态单元,在快捷菜单中执行MakeTransition命令创建动画过渡条件,然后并把出现的箭头拖拽到另一个动画状态单元即可,完成动画过渡条件的连接,如图19所示。

图19

过渡条件用于实现各个动画片段之间的逻辑,开发人员通过控制过渡条件可以实现对动画的控制。

图20就显示动画模型先是静止,然后是跑,接下来是跳,最后是走的,又回到静止,形成一个循环。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1