前言
本文充斥各种代码片段,十分用户不友好。
一直以来没紧跟软件更新新特性的习惯,最近发现AE的CC2018版本更新的2个新特性让我有点惊讶。一个是AE支持json格式的导入;另一个是AE开放了对路径点的表达式控制。
最受益两个新特性的,莫过于有实际意义的图表动画。可以看下面Youtube这个教程视频,详细清晰地讲解了:
1. Excel表格数据转json格式。
2. 在AE里导入json数据局。
3. 使用内置脚本对路径每个点生成控制空图层。
4. 使用表达式处理json数据,并正确地控制路径形成折线图。
教程地址:https://www.youtube.com/watch?v=eo_TPwikuDI
看完教程我赶紧更新了软件,并想尝试一下新特性,但是做图表动画有点没新意,于是想试一下,能否把三维角色的运动信息导入AE里面控制路径!之所以专门写一篇推送记录,是因为今天在实现过程里卡住了几处,但是所幸都解决了,觉得过程有点意思,所以写下来给有缘人看。
最终效果
正文
一、获取角色骨骼动画的位置动画数据。
所用的角色动画素材来自Mixamo.com,上面有许多角色动画素材,下载下来是一个fbx文件,直接导入Houdini里。
Houdini用来处理三维的东西是十分自由方便的!我选取了模型上代表各个骨骼的点之后,将其他多余的点删去。问题来了,我要怎么把这个动画130帧的点位置信息导出Json格式的文件呢?
首先,简单查阅了一下Houdini没查到写入本地文本文件的方法和节点。接着,我想用vex来printf出来,但是vex执行好像是并行的,不能保证printf出来的顺序,弃用。最终想到Houdini有一个File Cache的节点,可以把模型数据缓存到本地。
这里有一个地方需要注意,缓存的文件名称里,默认是.bgeo.sc后缀,这样缓存下来的文件,打开是二进制的。我们缓存的时候把后缀去掉,则保存下来的文件是类似json格式的可读文件。
我们仔细看缓存的文件里面的数据,可以轻松找到我们想要的点位置信息,大概在74行这里。
二、将点动画位置数据处理成Json格式
这一步比较简单,选择一个你拿手的写脚本方式,Python、Node、Processing都可以。我对Processing比较熟,所以用Processing简单写了一个脚本,对生成的130个缓存文件进行处理,输出json文件。
经过处理生成的json文件打开如下图(十分完美):
三、AE导入角色骨骼Json数据
先用钢笔工具随意画出表示骨骼的路径,然后使用内置的脚本对路径每个点生成控制其运动的空对象,在每个空对象的position属性的表达式里,输入以下表达式:
注:这里必须新建一个空对象,承载几个表达式控制器,分别是x、y、z来设置空间偏移和s设置空间尺寸。
四、最终输出
可能有人会说,其实AE就算不支持Json文件导入,我们也可以直接把Json数据复制到表达式框,同样可以实现这个效果(就是代码又长又臭而已)。
然而,AE支持Json文件导入最大的优点在于:可以替换!!可以替换!!
我们只需要右键项目窗口的Json文件,替换成其他三位角色动画的Json文件,就能马上生成一个新的路径角色动画。
可以在AE里旋转摄像机改变视角
能看到这里真的是很给我面子了。希望对你有所帮助。
谢谢。晚安。
领取专属 10元无门槛券
私享最新 技术干货