介绍
选择项目面板的序列图层,创建对应持续时长的合成,并且添加效果,然后再合成
思路
1.遍历选择项目
2.基于单项素材创建一个合成A,该合成添加对应的素材图层
3.再创建合成B,把合成A丢进去
4.给合成A添加属性,再更改属性值
新增
V1.1
可以基于图片创建,此时使用首选项的默认导入时间
会把所有合成放入目标文件夹内
源码 V1.1
/**
* 作者:yueli
* 源码:https://www.yuelili.com/?p=18010
*/
var panelGlobal = this;
var palette = (function () {
// UI 构建
// =======
var palette = (panelGlobal instanceof Panel) ? panelGlobal : new Window("palette");
if (!(panelGlobal instanceof Panel)) palette.text = "序列创建合成";
palette.orientation = "row";
palette.alignChildren = ["center", "top"];
palette.spacing = 10;
palette.margins = 16;
var create = palette.add("button", undefined, undefined, { name: "create" });
create.helpTip = "选择一个素材,然后单击";
create.text = "创建合成";
create.preferredSize.width = 80;
create.onClick = create_it
// 主函数功能区
function create_it() {
var selItems = app.project.selection
// 判断是否选择项目
if (selItems.length === 0) {
alert("请在项目面板选择至少一个序列")
} else {
app.beginUndoGroup("pre comp")
app.preferences.saveToDisk()
app.preferences.reload()
var still_time = app.preferences.getPrefAsString("Main Pref Section v2", 'Pref_DEFAULT_STILL_OUT_POINT v2', PREFType.PREF_Type_MACHINE_INDEPENDENT);
STILL_TIME = still_time.slice(0, still_time.indexOf("/"))
var trg_folder = app.project.items.addFolder("cell comp")
for (var i = 0; i < selItems.length; i++) {
var layer = selItems[i];
if (layer.duration) {
dura = layer.duration
} else {
dura = STILL_TIME / 30
}
if (layer.frameRate) {
fram = layer.frameRate
} else {
fram = 24
}
if (layer.pixelAspect) {
pixe = layer.pixelAspect
} else {
pixe = 1
}
var nnm
if (layer.name.indexOf("[") + 1) {
nnm = layer.name.slice(0, layer.name.indexOf("["))
} else {
nnm = layer.name
}
// 创建里合成
var comp = app.project.items.addComp(nnm + "_", layer.width, layer.height, pixe, dura, fram)
// 添加素材图层
comp.layers.add(layer)
// 创建外合成
var comp2 = app.project.items.addComp(nnm, layer.width, layer.height, pixe, dura, fram)
// 添加里合成
comp2.layers.add(comp)
comp.parentFolder = trg_folder
comp2.parentFolder = trg_folder
// 里合成添加效果并更改值
var effect = comp2.layer(1).property("ADBE Effect Parade").addProperty("ADBE Color Key");
var colorProperty = effect.property(1)
colorProperty.setValue([1, 1, 1, 1])
}
app.endUndoGroup()
}
}
palette.layout.layout(true);
palette.layout.resize();
palette.onResizing = palette.onResize = function () { this.layout.resize(); }
if (palette instanceof Window) palette.show();
return palette;
}());