Blurrr 父子级绑定与空对象——一个控制节点带动 N 个图层联动动画
什么是空对象
空对象(Null Object)是一个不可见的图层——它没有像素内容,在预览窗口里看不见,但你可以像操作其他图层一样给它打关键帧、做 3D 变换、调运动曲线。
空对象的唯一作用:作为"父节点",通过父子级绑定带动"子图层"一起运动。
为什么需要父子级绑定
假设有 5 个图层需要一起旋转。
不用父子级:给每个图层的旋转参数单独打关键帧 → 5 套关键帧,改一个就得改全部。
用父子级:创建一个空对象 → 把 5 个图层都绑定到空对象下 → 只给空对象的旋转打关键帧 → 5 个图层跟着转,改一次全部生效。
这就是父子级绑定的核心优势——降低关键帧维护成本,避免动画不一致。
操作步骤
创建空对象
1. 时间轴上点击「+」
2. 选择「空对象」(Null Object)
3. 空对象出现在时间轴上,用 ○ 图标表示
4. 默认时长和当前最长图层相同
设置父子级绑定
1. 选中要作为子图层的图层
2. 在属性面板里找到「父子级」选项
3. 从下拉菜单选择要绑定的空对象(或其他图层)
4. 绑定完成后,子图层名称前会出现一个小图标表示已绑定
解除绑定
1. 选中子图层
2. 在属性面板「父子级」选项里选择「无」
父子级的运动传递规则
| 父图层操作 | 子图层表现 |
|---|---|
| 位置移动 | 子图层跟着移动(相对位置不变) |
| 旋转 | 子图层围绕父图层的锚点一起旋转 |
| 缩放 | 子图层跟着父图层一起缩放 |
| 不透明度 | 子图层的实际不透明度 = 父 × 子 |
| 混合模式 | 不传递(子图层保持自己的混合模式) |
关键点:子图层的运动是"继承"父图层的变换。子图层自己也可以有独立的位置 / 旋转 / 缩放关键帧——这些会和父图层的变换叠加计算。
实战场景
场景 1:片头标题组一起飞入
1. 创建一个空对象作为"标题组控制器"
2. 3 个文字图层(主标题 / 副标题 / 日期)都绑定到空对象下
3. 只给空对象打关键帧:
- 位置:从屏幕外 → 屏幕内
- 旋转:从 -5° → 0°
- 不透明度:0% → 100%
4. 3 个文字图层整体飞入,同时可以各自微调位置做错落感
场景 2:粒子围绕一个中心旋转
1. 创建空对象放在画面中心
2. 粒子图层绑定到空对象下
3. 给空对象的 Z 轴旋转打持续关键帧(比如 0° → 360° 在 4 秒内)
4. 粒子层绕着画面中心公转,同时自身也可以有独立运动
场景 3:3D 摄像机跟随空对象
1. 创建空对象放在 3D 空间里
2. 虚拟摄像机「目标点」绑定到空对象
3. 给空对象做 3D 运动关键帧
4. 摄像机的视线自动跟随空对象移动
父子级 vs 直接分组
时间轴里的图层分组(文件夹图标)只是视觉上的整理,不传递任何变换。父子级绑定是真正的运算级绑定——父图层的变换会数学地叠加到子图层上。
两者可以配合使用:
空对象 A(父节点)
├── 视频层 1(子图层)
├── 视频层 2(子图层)
└── 空对象 B(嵌套的父节点)
├── 文字层 1(子图层)
└── 文字层 2(子图层)
嵌套父子级在做复杂动画时非常有用——比如整个场景跟着大空对象移动,同时场景内的元素跟着小空对象单独运动。
注意事项
- 父图层的锚点位置直接影响子图层的旋转中心——调整父图层锚点可以改变旋转的"圆心"
- 3D 空间里父子级的 Z 轴变换也会传递
- Blurrr 目前不支持循环绑定(A 绑 B、B 又绑 A),会自动拦截
- 空对象本身不导出,只作为编辑控制工具存在