【脚本案例】选择摄像机,创建空对象并绑定

介绍

选择一个摄像机,单击创建,可以创建2个空对象,分别绑定兴趣点和位置

空对象名称请在“自定义空对象名称”处自行更改

源码 V1.1


/**
 * 名称:摄像机一键绑定空对象
 * 功能:选择一个摄像机,单击创建,可以创建2个空对象,分别绑定兴趣点和位置
 * 源码:https://www.yuelili.com/?p=18041
 * 1.1 新增摄像机景深开关,放在 兴趣点图层空对象上
 * 1.0
 */

var panelGlobal = this;
var palette = (function () {

    // 自定义空对象名称
    var CAM_POS = "CAM_POS"  // 摄像机位置
    var CAM_POI = "CAM_POI"  // 摄像机兴趣点
    var DOF_NAME = "DOF"    // 摄像机景深

    // 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 cam_btn = palette.add("button", undefined, undefined, { name: "" });
    cam_btn.helpTip = "";  // 小提示
    cam_btn.text = "创建";
    cam_btn.preferredSize.width = 80;
    cam_btn.onClick = cam_it

    // 主函数
    function cam_it() {

        app.beginUndoGroup("cam it");
        var cam_layer = app.project.activeItem.selectedLayers[0]

        if (cam_layer && cam_layer("ADBE Camera Options Group")) {

            var layer1 = app.project.activeItem.layers.addNull()
            layer1.threeDLayer = true
            layer1.name = CAM_POI

            var layer2 = app.project.activeItem.layers.addNull()
            layer2.threeDLayer = true
            layer2.name = CAM_POS

            var DOF = cam_layer.property("ADBE Camera Options Group").property("ADBE Camera Depth of Field")
            var DOF_Control= layer1.property("ADBE Effect Parade").addProperty("ADBE Checkbox Control")
            DOF_Control.name = DOF_NAME + " CONTROL"

            cam_layer.property("ADBE Transform Group").property(1).expression = 'thisComp.layer("' + layer1.name + '").transform.position'
            cam_layer.property("ADBE Transform Group").property("ADBE Position").expression = 'thisComp.layer("' + layer2.name + '").transform.position'
            DOF.expression = 'thisComp.layer("' + CAM_POI + '").effect("' + DOF_NAME +  ' CONTROL")(1)'

        } else {
            alert("请选择一个摄像机")
        }
        app.endUndoGroup();
    }

    // UI 结尾
    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-10-1 22:13:04

AE开发脚本开发

【脚本案例】渲染指定图层 rd_Render Layers

2021-10-2 9:17:49

2 条回复 A文章作者 M管理员
  1. 不要搞事不要搞事烦不烦

    有没有办法实现:一个作为子级的摄像机的目标点被另一个作为子级的空对象所真实控制呢~类似C4D-Null下层级的摄像机添加目标标签,以实现跟随并盯着~

个人中心
今日签到
搜索