【脚本案例】基于选择的item创建相同合成,添加效果

介绍

选择项目面板的序列图层,创建对应持续时长的合成,并且添加效果,然后再合成

【脚本案例】基于选择的item创建相同合成,添加效果

思路

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;

}());

给TA充电
共{{data.count}}人
人已充电
AE开发脚本开发

【脚本案例】批量修改合成以及子合成信息

2021-9-29 16:20:26

AE开发脚本开发

【脚本案例】导入预设文件 修改合成尺寸

2021-9-30 3:49:04

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索