Maya动画变速工具
Maya动画变速工具
lingyun前言
前段时间朋友接了个外包,实拍的原始素材在nuke里进行了变速,而一些cg动画在原素材中已经制作完成,
需要一个工具对maya文件中动画进行相同的变速来匹配变速后的素材。
其实变速的原理和实现并不是特别复杂,不过繁复的数值计算需要借助脚本来实现。
然后借着节假日的最后一天,写了这个变速工具。
这篇文章简单的记录下过程,并把它分享给需要的朋友。
变速的方式
变速实际上是对原始素材的抽帧和补帧,
而对于我们来说,最需要知道的是:
变速后的每一帧,对应的是原始素材中哪一帧画面。
比如,知道变速后的1001帧,是原本的1005帧,
这样把1005帧的动画复制到变速后的1001帧,
就可以完成了这一帧的匹配。
为了得知变速后的对应原始帧,我们可以用这样一个验证方式。
首先用软件输出一个这样的(纯数字)序列帧。
然后套上变速节点进行观察。
在Nuke中常用的变速节点有Retime
,OFlow
,Kronos
等。
首先使用retime节点做最简单的倍速变速。
这里为范围1001-1100的序列帧做一个1.9倍的变速,
filter就默认使用box。
点击变速后的每一帧,可以看到对应的图像。
比如变速后的1025帧的图像为原始1046和1047的融合。
然而每个变速节点又有几种不同的变速方式,
这里的retime节点就有none
,box
和nearest
三种方式。
尝试不同的变速方式能看出,有的是直接进行取整,有的是会融合前后帧。
通过这些尝试和观察,对于直接的倍数变速,推导出这样一个公式:起始帧 + (变速后的帧数指数)*倍数 - 倍数
注意:这里指数是指变速后序列的第几帧。
比如变速后的1035帧的指数就为35。(起始帧为1001帧的情况下)
把上述的公式带进去可以得到结果:1001 + 35*1.9 - 1.9 = 1065.6
针对于retime节点,不同的变速方式它的取值为:
- none:直接去小数取整
- box:四舍五入后,融合前后帧
- nearest:有小数,直接进一位取整
说完了倍数变速,对于OFlow,Kronos和TimeWarp节点进行曲线变速的情况下,可以直接通过观察这里的值进行结果判断:
如图所示,变速后的1059帧对应原始的1081帧,Frame里的值为1080.562。
再次尝试不同变速方式,总结出不同变速方式的求值结果:
timeWarp
none: 直接去小数取整
nearest:四舍五入取整
box:根据小数点的值,画面融合oFlow
motion:根据小数点的值,画面融合
frame:四舍五入取整
blend:根据小数点的值,画面融合Kronos
motion:根据小数点的值,画面融合
frame:四舍五入取整
blend:根据小数点的值,画面融合
通过上述的方法,我们就可以得到这样一个变速信息文件:
左侧为变速前帧数,右侧为对应的原始素材帧数,中间用空格隔开。
变速工具
工具我放在了github上,直接下载使用即可。
https://github.com/lingyunfx/MayaCameraRetime
使用步骤:
1.选择变速信息文件(txt格式)
2.选择变速方式,支持motion,frame,none三种类型。
blend可以使用motion进行变速,nearest可以使用frame方式。
3.点击run按钮,工具会对maya中所有的动画进行变速。
(保险起见,最好在操作前进行文件保存)
这篇文章就到这里,如果觉得文章还不错,可以关注这个公众号支持一下作者thx!