//=========================================Build UI========================================= SuperRender_BuildUI(this);

function SuperRender_BuildUI(thisObj) {

//==============================Set MainPaletteUI=========================================================
var pal = (thisObj instanceof Panel) ? thisObj : new Window('palette', 'Template', undefined, { resizable: true });
if (pal != null) {
    var res =
        'group { \n            orientation:'column', alignment:['center','top'], \n            copyGrp: Panel { text: '模板复制', orientation: 'column', \n                tempGrp: Group {orientation: 'row',  \n                    alignment: ['left','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    label: StaticText { text:'模板名:' }, \n                    edit: EditText { text:'制作模板', preferredSize:[175,17] }, \n                    }, \n                itemGrp: Group {orientation: 'row',  \n                    alignment: ['left','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    label: StaticText { text:'文件名:' }, \n                    edit: EditText { text:'sp_X02_', preferredSize:[175,17] }, \n                    }, \n                countGrp: Group {orientation: 'row',  \n                    alignment: ['left','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    label: StaticText { text:'计算名:' }, \n                    edit: EditText { text:'js_X02_', preferredSize:[175,17] }, \n                    }, \n                fpsGrp: Group {orientation: 'row',  \n                    alignment: ['left','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    label: StaticText { text:'帧    率:' }, \n                    edit: EditText { text:'30', preferredSize:[55,17] }, \n                    check1: Checkbox {text:'跟踪'}, \n                    check2: Checkbox {text:'自动保存'}, \n                    }, \n                controlGrp: Group {orientation: 'row', \n                    alignment: ['right','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    check0: Checkbox {text:'报错'}, \n                    check1: Checkbox {text:'视窗'}, \n                    createBtn: Button { text:'开始复制',justify:'center', alignment:['right','top']}, \n                    }, \n              }, \n            makeGrp: Panel { text: '导入合成', orientation: 'column', \n                getPathGrp: Group {orientation: 'row',  \n                    alignment: ['left','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    importBtn: Button { text:'导  入', alignment:['left','top'], preferredSize:[49,20]  }, \n                    getPathEdit: EditText { text:'输入路径', preferredSize:[175,17] }, \n                    }, \n                itemGrp: Group {orientation: 'row',  \n                    alignment: ['left','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    label1: StaticText { text:'文件名:' }, \n                    edit1: EditText { text:'zq_', preferredSize:[55,17] }, \n                    label2: StaticText { text:'    计算名:' }, \n                    edit2: EditText { text:'js_', preferredSize:[55,17] }, \n                    }, \n                alphaGrp: Group {orientation: 'row',  \n                    alignment: ['left','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    label1: StaticText { text:'通道名:' }, \n                    edit1: EditText { text:'af_', preferredSize:[55,17] }, \n                    label2: StaticText { text:'    透明值:' }, \n                    edit2: EditText { text:'40', preferredSize:[55,17] }, \n                    }, \n                controlGrp: Group {orientation: 'row', \n                    alignment: ['right','center'], \n                    spacing: 2,\n                    alignChildren:['fill','center'],\n                    makeBtn: Button { text:'开始合成',justify:'center', alignment:['right','top']}, \n                    }, \n              }, \n	    '};
    pal.grp = pal.add(res);
    //------------------------------------------------------------Set PalProperty---------------------------------------------------------------------------
    var winGfx = pal.graphics;
    var darkColorBrush = winGfx.newPen(winGfx.BrushType.SOLID_COLOR, [0, 0, 0], 1);

    pal.grp.makeGrp.controlGrp.makeBtn.preferredSize.width =
        pal.grp.copyGrp.controlGrp.createBtn.preferredSize.width = 80;
    pal.grp.makeGrp.controlGrp.makeBtn.preferredSize.height =
        pal.grp.copyGrp.controlGrp.createBtn.preferredSize.height = 30;
    //pal.grp.renderGrp.controlGrp.margins.top += 5;    
    pal.layout.layout(true);
    pal.grp.minimumSize = pal.grp.size;
    pal.layout.resize();
    pal.onResizing = pal.onResize = function () { this.layout.resize(); }
    pal.grp.copyGrp.controlGrp.check0.value = true;
    pal.grp.copyGrp.controlGrp.check1.value = true;
    pal.grp.copyGrp.controlGrp.createBtn.onClick = function () {
        var isErro = this.parent.check0.value;
        var erro = String($.line);
        try {
            var compFolder = 'CompFolder';
            //var sizeW = Number(pal.grp.copyGrp.sizeGrp.editW.text);
            //var sizeH = Number(pal.grp.copyGrp.sizeGrp.editH.text);
            var tempName = pal.grp.copyGrp.tempGrp.edit.text;
            erro = String($.line);
            var itemName = pal.grp.copyGrp.itemGrp.edit.text;
            var countName = pal.grp.copyGrp.countGrp.edit.text;
            var fps = Number(pal.grp.copyGrp.fpsGrp.edit.text);
            erro = String($.line);
            if (NoItem(compFolder, FolderItem)) {
                app.project.items.addFolder(compFolder);
            }
            var tempComp = FindItem(tempName, CompItem);
            erro = String($.line);
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            var selectedItems = app.project.selection;
            if (selectedItems.length != 0 && tempComp) {
                for (var i = 0; i < selectedItems.length; i++) {
                    var item = selectedItems[i];
                    if (item instanceof FootageItem && item.name.match(itemName)) {
                        erro = String($.line);
                        var n = item.name; var w = item.width; var h = item.height;
                        var p = item.pixelAspect; var d = item.duration;
                        //var f = item.mainSource.conformFrameRate;
                        //var f = item.frameRate;
                        erro = String($.line);
                        try { item.mainSource.conformFrameRate = fps; }
                        catch (err) { n = item.name.substring(0, item.name.length - 4); }

                        var itemId = n.replace(itemName, '');
                        var countItem = FindItem(countName + itemId, FootageItem);
                        var compName = n.replace('.mov', '');
                        compName = compName.replace('.mp4', '');
                        compName += '_Comp';
                        erro = String($.line);
                        RemoveComp(compName);
                        var itemComp = app.project.items.addComp(compName, w, h, p, d, fps);
                        erro = String($.line);
                        itemComp.parentFolder = FindItem(compFolder, FolderItem);
                        //itemComp.bgColor = bg; 
                        itemComp.duration = d;

                        for (var j = tempComp.layers.length; j > 0; j--) {
                            if (!tempComp.layers[j].name.match(itemName) && !tempComp.layers[j].name.match(countName)) {
                                tempComp.layers[j].copyToComp(itemComp);
                            }
                            else {
                                if (tempComp.layers[j].name.match(itemName)) {
                                    itemComp.layers.add(item);
                                }
                                if (tempComp.layers[j].name.match(countName)) {
                                    var countLayer = itemComp.layers.add(countItem);
                                    EffectInnerKey(countLayer, isErro);
                                    EffectLeves(countLayer, isErro);
                                    EffectRSMB(countLayer, isErro);
                                    EffectNoise(countLayer, isErro);
                                    countLayer.trackMatteType = TrackMatteType.ALPHA;
                                }
                            }
                        }// for(var j = 1; j <= tempComp.length; j++){
                        erro = String($.line);
                        var layerHide = itemComp.layers.add(item);
                        layerHide.enabled = false;
                        if (this.parent.check1.value) {
                            try { itemComp.openInViewer(); }
                            catch (err) { }
                        }
                    }// if (item instanceof FootageItem && item.name.match (itemName)){                    }// for (var i = 0; i < selectedItems.length; i++){                }// if (selectedItems.length != 0 && tempComp){            }            catch (e) { if (isErro) { alert(erro); } }        }// pal.grp.copyGrp.controlGrp.createBtn.onClick = function (){        var lastImportPath = ReadlnToText('/EffectBackup/LastImportPath.txt')[0];        if (lastImportPath) { pal.grp.makeGrp.getPathGrp.getPathEdit.text = lastImportPath; }        pal.grp.makeGrp.getPathGrp.importBtn.onClick = function () {
        var fps = Number(pal.grp.copyGrp.fpsGrp.edit.text);
        var defaultFolder = this.parent.getPathEdit.text;
        if (!Folder('/EffectBackup').exists) { CreateFolder('/EffectBackup'); }
        WriteReport('/EffectBackup/LastImportPath.txt', defaultFolder);
        var baseFolder = ImportFiles(defaultFolder, fps);
        var baseFolders = WriteFolderName(defaultFolder, true);
        for (var i = 0; i < baseFolders.length; i++) {
            ImportFiles(defaultFolder + '/' + baseFolders[i], fps).parentFolder = baseFolder;
        }
    }// pal.grp.r5.outFolderPath.onClick = function ()
    pal.grp.makeGrp.controlGrp.makeBtn.onClick = function () {
        var isErro = pal.grp.copyGrp.controlGrp.check0.value;
        var erro = String($.line);
        try {
            var compFolder = 'CompFolder';
            var itemName = pal.grp.makeGrp.itemGrp.edit1.text;
            var countName = pal.grp.makeGrp.itemGrp.edit2.text;

            var alphaName = pal.grp.makeGrp.alphaGrp.edit1.text;
            var opa = Number(pal.grp.makeGrp.alphaGrp.edit2.text);

            var fps = Number(pal.grp.copyGrp.fpsGrp.edit.text);
            erro = String($.line);
            if (NoItem(compFolder, FolderItem)) {
                app.project.items.addFolder(compFolder);
            }
            erro = String($.line);
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            var selectedItems = app.project.selection;
            if (selectedItems.length != 0) {
                for (var i = 0; i < selectedItems.length; i++) {
                    var item = selectedItems[i];
                    if (item instanceof FootageItem && item.name.match(itemName)) {
                        erro = String($.line);
                        var n = item.name; var w = item.width; var h = item.height;
                        var p = item.pixelAspect; var d = item.duration;
                        //var f = item.mainSource.conformFrameRate;
                        //var f = item.frameRate;
                        erro = String($.line);
                        try { item.mainSource.conformFrameRate = fps; }
                        catch (err) { n = item.name.substring(0, item.name.length - 4); }

                        var itemId = n.replace(itemName, '');
                        var countItem = FindItem(countName + itemId, FootageItem);
                        var alphaItem = FindItem(alphaName + itemId, FootageItem);
                        var compName = n.replace('.mov', '');
                        compName = compName.replace('.mp4', '');
                        compName += '_Comp';
                        erro = String($.line);
                        RemoveComp(compName);
                        var itemComp = app.project.items.addComp(compName, w, h, p, d, fps);
                        erro = String($.line);
                        itemComp.parentFolder = FindItem(compFolder, FolderItem);
                        //itemComp.bgColor = bg; 
                        itemComp.duration = d;
                        erro = String($.line);
                        var layerItem = itemComp.layers.add(item);
                        var layerAlp1 = itemComp.layers.add(alphaItem);
                        var layerCount = itemComp.layers.add(countItem);
                        var layerAlp2 = itemComp.layers.add(alphaItem);

                        layerItem.trackMatteType = TrackMatteType.LUMA;
                        layerCount.trackMatteType = TrackMatteType.LUMA;
                        layerCount.transform.opacity.setValue(opa);
                        //layerHide.enabled = false;
                        if (pal.grp.copyGrp.controlGrp.check1.value) {
                            try { itemComp.openInViewer(); }
                            catch (err) { }
                        }
                    }// if (item instanceof FootageItem && item.name.match (itemName)){                    }// for (var i = 0; i < selectedItems.length; i++){                }// if (selectedItems.length != 0 && tempComp){            }            catch (e) { if (isErro) { alert(erro); } }        }// pal.grp.copyGrp.controlGrp.createBtn.onClick = function (){    }
return pal;

}

function ImportFiles(defaultFolder, fps) {

var folderNames = defaultFolder.split('/');
var folderName = folderNames[folderNames.length - 1];
var baseFolder = FindItem(folderName, FolderItem);
if (!baseFolder) { baseFolder = app.project.items.addFolder(folderName); }
var baseFiles = WriteFolderName(defaultFolder, false);
var baseSqFiles = [];
for (var i = 0; i < baseFiles.length; i++) {
    if (baseFiles[i].match('0001.png') || baseFiles[i].match('0001.jpg')) { baseSqFiles.push(baseFiles[i]); }
}
for (var i = 0; i < baseSqFiles.length; i++) {
    var baseFilePath = defaultFolder + '/' + baseSqFiles[i];
    //var fileItemStr = folderName + '/' + baseSqFiles[i] + ','
    var isImport = true;
    for (var j = 1; j <= app.project.numItems; j++) {
        var item = app.project.item(j);
        if (item instanceof FootageItem && baseSqFiles[i].match(item.name)) {
            isImport = false;
        }
    }
    if (isImport) { ImportTexture(baseFilePath, fps).parentFolder = baseFolder; }
}
return baseFolder;

}

function SetBlendingMode(modeID) { var blendingMode = BlendingMode.ADD; if (modeID == 0) { blendingMode = BlendingMode.NORMAL; } else if (modeID == 1) { blendingMode = BlendingMode.ADD; } else if (modeID == 2) { blendingMode = BlendingMode.SCREEN; } else if (modeID == 3) { blendingMode = BlendingMode.OVERLAY; } else if (modeID == 4) { blendingMode = BlendingMode.MULTIPLY; }

return blendingMode;

}

function MatchItem(name, type) { for (var i = 1; i <= app.project.numItems; i++) { var item = app.project.item(i); if (name.match(item.name) && item instanceof type) { return true; } } return false; }

function NoItem(name, type) { for (var i = 1; i <= app.project.numItems; i++) { var item = app.project.item(i); if (item.name == name && item instanceof type) { return false; } } return true; }

function FindItem(name, type) { for (var i = 1; i <= app.project.numItems; i++) { var item = app.project.item(i); if (item.name == name && item instanceof type) { return item; } } return null; }

function RemoveEmptyComp() { var emptyComp = []; for (var i = 1; i <= app.project.numItems; i++) { var item = app.project.item(i); if (item instanceof CompItem) { if (item.layers.length == 0) { emptyComp.push(item.name); } else { var isHide = true; for (var j = 1; j <= item.layers.length; j++) { if (item.layers[j].enabled) { isHide = false; } } if (isHide) { emptyComp.push(item.name); } } } } for (var i = 0; i < emptyComp.length; i++) { var item = FindItem(emptyComp[i], CompItem); if (item) { item.remove() } } }

function RemoveComp(name) { var item = FindItem(name, CompItem); if (item) { item.remove(); } }

function EffectInnerKey(layer, isErro) { var erro = String($.line); try { var effect = layer.effect.addProperty('Inner/Outer Key'); } catch (e) { if (isErro) { alert('滤镜报错nner/Outer Key! ' + erro); } } }

function EffectLeves(layer, isErro) { var erro = String($.line); try { var effect = layer.effect.addProperty('Levels'); } catch (e) { if (isErro) { alert('滤镜报错Levels! ' + erro); } } }

function EffectRSMB(layer, isErro) { var erro = String($.line); try { var effect = layer.effect.addProperty('RSMB Pro'); } catch (e) { if (isErro) { alert('滤镜报错RSMB Pro! ' + erro); } } }

function EffectNoise(layer, isErro) { var erro = String($.line); try { var effect = layer.effect.addProperty('Noise'); } catch (e) { if (isErro) { alert('滤镜报错Noise! ' + erro); } } }

function ImportTexture(filePath, f) { var io = new ImportOptions(File(filePath)); io.sequence = true; var mySeq = app.project.importFile(io); mySeq.mainSource.alphaMode = AlphaMode.STRAIGHT; try { mySeq.mainSource.conformFrameRate = f; } catch (err) { } var name = mySeq.name; name = name.split('.[')[0]; name = name.split('_')[0]; name = name.split('[')[0]; mySeq.name = name; return mySeq; }

function WriteFolderName(path, isFolder) { var effectPath = '/EffectBackup/ListTxt' + path.replace(Folder(path).parent.fsName, '') + '/'; if (!Folder(effectPath).exists) { CreateFolder(effectPath); } var pathText = effectPath + (isFolder ? 'folderList' : 'fileList') + '.txt'; var cmd = 'ls -l ' + ''' + path + ''' + (isFolder ? '/ | grep '^d' >' : '/ | grep -v '^d' >') + ''' + pathText + '''; system.callSystem('bash -c '' + cmd + '''); var texts = ReadlnToText(pathText); return texts; }

function WriteReport(path, poss) { var reportFile = new File(path); if (reportFile.exists) { reportFile.open('W'); reportFile.write(poss); reportFile.close(); } else { var RCF_file = new File(reportFile); RCF_file.open('w'); RCF_file.write(poss); RCF_file.close(); } }

function ReadlnToText(path) { var myFile = new File(path); var texts = []; if (myFile != null) { var fileOK = myFile.open('r'); if (fileOK) { while (!myFile.eof) { var text = myFile.readln(); texts.push(text); } } myFile.close(); } return texts; }

function CreateFolder(path) { var cmd = 'mkdir -p ' + path; system.callSystem('bash -c '' + cmd + '''); }

SuperRender_BuildUI: 模板复制和导入合成脚本 (MacOS版本)

原文地址: https://www.cveoy.top/t/topic/YOl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录