美文网首页After Effects
AE流程输出设计

AE流程输出设计

作者: jerryhigh | 来源:发表于2019-01-28 21:49 被阅读10次

    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.按照Json格式进行输出

    修改代码进行输出结果:

    实际验证得到的结果

    7.按照Json格式进行输出

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

    相关文章

      网友评论

        本文标题:AE流程输出设计

        本文链接:https://www.haomeiwen.com/subject/qrrzjqtx.html