R2grap项目介绍(1):总述与结构篇

介绍R2grap项目结构与相关数据结构设计

本专题主要介绍个人开源项目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的渲染效果啦;

test

从AE中导出动画Json

目前支持AE 2020及后续版本,可通过文件->脚本->运行/安装脚本,会在assets的目录下生成相应的Json文件。

后续会继续说明下关于动画信息的构建,以及调用图形API完成渲染。

See also

comments powered by Disqus