查看完整视频
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

积分观看

支付积分后查看完整视频

{{user.role.value}}
付费视频

支付完成后查看完整视频

¥{{user.role.value}}
专属视频

只允许以下等级用户查看该视频

升级
会员专享

视频选集

【AE脚本】路径反向 | JimWho | 开源

  • 视频介绍
  • 视频选集
  • 交流讨论

https://www.bilibili.com/video/BV12q4y1P77w/

AE脚本 – 路径反向

ReversePath 没有UI直接使用

ReversePath-UI  在Kbar打开是不带UI的,其他情况是有个按钮界面

支持选中关键帧反向,不选中是全部反向

//author: Charles Bordenave (www.nabscripts.com)(https://aescripts.com/reversemaskpath/)
//modified by JimWho (https://space.bilibili.com/3345602)

(function(thisobj) {

function main(){
var thisComp = app.project.activeItem;
var props = thisComp.selectedProperties;

if (props.length < 1) {
    alert("Please select at least one Path !")
}

app.beginUndoGroup("Reverse Shape");
for (var i = 0; i < props.length; i++){
var isShapePath = matchMatchName(props[i],"ADBE Vector Shape - Group");
var isMaskPath =  props[i].isMask;
if (isShapePath || isMaskPath) {

    if (props[i].isMask){
        var selpath = props[i].maskPath;
    }else{
        var selpath = props[i].path;
    }

    if (selpath.numKeys == 0){
        var myshape = selpath.value;
        selpath.setValue(ReverseShape(myshape));
    }else{
        var keyTimes = new Array();
        var shapes = new Array();       

        if (selpath.selectedKeys.length == 0){
            for (var k = 1; k <= selpath.numKeys; k++)
            {
                var keyTime = selpath.keyTime(k);
                var shape = selpath.valueAtTime(keyTime, false);
                keyTimes.push(keyTime);
                shapes.push(ReverseShape(shape));
            }
            selpath.setValuesAtTimes(keyTimes, shapes);
        }else{
            for (var k = 1; k <= selpath.numKeys; k++)
            {
                if (selpath.keySelected(k))
                {
                    var keyTime = selpath.keyTime(k);
                    var shape = selpath.valueAtTime(keyTime, false);
                    keyTimes.push(keyTime);
                    shapes.push(ReverseShape(shape));
                }
            }
            selpath.setValuesAtTimes(keyTimes, shapes);
        }

        //no keys selected, change only first key
        //var shape = selpath.keyValue(1);
        //selpath.setValueAtKey(1, ReverseShape(shape));

    }
}}
app.endUndoGroup();
}

function matchMatchName(targetEffect, matchNameString) {
    if (targetEffect != null && targetEffect.matchName === matchNameString) {
        return targetEffect
    } else {
        return null
    }
}

function ReverseArray(arr) {
    arr.reverse();
    return arr
}

function ReverseShape(shape) {

    var newVerts = ReverseArray(shape.vertices);
    var newInTang = ReverseArray(shape.outTangents);
    var newOutTang = ReverseArray(shape.inTangents);

    if (shape.closed == true) {
        newVerts.unshift(newVerts.pop());
        newInTang.unshift(newInTang.pop());
        newOutTang.unshift(newOutTang.pop());
    }

    shape.vertices = newVerts;
    shape.inTangents = newInTang;
    shape.outTangents = newOutTang;

    return shape;
}

if (typeof kbar !== "undefined" && kbar.button) {
    main();
} else {
    UIPanel(thisobj);
}

function UIPanel(thisobject){
    var win = thisobject instanceof Panel ? thisobject : new Window("palette", "Reverse Path", undefined, { resizeable: true });
    //win.orientation = "row";
    win.alignChildren = ["center", "center"];;
    button = win.add("button", undefined, "Reverse Path");
    button.onClick = function(){
        main();
    } 

    win.onResizing = win.onResize = function() {this.layout.resize();};
    if (win instanceof Window) {
        win.center();
        win.show();
    } else {
        win.layout.layout(true);
        win.layout.resize();
    }
}

})(this);

给TA充电
共{{data.count}}人
人已充电
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索