本专题主要介绍个人开源项目R2grap的设计思路、实现方式,算是对自己之前所做的工作的进行一个简单的总结,该项目还有很多待优化项,后续如果有时间的话,我会持续进行优化。
Why to do this
因为在工作中需要针对一些从AE(Adobe After Effect)导出的特效素材颗粒进行转译,但其中的动画效果基本是使用视频底作为实际的输出结果,这样的处理方式会造成后续对动画效果修改时,需要重新在AE中修改并再走一次导出、编码的流程,无法满足在客户端对资源颗粒进行二次修改的要求。
加之受Lottie与Pag对于特效资源颗粒处理流程的启发,打算自己动手写一套从AE导出动画的描述信息,并加以解析,最终使用图形API在各平台上实现的动画生产解决方案。
受限于时间与精力的原因,目前仅支持了AE中的Shape类型动画,后续有时间的话会加以完善。
R2grap项目结构与运行
该项目的目录结构主要为以下形式:
R2grap-gl
|___assets //从AE中已导出的Json文件,用于测试;
|___doc
|___include
|___lib
|___script //从AE导出Json文件时,需要执行的AE脚本文件
|___src
|___base //一些基础操作流程包括,贝塞尔插值,多边形建模
|___codec //解析Json文件,以layer-path为单位完成动画信息的构建;
|___render //主要用于生成渲染信息的相关实现,渲染信息包含(verts/paths, colors/texture,transform/keyframe)
|___shader //主要为GLSL、HLSL的shader文件
|___metal //使用Metal渲染的相关接口实现
|___directx //使用DirectX渲染的相关接口实现
|___opengl //使用OpenGl渲染的相关接口实现
|___CMakeLists.txt
clone完成该项目后,进入R2grap-gl可以直接使用内置好的json,编译后进行渲染预览;
mkdir build
cmake ..
make
./R2grap-gl //如果需要更改渲染的json文件,可以加上的json文件名,例如:./R2grap-gl thinking.json
就可以看到使用OPenGL的渲染效果啦;
从AE中导出动画Json
目前支持AE 2020及后续版本,可通过文件->脚本->运行/安装脚本,会在assets的目录下生成相应的Json文件。
后续会继续说明下关于动画信息的构建,以及调用图形API完成渲染。