通过开发AE的Pugin。我们能够输出有效的信息,其中拆解了每一层的关键信息。我们设计了一个基本的AE转场效果,根据此信息设计了json的格式用于输出。
? ? (1)项目bin中的任何内容都是AEGP_Item,相机没有来源,因此没有AEGP_ItemH;
? ? (2)AEGP_CollectionItems是图层,蒙版,效果,流,蒙版顶点和关键帧项目的联合,我们于是可以从中获取到相关信息
Debug看到的信息
码农一般不会设计软件,这里学些AE的东西也是很不错的一种体验,同时对AE软件渲染对过程,有了比较好了了解。这里简单制作一个图片对过度效果。
(1)新建合成
新建合成
双击左边空白处,导入两张图片,新建一个合成,定义时间10s,宽度和高度1280x720
(2)拖入两个图层,统一缩小时间为5s
添加图层
(3)同时选中两个图层,右键,关键帧辅助,序列图层,不叠加
序列图层
这个时候会顺序排列每个图层,当选中重叠当时候,输入重叠当帧数,下面选择溶解效果。这个时候就可以看到简单当渐变过度效果。
关键帧过度
我们看到实际上是在重叠区域加入了alpha的渐变,开始和结束的位置分别加上了关键帧,
第一个图层alpha从100 到0
第二个图层alpha从0到100??
这样实现了溶解过度的效果。
? ?在插件中用到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());
{
? ? "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":{
? 。。。。//同上
? }
}
修改代码进行输出结果:
根据上面我们定义好对格式,将整个合成的图层信息进行输出,保存为我们需要的json格式。我们下一步要做的是回到APP中,将此输出进行shader的定义或者组装,完成整个流程。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。