动画曲线的本质是 float 曲线 名称定义在 skeleton 中,曲线数值定义在 anim seq 中,和动画一样的长度 在动画的每一帧,都有对应的数值 默认值是 0

curve 有三种类型,作用不同

类型适用范围
attribute用于anim bp属性变化
material驱动material instance
morph target驱动面部表情

在 abp 中有以下曲线相关的操作节点

nodeimagedescanim graphevent graph
get all curve namesall curve names defined in skeletonyy
get active curve namesactive curve names at the time, with type parameteryy
get curve valueget float value at the time with curve name parameteryy

link curve to bones

在 anim curves panel 中选择曲线打开 detail,其中可以关联多个骨骼

使得某个曲线在某个骨骼 active 的情况下才 active

情况1,由于 LOD 的原因,某些骨骼被 reduce,此时关联骨骼的曲线就会 inactive

情况2,当导入新的模型,和之前旧的skeleton进行了merge,使得当前的skeleton成为两个模型的超集,同时曲线名称也合并在skeleton中

旧的模型是没有使用某些骨骼的,同时旧的模型也没有使用新模型所引用的曲线 此时将新的曲线和新引入的骨骼关联起来,就不会对旧模型对曲线的使用产生影响

curve 值在anim graph中的传递

每一帧anim graph都会计算出一个pose,同样的,每一帧anim graph 也会计算出一个curve weight

anim graph中对pose操作的节点对curve weight也有影响

最终pose是由底层基础pose不断混合,成为最终pose pose是anim seq的某一时刻的值,在这个时刻有一个关联的curve weight值,也随着pose的不断混合而混合

类型节点曲线混合方式
blend其它同pose混合方式,线性混合 or enum 选择
layered blend per bone比较特殊,参考layered blend per bone node
additivemake dynamic additive同pose,进行曲线值减法
apply space additive同pose,进行曲线值加法,带alpha加权
modifymodify curve node直接对曲线值进行修改,参考

modify curve node

右键点击,add curve pin,选择要修改的curve

每个curve填写一个value参数,总体提供一个alpha

有5种修改方式

mode公式 curve =
add ,alpha没有作用
scale,alpha 没有作用
blend,普通的线性混合
weighted moving averageTODO 只和 alpha 相关,以 alpha为初值,不断上升到 1为止并保持
remap curveremap , e.g. value=0.6, curve remap 0.8 to 0.5

metadata curve

只读的,无法编辑的,保持为1的直线 和普通curve使用一样的名称域,即不能存在同名的 curve 和 meta curve

curve的默认值是 0

  • 新建曲线,默认为0的直线
  • 如果当前播放的seq不存在相应曲线,对曲线取值是 0

0 相当于没有,有些情况下不是一个合理的默认值 meta curve以1为默认值,是一个不错的替代

少量需要曲线的anim进行曲线刻画 其它需要曲线存在的,默认值的用 meta 剩下不需要曲线的动画则不用管,默认值是 0

meta curve和curve是可以随时相互convert的

set weight manually for debug

在 anim curves panel 中,如果选择 auto,则曲线当前值(weight)由动画驱动

可以取消勾选,手动修改为一个恒定值,方便调试