当前位置: 首页 > news >正文

[UE4]动画蓝图的编辑全流程(Animation Blueprint)

[UE4]动画蓝图的编辑全流程(Animation Blueprint)

https://zhuanlan.zhihu.com/p/27448628

Keyword: UE4、Animation Blueprin、Montage Slot、Character Blueprint

不知从从哪个版本开始,动画蓝图的制作和老版本之间的差距有点大了,这里做下笔记,以备不时之需。。

UE4版本:4.16

假设已经将模型和动作导入工程了,这里使用官方模板项目的动作作为例子讲解,只演示待机、跑步的控制逻辑,跳跃的可以看项目模板的动画蓝图。

1,准备好动作和模型

2,新建一个一个Blend Space 1D

然后在跳出的菜单钟选择骨骼

3,打开Blend Space 1D钟,分别将待机、行走、跑步三个动作拖拽到下方面板钟

修改驱动属性名为Speed,默认为None,这个属性名为是后面编辑动画蓝图使用的属性名。

最终效果:

4,将`TargetWeightInterpolationSpeedPerSec`修改为5.0,修改这个值的原因是为了让角色移动时的静止和移动的过度更加自然

5,新建一个动画蓝图(Animation Blueprin):

在弹出的菜单钟选择父类和骨骼,父类为:AnimInstance;骨骼就是当前模型的骨骼

6,打开动画蓝图的EventGraph面板

然后再添加一个float属性,名字为Speed,表示角色的即时速度

然后再编辑事件:Event Blueprint Update Animation

7,打开AnimGraph面板

新建一个State Machine

双击State Machine,进入里面编辑。从Entry节点钟拖拽并新建一个State:

将该State命名为Idel/Run

然后双击该State,进入里面编辑:其中Speed,就是之前新建float属性

最后再返回到最外层的AnimGraph面板,将StateMachine链接到Final Animation Pose上

8,新建角色蓝图Character Blueprint:

父类选择工程中的C++ Character class:

然后打开角色蓝图,选中mesh

将Anim Class指定为之前创建的动画蓝图:

将Skeletal Mesh指定为模型的骨骼:

如果默认的骨骼基准坐标、转向和刚体大小、MovementComponent的默认方向不匹配,则需要编辑下Mesh的Transform

9,到此,动画蓝图和角色蓝天编辑完成,可以在C++中使用刚刚新建的角色蓝图。

ATopDownTestGameMode::ATopDownTestGameMode()
{
    // use our custom PlayerController class
    PlayerControllerClass = ATopDownTestPlayerController::StaticClass();

    // set default pawn class to our Blueprinted character
    static ConstructorHelpers::FClassFinder<APawn> PlayerPawnBPClass(TEXT("/Game/TopDownCPP/Blueprints/NewBlueprint"));
    if (PlayerPawnBPClass.Class != NULL)
    {
        DefaultPawnClass = PlayerPawnBPClass.Class;
    }
}

 

补充:播放Montage的Slot问题

播放montage动画时,可能遇到播放动画没有反应的问题,例如,用C++的方式播放:

float ACharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName)

原因:

可能时没有指定Montage的Slot。

解决办法:

1,打开Montage动画,看下默认的Slot名字叫什么

2,然后在动画蓝图钟的AnimGraph中,拉出一个Slot节点

然后在从该Slot中连接到Final Animation Pose中:

如果想修改该Slot节点的Slot名字,可以在属性面变钟修改:

如何在C++代码中指定Montage的Slot名字,还没研究过。但是可以通过AnimSequence动态创建一个Montage对象,并指定Slot名字:

USkeletalMeshComponent *Mesh = MyActor->FindComponentByClass<USkeletalMeshComponent>();
if (Mesh)
{
    UAnimInstance *AnimInst = Mesh->GetAnimInstance();
    if (AnimInst)
    {
        UAnimMontage* Mtg = AnimInst->PlaySlotAnimationAsDynamicMontage(MyAnimSequence, TEXT("MySlotName"), 0.1f, 0.1f, 1.0f, 30.0f);
    }
}

编辑于 2017-07-29

虚幻 4(游戏引擎)

虚幻引擎

Unreal Engine 4

文章被以下专栏收录

虚幻引擎

 

虚幻引擎

相关文章:

  • 利用多进程并行化加速Unity资源构建
  • 用分布式压缩贴图加快 Unity3D 的打包过程
  • UGUI坐标与世界坐标的转换
  • Visual Studio 2019修改编码UTF-8
  • VS 修改默认编码格式 为utf-8 无 BOM 与 utf-8 带BOM
  • Unity Animation 之 三种方法暂停继续播放动画
  • Unity 粒子系统提前停止
  • UniGifImage 开源库 ps 中导出 gif 会导致有些动画闪烁
  • PBRT
  • Smooth Paths Using Catmull-Rom Splines
  • Pbrt 源代码分析
  • BVH with SAH (Bounding Volume Hierarchy with Surface Area Heuristic)
  • Bounding volume tree的应用
  • DDA, Bresenham line's algorithm and Voxel Traversal used in the Grid-Accelerator in PBRT
  • Perlin Noise
  • [Vue CLI 3] 配置解析之 css.extract
  • [笔记] php常见简单功能及函数
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • ECMAScript入门(七)--Module语法
  • egg(89)--egg之redis的发布和订阅
  • es6
  • HTTP中的ETag在移动客户端的应用
  • IOS评论框不贴底(ios12新bug)
  • mysql常用命令汇总
  • Node项目之评分系统(二)- 数据库设计
  • PHP CLI应用的调试原理
  • Promise初体验
  • React Native移动开发实战-3-实现页面间的数据传递
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Tornado学习笔记(1)
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vim Clutch | 面向脚踏板编程……
  • vuex 笔记整理
  • 大主子表关联的性能优化方法
  • 分布式任务队列Celery
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 聊聊flink的BlobWriter
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 智能网联汽车信息安全
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​渐进式Web应用PWA的未来
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #、%和$符号在OGNL表达式中经常出现
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (11)MATLAB PCA+SVM 人脸识别
  • (11)MSP430F5529 定时器B
  • (9)目标检测_SSD的原理
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (顺序)容器的好伴侣 --- 容器适配器
  • (算法)Travel Information Center
  • (转)h264中avc和flv数据的解析