惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
D
DataBreaches.Net
罗磊的独立博客
博客园 - 司徒正美
Last Week in AI
Last Week in AI
The Cloudflare Blog
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
小众软件
小众软件
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
B
Blog
博客园 - 【当耐特】
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测
Motion Matching初实践
提子味芬达 · 2024-10-20 · via 机核

在体验官方的Motion Matching(运动匹配,简称MM)的实例后,感觉这有可能成为未来游戏对Locomotion动画系统的新选择(什么屁话,育碧早就开始用了)。心痒痒的就想着看看能不能用手头的动画素材来复现一下,一是想要从零开始搭建,摸清MM需要怎样的资产进行运作;二是想跟着官方案例走,对MM系统的运作原理做一次摸底。然后就有了这万余字的笔记了。

MM系统引入了很多新内容(至少对我来说确实如此),因此在对MM系统进行复现的同时,还要对新内容进行学习区分,一边了解新内容的工作流程,一边重复测试其对MM系统的作用及必要性。因此想要做短时间内从初识MM到熟练使用MM,需要本身就对动画系统、运动组件、以及动画姿势特征有一定的知识积累;此外,要是有对动画扭曲Animation Warping相关使用经验,就更好了。当然这个只是对操作者的要求,MM系统对动画资产的要求同样不低,而最不可缺少的就是,动画资产需要包含根骨骼运动数据。

当然啦,刚开始学习的我哪知道这个,下了虚幻自带的角色资产之后就开始上手搞了嘛!而结果是还真就搞出来了。从最简单开始,先制作角色的待机与行走状态。MM系统对动画进行混合的流程与传统状态机的类似,只不过是将状态机更换为Pose Search Database(简称PSD,用于存储状态类似的动画资产),将转换条件更换为使用Chooser(选择器表)的 条件Column。我将待机动画归至Idle状态,行走动画归至Jog状态,检测 运动组件Character Movement的速度是否为0来做条件切换该两个状态,成功实现两个动画资产的单独播放。那接下来就是加入起步以及行走结束的动画以实现待机到行走的平滑过渡。

对于传统状态机,两个动作进行混合,可以直接使用机器做插值计算混合,也可以制作混合空间Blend Space,通过调节暴露的参数分配权重来混合,也可以插入对应的过渡动画资产来实现动动画切换。若需要使用第三种方案,就需要添加动画资产并设置过渡条件。MM系统也是如此,但对于以上的第二、第三种方案,在MM系统中可以直接将相应的混合空间或动画资产添加到PSD中,在执行动画更新时经过Chooser的筛选进行播放。由于在判断当前角色处于待机或是行走状态是用速度是否为零来做条件,那按照正常逻辑,当角色处于起步与结束状态时,其速度小于行走速度但不为0,因此应该把起步、行走循环、行走结束的动画放置在同一个PSD中进行检测,然后使用当前速度值对其进行区分。此乃第一个坑。

由于在Chooser进行筛选时,若有多个资产的条件相同,优先选择上层的资产输出,因此在上面的案例中,由于角色起步与结束时速度值范围都处于0到行走速度之间,就会出现在起步时播放结束的动画,或者在结束时播放起步的动画。至此,不难分析得知,对于起步与结束的状态,需要设置更严谨的转换条件。使用速度方向做区分?不行,因为起步与结束时有可能都朝向同一个方向移动。使用当前加速度大小做区分?似乎也不行,跟速度值一样,在某个阶段会处于加速度大小相同的状态?再进一层思考,在起步时,角色将继续加速,在未来某个阶段会达到行走时的速度;而在结束行走时,角色将持续减速直至停止在原地。那有没有一种可能,可以使用未来的速度做区分?

当角色接受输入时,其运动组件会按照设置的方向驱使角色移动,而在得知角色运动的最大速度、加速度,以及地面的摩擦因素等数值前提下,是否能计算出角色在未来某个时间点的位置或速度?简单物理题嘛,肯定是能的。同样的计算,当角色断开输入的瞬间,角色将要停止,同样也可以计算某个时间点角色的位置或时间。那通过预测角色未来某个时间点的速度,对比当前时刻的速度,我们可以判断角色是处于何种阶段:

  • 持续为0,角色处于闲置静止状态

  • 持续不为0,角色处于连续运动状态

  • 当前可能为0,未来不为0,角色处于起步状态

  • 当前不为0,未来可能为0,角色处于停止状态

要对角色运动进行预测,则需要添加Pose History节点。该节点能生成预测的轨迹点并存储历史轨迹点。在动画蓝图中添加如此函数,并连接到Event Update Blueprint Animation每帧触发,即可获取基于当前时刻的轨迹Trajectory引用。(*Speed 2D是当前速度在XOY平面上的矢量长度值)

从当前轨迹Trajectory获取未来0.4秒及0.5秒的位置,求取其差值,并除以时间差0.1秒从而粗略计算出未来速度Future Velocity,通过判断当前速度Veloctiy与未来速度Future Velocity,可以判断角色当前的运动阶段。

但官方案例中并不对当前速度Veloctiy与未来速度Future Velocity进行对比,而是计算该两速度在一定范围内是否都不等于0,若是,设置角色状态为Move,否则设置为Idle。当角色处于Move状态,使用Veloctiy与Future Veloctity进行对比,当Future Veloctity与Velocity的差值大于等于100时,说明Velocity还未能接近Future Velocity,设置角色状态为起步(官方案例中是设置Is Starting函数返回值为真,此处为了讲解目的便如此书写罢);当该两个速度差值小于100 时,说明角色将很快达到最大移动速度,即将与行走循环动画做混合。当角色处于Idle状态时,当前角色的平面速度值,若大于20,说明角色将停不停,让角色播放行走停止动画;若小于20,则播放闲置动画。

如上修改后确实能正常播放各个阶段的动画。以下为结果展示