• UE Lyda项目学习 二、距离匹配 步幅适配 同步组


    需要在插件中开启Animation Locomation Library插件和Animation Warping插件

    一、距离匹配

    距离匹配:解决人物在走的时候,脚的动画和移动的速度不对齐。

    1. 打开ABP_ItemLayersBase动画蓝图,修改FullBodyStart动画层,将序列播放器删除,换成序列求值器。
    2. 在设置中,将序列绑定为Start,显示时间改为动态值,并去掉公开引脚。显示时间指的是动画的进度。相当于动画序列的第几帧。取消应循环和瞬移至显示时间。
      在这里插入图片描述
    3. 点击函数中的变为相关时,创建绑定SetupStartAnim,在这里需要将显示时间设置为0.每次播放动画时从0开始。
      在这里插入图片描述
    4. 回到ABP_CharacterBase蓝图中,创建线程安全函数UpdateLocationData,更新人物世界位置和与上次更新之间的距离,如果第一次更新,将距离设置为0.新建IsFirstUpdate变量,默认为ture,并在更新后设置为false。这里计算了每帧的位移和移速
      在这里插入图片描述
    5. 回到ABP_ItemLayersBase,创建函数GetMainABPThreadSafe,勾选线程安全和纯函数。目的是获取ABP_CharacterBase动画蓝图中的数据
      在这里插入图片描述
    6. 查看使用的动画(Start,Cycle,Stop),里面是否有DistanceCurveModifier修饰符创建的曲线“Distance”,没有就应用一下。注意已经存在曲线就不要再次应用,会卡死。
      在这里插入图片描述
    7. 点击FullBodyStart,点击序列求值器,创建函数中的更新时的绑定UpdateStartAnim,其中LocomationDistanceCurveName默认值就是Distance。Advance Time By Distance Matching就是Animation Locomation Library提供的方法。通过调整显示时间来进行距离匹配
      在这里插入图片描述
    8. 接下来点击FullBodyCycle,这里调整显示时间没有意义,因为它是循环动画,所以要改为序列播放器,并将模仿速率调整为动态值。
      在这里插入图片描述
    9. 播放速率就不用重置了,直接创建更新时绑定UpdateCycleAnim
      在这里插入图片描述
    10. 下面进入FullBodyStop动画层,将序列播放器改为序列求值器(因为是根据显示时间确定结束)
      在这里插入图片描述
    11. 创建变为相关时函数SetupStopAnim,将显示时间设置为0
      在这里插入图片描述
    12. 将ABP_CharacterBase中的GetMovementComponet函数复制到ABP_ItemLayersBase中
    13. 创建更新时的函数UpdateStopAnim
      在这里插入图片描述
      在这里插入图片描述
    14. 复制动画的压缩曲线,命名为UniformIndexableAnimCurveCompressionSettings
      在这里插入图片描述
    15. 打开UniformIndexableAnimCurveCompressionSettings,将编码解码器设置为可统一编索引
    16. 将全部动画的压缩曲线设置为UniformIndexableAnimCurveCompressionSettings(使用矩阵编辑批量替换)。保存后回到UniformIndexableAnimCurveCompressionSettings中,点击压缩
      在这里插入图片描述

    二、步幅适配

    使动画的步幅根据人物移速进行匹配

    1. 点击FullBodyStart
      在这里插入图片描述
      跨步扭曲的设置:
      在这里插入图片描述
    2. 将刚刚的跨步扭曲复制到FullBodyCycle
      在这里插入图片描述

    三、同步组

    让两个动画过渡的更自然,通过脚步标签,让start过渡到cycle时,脚步相同

    1. 点击FullBodyStart的序列求值器,将分组名称设置为Locomation,方法设置为同步组
    2. 点击FullBodyCycle的序列播放器,将分组名称设置为Locomation,方法设置为同步组
    3. 打开Start动画和Cycle动画,应用SyncMakerAnimModifier修饰符,查看出现的FootSyncMarkers中是否有L与R脚步落下时的通知,没有就手动创建
      在这里插入图片描述
    4. 打开ABP_BaseCharacter动画蓝图,将Start与Cycle的过渡时间设置为1
      在这里插入图片描述
  • 相关阅读:
    Java IDEA maven 配置
    使用boost::geometry::union_ 合并边界(内、外):方案二
    Zabbix监控环境搭建,监控项简单、高级应用,包括自定义监控项、采集器、自动发现规则、监控项原型、宏
    【FGPA】Verilog:移位寄存器 | 环形计数器 | 4bit移位寄存器的实现 | 4bit环形计数器的实现
    uniapp分享位置到微信
    Java端集成drools6.4.0.Final
    Servlet的类和方法
    25岁以后还适合花钱学编程,当程序员吗?
    VSCode安装教程并配置C/C++环境
    【C++编程语言】之引用
  • 原文地址:https://blog.csdn.net/luslin1711/article/details/127576932