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的定义或者组装,完成整个流程。
网友评论