UE4之替换第三人称模板

为什么要替换第三人称模板?

1可以使用我们自己的角色来进行游戏,是不是很有趣呢?

2.了解虚幻中retarget mannager、动画蓝图、动画序列等等,主要是动画模块。

如何替换第三人称模板?

1.找到一个喜欢的角色,将其导入虚幻中

2.添加第三人称模板

3.进行retarget,将动画映射到自己的角色上,

4.替换模板中的网格体和动画蓝图

5.运行,可以操控自己的角色进行移动


1.找到一个喜欢的角色,将其导入虚幻中

添加了虚幻官方提供的悟空角色

2.添加第三人称模板

点击AddNew选择Add Feature or Content Pack

接下来打开第三人称的地图,点击运行,我们可以操控机器人在场景中自由移动

对第三人称模板的分析

1.第三人称角色的构成:

胶囊体:一个类似胶囊的圆柱,主要用于简单碰撞时作为物体的边缘

Arrow:规定向前的方向

Mesh:角色的网格体设置

CameraBoom:弹簧臂组件

PlayerCamera:玩家的摄像机

Character Movement:定义了角色与移动相关的各个参数

2.当按下运行之后,可以按下键盘wasd对机器人进行控制,这是因为在项目设置中已经对输入进行了一些动作映射. PlayerInput中定义了 两种结构体。第一种是 FInputActionKeyMapping,它定义了操作映射(ActionMapping)。另一种是 FInputAxisKeyMapping,它定义了轴映射(AxisMapping)。

ActionMappings

将离散按钮或按键映射到一个"友好的名称",该名称稍后将与事件驱动型行为绑定。最终的效果是,按下(和/或释放)单个键、鼠标按钮或键盘按钮将直接触发某个游戏行为。

AxisMappings

将键盘、控制器或鼠标输入映射到一个"友好的名称",该名称稍后将绑定到连续的游戏行为,例如移动。在轴映射(AxisMapping)中映射的输入会被持续轮询,即使当它们刚刚报告它们的输入值当前为零时也是如此。这可实现移动或其他游戏行为的平稳过渡,而不是由操作映射(ActionMapping)中输入所触发的离散游戏事件。

3.当机器人从楼梯跳下的时候,可以看到角色做了一个跳跃动作,但是我们并没有按键来让机器人进行跳跃,为什么机器人会自动跳跃呢?

为了解答这个问题,需要看一下机器人是怎么运动的?首先从按下wasd键开始。

打开第三人称模板的蓝图类。

WA分别控制事件MoveForward和MoveRight,当按下W键后,更新Input Axis MoveForward的值,Axis Value的值为1,现在Z为是正向运动,也就是向前运动,人物的Velocity也就是速度会迅速递增至蓝图类中设置的最大速度600,这时并没有动画的改变,接下来就需要查看mesh调用的动画蓝图了。

动画蓝图编辑器中大致分为8个模块:

1.工具栏:动画蓝图编辑器中的 工具栏 允许你编译蓝图,保存,在 内容浏览器 中找到动画蓝图资源,以及定义 类设置(Class Settings) 和 类默认值(Class Defaults) 设置,与 蓝图编辑器工具栏 相似。 工具栏最右侧的是 编辑器工具栏 ,它使你能够在虚幻引擎4中的不同动画工具间进行切换。

2.资源快速访问栏:可以快速访问所有有关该网格体的资源

3.视口:视口 窗口允许你预览选定的骨架网格体上的动画资源的播放并提供与资源相关的信息。你可以更改照明模式,显示或隐藏骨架的骨骼,调整动画播放速度,甚至将骨架网格体设置为在转盘上自动旋转,以便从各个角度查看它。

4.事件图表:每一帧都会对数据进行更新,将更新的数据传入动画图表,最常见的用途时更新混合空间和其他混合节点使用的值,来驱动动画图表中的动画。

5.动画图表:评估当前帧的股价网格体的最终姿势,可在其中放入动画节点 以采样动画序列,使用骨架控制执行动画混合或控制骨骼变形。 之后,逐帧将结果姿势应用到骨架网格体。执行流不基于事件,进行逐帧评估

