前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AE流程输出设计

AE流程输出设计

原创
作者头像
jerrypxiao
修改2019-01-29 21:34:12
1.4K0
修改2019-01-29 21:34:12
举报
文章被收录于专栏:音视频专栏音视频专栏

1.概要

通过开发AE的Pugin。我们能够输出有效的信息,其中拆解了每一层的关键信息。我们设计了一个基本的AE转场效果,根据此信息设计了json的格式用于输出。

2.SDK中的一些重要概念和API

    (1)项目bin中的任何内容都是AEGP_Item,相机没有来源,因此没有AEGP_ItemH;

    (2)AEGP_CollectionItems是图层,蒙版,效果,流,蒙版顶点和关键帧项目的联合,我们于是可以从中获取到相关信息

Debug看到的信息

3.AE基本转场的效果设计

码农一般不会设计软件,这里学些AE的东西也是很不错的一种体验,同时对AE软件渲染对过程,有了比较好了了解。这里简单制作一个图片对过度效果。

(1)新建合成

新建合成

双击左边空白处,导入两张图片,新建一个合成,定义时间10s,宽度和高度1280x720

(2)拖入两个图层,统一缩小时间为5s

添加图层

(3)同时选中两个图层,右键,关键帧辅助,序列图层,不叠加

序列图层

这个时候会顺序排列每个图层,当选中重叠当时候,输入重叠当帧数,下面选择溶解效果。这个时候就可以看到简单当渐变过度效果。

关键帧过度

我们看到实际上是在重叠区域加入了alpha的渐变,开始和结束的位置分别加上了关键帧,

第一个图层alpha从100 到0

第二个图层alpha从0到100  

这样实现了溶解过度的效果。

4.工程中加入JsonCpp库

   在插件中用到json的工具库来生成。mac下

brew install jsoncpp

查看安装的目录

$ brew list jsoncpp

/usr/local/Cellar/jsoncpp/1.8.4/include/json/ (11 files)

/usr/local/Cellar/jsoncpp/1.8.4/lib/libjsoncpp.1.8.4.dylib

/usr/local/Cellar/jsoncpp/1.8.4/lib/cmake/ (2 files)

/usr/local/Cellar/jsoncpp/1.8.4/lib/pkgconfig/jsoncpp.pc

/usr/local/Cellar/jsoncpp/1.8.4/lib/ (3 other files)

添加到工程里面

添加库you

再把头文件拖进左边到Supporting Code中。

        Json::Value root;

        Json::FastWriter fast; 

        root["LayIn"]=Json::Value("11");

        root["LayDur"]=Json::Value("22");

        fast.write(root);

fprintf(out, "test: %s\n", fast.write(root).c_str());

5.定义Json格式

{

    "composite0": {

        "during":0.00,

        "width":1280,

        "height":720,

        "layersNum":2,

        "layer0": {

            "name": "Layer1Name",

            "during":0.00,

            "startTime":0.00,  //开始时间

            "endTime":0.00,  //结束时间

            "effectsNum":2,

            "anchorPoint":{

                "value":[100.00, 100.00],

                "keyframeSet":[{"time":0.00, "value":[100, 100]},

                                            {"time":2.00, "value":[200, 200]}]

            },

            "position":{

                "value":[100.00, 100.00],

                "keyframeSet":[{"time":0.00, "value":[100, 100]},

                                            {"time":2.00, "value":[200, 200]}]

            },

            "scale":{

                "value":[0.5, 0.5],

                "keyframeSet":[{"time":0.00, "value":[0.5, 0.5]},

                                            {"time":2.00, "value":[1.0, 1.0]}]

            },  //0到1

            "rotate":{

                "value":180,

                "keyframeSet":[{"time":0.00, "value":180},

                                            {"time":2.00, "value":360}]

            },  //  0到360

            "alpha":{

                "value":100,

                "keyframeSet":[{"time":0.00, "value":100},

                                            {"time":2.00, "value":0}]

            },  // 0到100

            "effectSet":{

                    "effect1":{

                            "name": "fastBlur",

                            "blurRadius":10

                      },

                      "effect2":{

                            "name": "llluminate",

                            "value":10

                      }

            }

        }

        "layer1": {

            "name": "Layer1Name",

            "during":0.00,

            "startTime":0.00,  //开始时间

            "endTime":0.00,  //结束时间

            "effectsNum":2,

            "anchorPoint":{

                "value":[100.00, 100.00],

                "keyframeSet":[{"time":0.00, "value":[100, 100]},

                                            {"time":2.00, "value":[200, 200]}]

            },

            "position":{

                "value":[100.00, 100.00],

                "keyframeSet":[{"time":0.00, "value":[100, 100]},

                                            {"time":2.00, "value":[200, 200]}]

            },

            "scale":{

                "value":[0.5, 0.5],

                "keyframeSet":[{"time":0.00, "value":[0.5, 0.5]},

                                            {"time":2.00, "value":[1.0, 1.0]}]

            },  //0到1

            "rotate":{

                "value":180,

                "keyframeSet":[{"time":0.00, "value":180},

                                            {"time":2.00, "value":360}]

            },  //  0到360

            "alpha":{

                "value":100,

                "keyframeSet":[{"time":0.00, "value":100},

                                            {"time":2.00, "value":0}]

            },  // 0到100

            "effectSet":{

                    "effect1":{

                            "name": "fastBlur",

                            "blurRadius":10

                      },

                      "effect2":{

                            "name": "llluminate",

                            "value":10

                      }

            }

          }

    }

"composite1":{

  。。。。//同上

  }

}

6.代码验证

修改代码进行输出结果:

实际验证得到的结果
实际验证得到的结果

7.按照Json格式进行输出

根据上面我们定义好对格式,将整个合成的图层信息进行输出,保存为我们需要的json格式。我们下一步要做的是回到APP中,将此输出进行shader的定义或者组装,完成整个流程。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概要
  • 2.SDK中的一些重要概念和API
  • 3.AE基本转场的效果设计
  • 4.工程中加入JsonCpp库
  • 5.定义Json格式
  • 6.代码验证
  • 7.按照Json格式进行输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档