带你了解UE中AnimMontage(动画蒙太奇)的混入混出

您所在的位置:网站首页 虚幻引擎5和3dmax 带你了解UE中AnimMontage(动画蒙太奇)的混入混出

带你了解UE中AnimMontage(动画蒙太奇)的混入混出

2024-07-17 20:41| 来源: 网络整理| 查看: 265

【前言】最近自己在做动作连招逻辑的时候发现montage片段衔接的时候老是会有问题,后面发现是montage混入混出没搞对,但是上网查了下也没见着有相关的文章或者视频之类的去讲解montage混入混出这一块内容,于是就自己测试了下,希望可以让大家少踩点坑。

简单来说就是让两个动画之间的衔接更加自然,不会出现一个动画直接切换到另外一个动画的突兀情况。其本质是两个动画对于骨骼网格体的权重的变换。

2、Montage中的混入混出Montage混入混出相关的设置选项

2 . 1 混合选项

可以选择montage混入混出的模式,分别为「标准」和「惯性化」。

「标准」:上述提到的,动画对于骨骼网格体权重的切换。

「惯性化」:之前知乎有大佬详细讲过了,这里直接贴链接出来,大家感兴趣的可以去自行了解下。

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

2 . 2混入&混出

「混合选项」:权重随时间变化的函数,具体表现为一条X轴是混合时间,Y轴是新动画权重变化,其具体表现为一条曲线,比如立方就是y=x3的曲线。

混合选项为立方的权重描述曲线

这里虚幻给我们提供了很多种混合曲线,大家可以点开下拉选项后按ctrl+alt自行查看曲线形状。

「自定义曲线」:顾名思义,就是不用虚幻提供的混合曲线,自己整一条新的。

「混入混合时间」:从混入触发到完成混出的时间。

「混出混合时间」:从混出触发到完成混出的时间。

2 . 2 . 1 混入和混出触发时间的相关规则

相信只是通过上述对「混入/混出时间」的简单描述,还是会有些懵逼:我混入混出的结果是什么?我混入混出的过程又是怎么样的?放心,接下来就讲好好讲一下这一块。

① 混入/混出结果:混入结果是由原输出姿势完全变为当前动画;混出结果是由当前动画完全变为动画蓝图输出姿势。

② 混入/混出过程:简单来说就是混入混出的时候Montage动画正常播放,但是权重在变化。画图会好理解些:

混入/混出过程

③ 什么时候会触发混入/混出:这个我个人大致测了3种情况,分别为:A片段之后播B片段,A没播完就播B,且没有到A的混出时间;A片段之后播B片段,A混出的期间触发B的播放;A片段之后播B片段,且在A混出前触发B动画播放,但是B动画混入时间过长(比A剩余时间还长)。接下来就将讲讲这3种情况下的混入混出触发规则。

(1) A片段之后播B片段,A没播完就播B,且没有到A的混出时间

此时只触发B的混入,不触发A的混出。

(2) A片段之后播B片段,A混出的期间触发B的播放

此时即继续A的混出,也同时触发B的混入。也就是说,此时骨骼动画同时受到「A」「B」「动画蓝图输出             姿势」这三个因素加权影响。

没看过他源码是怎么样,个人猜测其运算规则是:角色动画=B的动画*B混入权重+(A的动画*A混出权重+当前动画蓝图输出姿势*(1-A混出权重))*(1-B混入权重)。

(3) A片段之后播B片段,且在A混出前触发B动画播放,但是B动画混入时间过长(比A剩余时间还长)

到了A动画的混出触发时间。此时不会触发A的混出,继续B的混入

混入B的时间长于A的剩余时间,此时会继续播放后续的montage片段(相邻的下一个片段),并继续B的混入;如果A片段后续没有其他片段,则会回到当前动画蓝图输出的姿势,然后继续B的混入

