一个强大的 After Effects 空对象控制器脚本
Advanced Null Controller 是一个专为 After Effects 设计的高级空对象控制器脚本,它能帮助您更高效地管理图层动画。通过智能的控制器系统和灵活的表达式,让您的动画制作更加便捷。
- 当前版本:v2.1 (2024.03.27)
- 仓库地址:
- 支持版本:After Effects CS6 及以上版本
- 开源协议:MIT
- 作者:烟囱
- 选择目标图层
- 运行脚本
Advanced Null Controller 2.1.jsx - 选择控制属性(旋转、缩放、不透明度)
- 点击"开搞"创建控制器
- 双击面板空白区域:全选所有属性复选框
- 右键点击复选框:单选该属性
- 右键点击"开搞":切换到仅表达式模式
- 右键点击"取消":切换到清除控制器模式
- Ctrl+点击"层层空":空对象置于合成顶部
- Shift+点击"选择子级":保留当前选择并添加子级
-
智能空对象创建
- 自动在所选图层中心位置创建控制器
- 支持多图层批量创建
- 智能层级管理系统
- 自动处理锁定图层
-
灵活属性控制
- 位置控制(自动居中)
- 旋转控制(可选)
- 缩放控制(可选)
- 不透明度控制(可选)
-
多层级控制系统
- 基础控制器:直接控制单个图层
- 子控制器:控制一组相关图层
- 总控制器:统一管理所有子级
- 智能层级关系维护
-
智能表达式系统
- 独立旋转控制
- 独立缩放控制
- 联动不透明度控制
- 仅表达式模式支持
- 表达式清除功能
-
整体控制功能
- 自动查找未控制图层
- 批量创建控制器
- 智能位置计算
- 层级关系优化
-
层层空功能
- 为每个选中图层创建独立的父级空对象
- 智能处理2D/3D图层的属性匹配
- 默认空对象位于原图层上方(保持层级顺序)
- Ctrl+点击放置在合成顶部
- 完整保留原始父级关系链
- 自动选中所有新创建的空对象
- 支持批量处理多个图层
-
选择子级功能
- 智能分析图层间的父子关系
- 快速选择当前图层的所有直接子级
- Shift+点击保留当前选择并添加子级
- 提高复杂层级结构的工作效率
- 支持多父级图层的子级批量选择
- 方便进行层级结构的批量处理
主要控制器创建函数,负责:
- 分析选中图层的位置和属性
- 创建空对象控制器
- 设置父子关系
- 应用表达式链接
控制器清除函数,功能包括:
- 识别现有控制器关系
- 保留当前变换值
- 移除表达式链接
- 清理层级关系
表达式设置函数,实现:
- 根据选择的属性生成表达式
- 应用到目标图层
- 处理特殊属性的表达式逻辑
- 支持多层级表达式传递
中心位置计算函数:
- 分析多个图层的位置
- 计算几何中心点
- 处理3D图层特殊情况
- 返回最优控制器位置
锁定图层处理函数:
- 临时解锁目标图层
- 应用控制器操作
- 恢复图层锁定状态
- 确保操作安全性
层层空功能核心函数:
- 为每个选中图层单独创建父级空对象
- 支持两种放置模式:原图层上方 / 合成顶部
- 智能处理2D/3D图层属性匹配
- 完整保留图层原有父级关系链
- 自动按图层索引排序处理,避免层级混乱
- 包含详细的调试日志系统
- 错误处理和图层有效性验证
- 自动选中所有新创建的空对象
选择子级功能核心函数:
- 智能分析合成中所有图层的父子关系
- 快速选择当前选中图层的所有直接子级
- 支持保留当前选择(Shift键)或替换选择
- 支持多父级图层的子级批量选择
- 提高复杂多层级结构的处理效率
- 包含详细的操作日志和错误处理
脚本采用高精度的空间计算系统,确保控制器位置精确:
- 支持2D和3D空间计算
- 考虑图层锚点偏移
- 处理嵌套合成中的坐标转换
- 优化多图层选择时的位置计算
表达式系统基于After Effects的表达式引擎,实现了:
- 相对变换计算
- 层级传递机制
- 属性独立控制
- 表达式优化,减少性能开销
// 实际使用的表达式代码(基于脚本v2.1)
// 旋转控制表达式(2D图层)
value - parent.transform.rotation
// Z旋转控制表达式(3D图层)
value - parent.transform.zRotation
// 缩放控制表达式(智能处理零值)
s = [];
parentScale = parent.transform.scale.value;
for (i = 0; i < parentScale.length; i++){
s[i] = (parentScale[i]== 0) ? 0 : value[i]*100/parentScale[i];
}
s
// 不透明度控制表达式(考虑父级启用状态)
hasParent?parent.transform.opacity*parent.enabled:value脚本实现了智能的层级管理系统:
- 避免循环依赖
- 优化渲染顺序
- 维护逻辑层级关系
- 支持复杂的控制器嵌套
| 按钮 | 左键点击 | 右键点击 | 特殊操作 |
|---|---|---|---|
| 开搞 | 创建控制器 | 切换到仅表达式模式 | 面板保持打开 |
| 取消 | 关闭面板 | 切换到清除控制器模式 | 清除模式下不关闭面板 |
| 帮助 | 查看使用说明 | - | 显示详细帮助面板 |
| 层层空 | 创建独立空对象 | - | Ctrl+点击:置于合成顶部 |
| 选择子级 | 选择直接子级 | - | Shift+点击:保留当前选择 |
| 整体控制 | 创建/查找整体控制器 | - | 智能模式切换 |
| 操作 | 功能 | 说明 |
|---|---|---|
| 左键点击 | 切换选中状态 | 标准复选框操作 |
| 右键点击 | 单选模式 | 仅选中当前项,取消其他 |
| 双击面板空白 | 全选模式 | 选中所有属性复选框 |
-
总控制
- 右键点击激活
- 创建总控制器
- 统一管理所有子级
-
子控制
- 右键点击激活
- 创建子级控制器
- 精细控制单个元素
-
整体控制
- 自动查找未控制图层
- 批量创建控制器
- 智能位置计算
-
层层空
- 为每个选中图层创建独立空对象
- 默认空对象位于原图层上方
- CTRL+点击放置在合成顶部
- 保留原始父级关系
-
选择子级
- 快速选择所有子级图层
- Shift+点击保留当前选择
- 提高复杂层级结构工作效率
- 方便批量处理相关图层
-
多层级控制策略
- 使用总控制器实现整体动画控制
- 通过子控制器实现精细的单个元素调整
- 合理组合不同层级的控制器实现复杂动画
-
表达式模式的高级应用
- 利用表达式模式为现有控制器添加新属性
- 在不增加图层数量的情况下扩展控制功能
- 结合自定义表达式实现特殊控制效果
-
工作流程优化
- 使用"层层空"功能快速为复杂场景建立控制结构
- 利用"选择子级"功能高效管理层级关系
- 合理使用清除功能重置和重新组织控制关系
- 善用快捷键操作提高工作效率
-
特殊情况处理
- 智能处理锁定图层的临时解锁和恢复
- 处理3D图层的特殊旋转控制需求
- 应对复杂嵌套合成中的坐标转换问题
- 图层分析:分析选中图层的属性和位置
- 空对象创建:在适当位置创建空对象
- 属性链接:通过表达式链接目标属性
- 层级设置:建立合理的父子关系
- 命名规范化:根据功能设置控制器名称
表达式模式下,脚本只添加表达式而不创建实际的空对象:
- 减少合成中的图层数量
- 适用于简单控制需求
- 降低项目复杂度
- 提高渲染性能
清除模式会智能分析现有控制关系:
- 识别表达式控制的属性
- 计算当前实际值
- 移除表达式
- 保留变换状态
- 可选择性地删除控制器
- 检查图层是否被锁定
- 确认表达式是否被禁用
- 验证控制器图层是否可见
- 检查是否有循环依赖
- 脚本完全支持3D图层控制
- 3D旋转需要分别控制X、Y、Z轴
- 建议为3D图层创建专用控制器
- 注意3D空间中的父子关系特性
- 使用表达式模式添加新属性控制
- 创建子控制器实现精细调整
- 利用总控制器统一管理
- 通过表达式编辑自定义控制逻辑
- 合理使用控制器数量
- 避免复杂的表达式链
- 对不需要的控制器设置为隐藏
- 定期清理未使用的控制器
这是v2.1版本的重要新增功能,为每个选中图层创建独立的父级空对象:
核心特性:
- 智能处理2D/3D图层的属性匹配
- 支持两种放置模式:原图层上方(默认)/ 合成顶部(Ctrl+点击)
- 完整保留原始父级关系链,不破坏现有层级结构
- 自动按图层索引排序处理,避免层级混乱
- 包含详细的调试日志系统和错误处理
- 自动选中所有新创建的空对象,便于后续操作
使用场景:
- 为复杂场景快速建立控制结构
- 需要为每个元素独立控制时
- 保持现有层级关系的同时添加控制层
智能的层级关系管理工具:
核心特性:
- 智能分析合成中所有图层的父子关系
- 快速选择当前选中图层的所有直接子级
- 支持Shift+点击保留当前选择或替换选择
- 支持多父级图层的子级批量选择
- 提高复杂多层级结构的处理效率
使用场景:
- 管理复杂的层级结构
- 批量处理相关图层
- 快速定位和选择子级元素
v2.1版本对用户界面进行了全面的现代化改造:
界面改进:
- 重新设计的现代化界面风格
- 新增高级工具面板,功能分类更清晰
- 改进的按钮样式和交互效果
- 增强的工具提示系统,提供详细的操作说明
交互优化:
- 支持右键点击切换功能模式
- 支持Ctrl+点击和Shift+点击快捷操作
- 双击面板空白区域全选功能
- 右键点击复选框单选功能
- 操作前请确保选择正确的图层
- 清除功能会保留当前变换值
- 建议定期保存工程文件
- 遇到问题请通过 Issues 反馈
- 锁定图层需要临时解锁才能创建控制器
- v2.1版本新增功能需要After Effects CS6及以上版本支持
- 使用层层空功能时,建议先备份项目文件
Advanced Null Controller v2.1 的完整工作流程如下:
graph TD
A[启动脚本] --> B[创建UI界面]
B --> C{用户交互}
%% 三大功能分支
C -->|主功能按钮| D[主功能处理]
C -->|高级工具| E[高级工具处理]
C -->|帮助功能| F[显示帮助面板]
%% 主功能分支
D --> G{功能模式选择}
G -->|创建模式| H[创建控制器流程]
G -->|表达式模式| I[仅添加表达式]
G -->|清除模式| J[清除控制器]
%% 高级工具分支
E --> K[层层空功能]
E --> L[选择子级功能]
E --> M[整体控制功能]
%% 创建控制器详细流程
H --> N[图层选择验证]
N -->|通过| O[锁定图层处理]
N -->|失败| P[错误提示]
O --> Q[控制器创建]
Q --> R[表达式应用]
R --> S[操作完成]
%% 高级功能流程
K --> T[为每个图层创建独立空对象]
L --> U[分析并选择子级图层]
M --> V[创建或查找整体控制器]
T --> S
U --> S
V --> S
- 启动阶段:初始化脚本,创建现代化UI界面
- 用户交互:响应各种用户操作和快捷键
- 功能分支:根据用户选择执行不同的功能模块
- 验证处理:智能验证图层选择和处理特殊情况
- 执行操作:执行具体的控制器创建或管理操作
- 完成反馈:提供操作结果反馈和错误处理
| 控制方式 | 渲染性能 | 编辑灵活性 | 适用场景 |
|---|---|---|---|
| 空对象控制 | 中等 | 高 | 复杂动画,多属性控制 |
| 仅表达式 | 高 | 中 | 简单控制,性能敏感项目 |
| 父子链接 | 低 | 低 | 简单位置同步 |
欢迎提交 Issues 和 Pull Requests 来帮助改进这个项目!
-
项目仓库
-
作者社交媒体
-
支持作者
- 爱发电 - 如果觉得脚本有用,可以支持一下作者
- 初始版本发布
- 实现基础控制器功能
- 支持位置、旋转、缩放控制
- 添加多层级控制系统
- 优化表达式性能
- 修复已知bug
- 添加仅表达式模式
- 增强锁定图层处理
- 改进用户界面
-
新增层层空功能
- 为每个选中图层创建独立的父级空对象
- 支持两种放置模式:原图层上方/合成顶部
- 智能处理2D/3D图层属性匹配
- 完整保留原始父级关系链
- 自动选中新创建的空对象
-
新增选择子级功能
- 智能分析图层间的父子关系
- 快速选择当前图层的所有直接子级
- 支持Shift+点击保留当前选择
- 提高复杂层级结构处理效率
-
UI界面全面升级
- 重新设计的现代化界面
- 新增高级工具面板
- 改进的按钮样式和交互效果
- 增强的工具提示系统
-
交互体验优化
- 支持右键点击切换功能模式
- 支持Ctrl+点击和Shift+点击快捷操作
- 双击面板空白区域全选功能
- 右键点击复选框单选功能
-
表达式系统改进
- 优化3D图层的旋转表达式处理
- 改进缩放表达式的零值处理逻辑
- 增强不透明度表达式的父级状态检测
- 更好的表达式错误处理和调试
-
稳定性和性能提升
- 完善的错误处理机制
- 详细的调试日志系统
- 优化的图层处理算法
- 改进的内存管理