6.我的蓝图:蓝图编辑器中还具有 我的蓝图(My Blueprint) 面板,其中包含图表、函数、变量和动画蓝图中包含的其他相关属性的列表。

7.细节/预览场景设置:动画蓝图编辑器中的 细节(Details) 面板与蓝图编辑器中的 细节面板 相同,你可以在其中访问和编辑与任何已创建的变量以及已放置在图表中的节点相关的属性。

同样位于此部分的是 预览设置 选项卡,它使你能够定义要用作预览的 动画模式(Animation Mode) 或 动画(Animation) 等视口设置,切换用于预览的 骨架网格体,以及要应用的视口照明和后期处理设置,以便你可以在应用不同照明的情况下预览设置。

8.动画预览编辑器 / 资源浏览器:动画预览编辑器 允许你更改将在视口中更新骨架网格体的变量。 你也可切换到 编辑默认值(Edit Defaults) 模式并更改变量,然后将它们应用为默认值。 资源浏览器 停靠在单独的选项卡中,它允许你查看与关联的骨架资源关联且可由其使用的所有动画资源。

事件图表

根据上图可以看到,在模板中创建了两个变量:Float类型的名字为Speed、布尔类型的名字为IsInAir?,可以知道一个变量为速度,一个标志着是否在空中。通过修改这两个值来修改动画图表中的输出的最终Pose。接下来打开动画图表

动画图表

可以看到事件图表包括了一个输出姿势和一个状态机,有关状态机的描述请参见状态机,在这里不在介绍。

状态机

打开第三人称模板的状态机就可以看到有一个入口连接着Idle/Run,并且通过状态检查,来切换到跳跃状态,在通过状态检查,若状态符合就切换到跳跃循环,在通过状态检查,若状态符合就切换到跳跃结束,

,在通过状态检查,若状态符合就切换到idle,形成一个闭环结构,接下来我们看一下idle中的状态吧

在这里它使用了一个BlendSpace 1D,通过传入的Speed数值来将两段动画序列进行混合,输出混合的pose,当我们没有按下wasd时,人物的速度为0,则现在处于Idle状态,所以输出的姿势为Idlepose,动画蓝图便会在Tick中对Idle动画序列进行评估,拿到最终的Pose,

jumpStart、JumpLoop、JumpEnd:分别调用的不同的动画序列

接下来开始分析如何进入这些状态

JumpStart:用户按下了空格键,IsInAir为真,,就进入了JumpStart的状态,此时就播放开始起跳的状态。

jump Loop:当进入开始起跳的状态后,若开始起跳的动画播放超过90%就开始播放JumpLoop的动画。

JumpEnd:不再空中的话,就判定跳跃动作结束,开始播放停止跳跃动画序列

Idle:当JumpEnd动画播放超过90%就进入Idle状态。

了解了动画切换的原理之后,接下来需要将将模板中的动画序列替换为我们自己的动画序列。

3.进行retarget,将动画映射到自己的角色上

使用Rwetarget Mannage对机器人和悟空进行映射​​​​​​​

i.切换至骨骼编辑器,打开retarget Mannager

点击Select Rig,选择绑定,我们选择人形绑定

选择AutoMap 如自动匹配有问题,则需要手动指认

接下来打开悟空的网格体,按照同样的方式设置

上面我们将机器人和悟空的骨骼分别对照虚幻的统一骨骼进行了一一对应,就等于悟空的骨骼和机器人的骨骼进行了关联。

注:有的模型初始Pose可能不同,需要将初始Pose调整为相同Pose后点击ModifiesPose保存。

做好匹配后,找到机器人的动画蓝图,右键选择retarget Anim BluePrints,对现有的动画序列进行retarget并复制动画蓝图。

选择刚刚创建的wukong骨架,点击Retarget。

会在Content目录下生成若干动画序列和动画蓝图,

4.替换模板中的网格体和动画蓝图

接下来我们就可以替换模板中的mesh和动画蓝图了

替换完Mesh和动画蓝图的第三人称模板,可以看到有的骨骼运动的位置是有问题的这个时候我们需要检查一下retarget中对应的骨骼是否存在问题,如果有问题修正过来就可以了。

你学会了?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值