④ 关于混入/混出时的动画通知触发:这个可以这么理解,只要触发了混入/混出,就相当于直接切换到对应的蒙太奇片段,里面的动画通知照常触发。也即,片段A混出时不影响A混出部分的动画通知;但是A片段混出时突然播放B片段,此时相当于直接变成B片段了,那A后续没播放的动画通知就不再会触发了,反而B片段混入时的动画通知还能照常触发。文字抽象,可以看图理解。

动画通知触发

黄色部分为混入,红色部分为混出,蓝色/绿色部分为正常播放的部分。

在只播片段A时,通话通知1、2、3都正常触发;但是如果在A混出阶段,播放片段B(如图时间点播放),则触发通话通知1、2、4;动画通知5因为是在动画混出结束后的动画通知,所以如果触发B的混出,相当于B已经播完了,自然动画通知5不会触发。

「混出触发时间」:描述何时触发混出的时间,数值可以为正数也可以为负数。当其为正数m秒,混出时间为n秒时,蒙太奇片段将在片段结束前m秒进行混出,经过m秒混出结束;其为负数-m秒,混出时间为n秒时,蒙太奇片段将在片段结束时完成混合,也即蒙太奇片段将在总时长s-n秒的位置进行混出,并经过m秒混出结束。为了方便理解,下面画了张图

2 . 2 . 2 混出触发时间的相关规则

① 当片段总长S秒,混出触发时间为正数m秒,混出时间n秒(S>m>n)时:

情况①

后续黄色部分就不播放了,在红色部分结束时动画已经完全混合到新的动画了。

② 当片段总长S秒,混出触发时间为负数-m秒,混出时间n秒(S>m>n)时:

情况②

我相信读者朋友们看到上述情况肯定有疑问,那这样的话那混出触发时间为负数的时候他数值不就没意义了,反正都是片段结束的时候完成混合。确实是这样,但是那只是对于一般情况(S>m>n),在特殊情况的时候他的意义就凸显出来了。

接下来我们就讲讲几个特殊情况:

③ 当片段总长S秒,混出触发时间为正数m秒,混出时间n秒(S>n>m)时:

对于这种情况,虚幻Montage的规则是这样的,混出触发的时间仍然在第S-m秒(结束前m秒),混合时间也是同样为n秒,但是在片段播放完毕时将继续播放Montage资源中下一个片段(不触发下一个片段的混入),并继续进行混出最后的n-m秒,然后混出结束。这样读文字还是有点抽象,下面画图举个例子。

情况③

片段A到了红色部分开始混出,然后混出到片段A播放完时因为混出还没有结束,接着就会播放相邻的下一个片段B,把剩下的混出时间接着进行混出,然后混出完毕,片段B剩余黄色部分就不播放了。

※关于蒙太奇片段,同时满足下图两个条件的称为相邻的蒙太奇片段

条件①:片段在蒙太奇资产中相邻条件②:A片段没有和B片段连接

如果是下图这种情况,则相邻片段为D。

④ 当片段总长S秒,混出触发时间为负数-m秒,混出时间n秒(S>n>m)时:

对于这种情况,虚幻Montage的规则是这样的,混出触发的时间仍然在第S-m秒(结束前m秒),混合时间也是同样为n秒,但是在片段播放完毕时将切换回对应动画蓝图输出的姿势,并以该姿势为基础继续进行混出最后的n-m秒,然后混出结束。这样读文字还是有点抽象,下面画图举个例子。我们假设动画蓝图输出的姿势是run姿势。

情况④

⑤ 当片段总长S秒,混出触发时间为m秒(无论正负)(m >S)时:

相当于在蒙太奇刚开始就进行混出,也即可以视为混出触发时间为S秒。这个太简单了就不画图举例了。

2 . 3 混入描述&混出描述

UE的官方文档有详细写,也可以看cdsn某位大佬写的文章去理解,这里贴一下链接,大家感兴趣可以去看一下,就不赘述了。

UE官方文档:虚幻引擎中的混合遮罩和混合描述 | 虚幻引擎5.3文档 (unrealengine.com)

CSDN文章:https://blog.csdn.net/weixin_40301728/article/details/128139562



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3