[玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot Lock系统(ALS V4实现方案详解)

本文主要是介绍[玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot Lock系统(ALS V4实现方案详解),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式。教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏《玩转UE4/UE5动画系统》。教程中使用的资源及工程将以开源项目的形式更新到GitHub:玩转UE4上。

在这里插入图片描述
工程文件: 玩转UE4(GitHub)
在这里插入图片描述

0. 效果演示

本文提供的项目仅包含拆解版的Foot Lock系统,而Foot Lock系统需要结合其它系统才能体现出它的效果,所以我借用了ALS V4原作者的Youtube频道中Foot Lock系统的演示视频。

通过演示视频可以看到Foot Lock系统和Foot IK系统一样,也是一种装饰性的功能,而且是更精细的效果,不仔细观察甚至都感觉不出它的存在。简言之,Foot Lock系统的作用就是当角色在地面做旋转、翻滚等动作时防止重心脚打滑。

文章目录

    • 0. 效果演示
    • 1. 概述与原理
    • 2. 动画蓝图 事件图
    • 3. 动画蓝图 动画图
    • 4. 动画曲线

1. 概述与原理

因为一定是脚与地面接触才涉及到Foot Lock,所以ALS V4的作者把它放在了Foot IK系统中实现,相当于Foot IK的子系统,所以阅读本文之前请先阅读本系列的另一篇教程《[玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot IK系统(ALS V4实现方案详解)》

在这里插入图片描述

在Character中Mesh组件是Capsule的子组件,因此当Capsule有Transform(指:Location和Rotation)时Mesh也会有Transform,这时就不可避免地造成脚底打滑现象。于是,我们计算出当前脚部的Transform,再让它减去由Capsule产生的Transform,这样脚部就被Lock住了。

Foot Lock系统的实现包含两个核心方法:

  • SetFootLocking方法: 获取脚部Transform(Location和Rotation)。
  • SetFootLockOffsets方法: 计算由Capsule产生的Transform,反向补偿给脚部,这样脚部就被Lock住了。

具体哪些动画的哪些帧需要Foot Lock,分别由动画曲线FootLock_L和FootLock_R决定。

和Foot IK一样,动画蓝图的事件图负责计算数值,而动画图中的Transform(Modify)Bone负责实际的移动骨骼。

2. 动画蓝图 事件图

SetFootLocking方法

在这里插入图片描述

具体实现

在这里插入图片描述
注释:

  1. 获取FootLock曲线值Foot Lock Curve Value。
  2. 只有当Foot Lock Curve Value等于1或者Foot Lock Curve Value小于Current Foot Lock Alpha(当前的Foot Lock Alpha)时,才把Foot Lock Curve Value更新给Current Foot Lock Alpha。

换句话说只在Foot Lock Curve Value瞬时达到1或者Foot Lock Curve Value在逐渐减弱时才更新,只有这样Foot Lock才会有一种锁定的效果(你细品)。

  1. 如果Current Foot Lock Alpha等于1则记录当前的ik_foot在Component Space的Location(Current Foot Lock Location)和Rotation(Current Foot Lock Rotation)。
  2. 当Current Foot Lock Alpha大于0时,更新Foot Lock偏移量,即使此时胶囊体有位移,脚部也能保持不动。

SetFootLockOffsets方法

在这里插入图片描述
注释:

  1. 计算前后两帧之间Rotation Different(旋转差值)。
  2. 计算前后两帧之间Location Different(位置差值)。

注:先计算出世界坐标系上的偏移量,然后用Mesh的WorldRotation计算出Mesh空间的Location Difference

  1. 当前Location减去Location Different(Component Space)。
  2. 当前Rotation减去Rotation Different(Component Space)。

Location Different和Rotation Different都是用于反向补偿的偏移量。

3. 动画蓝图 动画图

Foot Lock在动画图中模块接入的位置

在这里插入图片描述

在这里插入图片描述

注:Transform(Modify)Bone的Translation/Rotation Mode 都是Replace Existing;Translation/Rotation Space 都是Component Space

4. 动画曲线

下面举几个ALS V4中使用了Foot Lock的动画资源的例子

动画资源:ALS_N_TurnIP_R90

在这里插入图片描述

动画资源:ALS_CLF_GetUpBackMontage_RH

在这里插入图片描述

动画资源:ALS_N_Mantle_1m_Montage_LH

在这里插入图片描述

它们的共同特征是当重心脚着地的一瞬间,重心脚的FootLock曲线值要设置为1。

另外还需要注意的是,FootLock只有在FootIK曲线有值的时候才有效,部分动画属于地面动画(包含在Locomotion状态机中),它们本身虽然没有FootIK曲线,是因为在状态机中使用了Modify Curve方法动态将FootIK曲线值设为1了。

这篇关于[玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot Lock系统(ALS V4实现方案详解)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816076

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个