-
Notifications
You must be signed in to change notification settings - Fork 3
透视追踪使用手册
适用对象:希望在 Aegisub 内使用 AE CC Power Pin 透视追踪数据完成文字透视跟踪的用户。
- 文中选项名称以界面简体中文为准。
- "透视追踪"对应内部模块
perspective_motion,利用 AE CC Power Pin 导出的角点追踪数据驱动 ASS 字幕的 3D 透视变换。 - "参考帧"是追踪数据中用于计算相对变化的那一帧。
- "\org"指 ASS 标签
\org,即旋转原点。
-
- 认识透视追踪
- 1.1 这是什么
- 1.2 和摩卡追踪有什么区别
- 1.3 支持哪些输入数据
-
- 上手流程
- 2.1 一次完整使用的典型流程
- 2.2 核心概念:参考帧与四边形映射
-
- 主对话框功能详解
- 3.1 数据输入区
- 3.2 透视追踪选项
- 3.3 \org 模式
- 3.4 配置选项
-
- 进阶理解
- 4.1 透视变换管线
- 4.2 参考帧预校正(应用透视)是什么
- 4.3 \org 模式选哪个
-
- 常见问题与快速结论
- 5.1 常见误区
- 5.2 常见问题排查
- 5.3 推荐起步方案
透视追踪(Perspective Motion)是 Aegisub 内的透视跟踪模块,专门处理 Adobe After Effects CC Power Pin 导出的四角追踪数据。它能把每一帧的四边形变形数据应用到 ASS 字幕行上,让字幕呈现和画面一致的三维透视变化。
你可以把它简单理解成:
- 摩卡追踪处理平面运动(位移、缩放、平面旋转)
- 透视追踪处理三维透视(四边形扭曲、透视投影)
两者互补,不是替代关系。
| 维度 | 摩卡追踪 | 透视追踪 |
|---|---|---|
| 输入数据 | TSR (位置/缩放/旋转) 或 SRS (矢量形状) | CC Power Pin(四个角点坐标) |
| 变换类型 | 仿射变换(平移+缩放+旋转) | 透视变换(四边形扭曲) |
| 输出标签 |
\pos, \fscx, \fscy, \frz
|
\pos, \org, \fscx, \fscy, \frz, \frx, \fry, \fax, \fay, \xbord, \ybord, \xshad, \yshad
|
| 典型场景 | 平面跟踪、屏幕贴字 | 三维空间中的平面跟踪、角落固定透视 |
简单来说:如果你要追踪的目标在画面中看起来始终是一个矩形(只是位置、大小、角度在变),用摩卡追踪。如果目标在画面中变成了任意四边形(有透视形变),用透视追踪。
目前只支持一种格式:
Adobe After Effects CC Power Pin 导出数据
即 AE 中给图层添加 CC Power Pin 效果后,从"Edit"菜单复制的关键帧文本。
Power Pin 定义四个角点(左上、右上、右下、左下),每帧记录每个角点的 X/Y 坐标。
数据格式大致如下(具体取决于 AE 版本和导出方式):
Effects CC Power Pin #1 CC Power Pin-0002
Frame X pixels Y pixels
0 100.00 200.00
1 102.50 198.00
...
透视追踪会自动识别四个角点标记(0002=TL, 0003=TR, 0005=BR, 0004=BL),提取每帧的 X/Y 坐标。
数据校验:程序对数据做严格校验,以下情况会判定为无效(对话框状态提示显示"数据格式或文件路径无效",应用时弹窗提示解析失败):
- 四个角点(0002/0003/0005/0004)的 Frame 列不一致或不是严格递增(例如只重新追踪了部分 Pin 导致帧号错位)
- 数据块中间出现空行后再接数据行(截断或拼接损坏)
- 坐标不是有限数值(NaN/Inf)或数值不完整
建议:在 AE 中复制数据前,确认四个 Pin 的关键帧范围一致。
数据输入框也支持直接粘贴文件路径,程序会读取文件内容再解析。
- 在
After Effects或Mocha中给目标图层添加 CC Power Pin 效果 - 在目标画面的四个角各放置一个 Pin
- 在目标运动的时间范围内给四个 Pin 打关键帧
- 选中所有关键帧,复制(Ctrl+C)
选中你要应用透视追踪的字幕行(一行或多行)。
程序会计算这些行覆盖的总帧范围,并用这个范围来校验数据长度。
选中行后,右键菜单 → 应用透视追踪。
对话框打开后会自动尝试从剪贴板读取追踪数据。
粘贴数据后,对话框底部会显示:
- 数据帧数
- 选中行需要的帧数
- 视频分辨率
数据帧数和选中行需要的帧数应一致,不一致时应用会报错中止。
根据需要勾选:
- 追踪位置与透视(默认开)
- 追踪剪裁(默认开)
- 缩放边框与阴影(默认开)
- 应用透视(默认开)
- \org 模式:选择原点策略
对话框中有两个独立的帧号控件位于不同区域:
参考帧(Reference frame):位于"透视追踪选项"区内,决定以追踪数据中的哪一帧作为透视变换基准。始终以数据内 1-based 帧号表示,程序会根据当前视频帧位置自动推荐。
起始帧(Start Frame):位于"配置"区内,配合"相对"模式确定追踪数据对齐到字幕行的起始偏移。
- 相对:开启时起始帧是追踪数据内部的索引(1=第一帧),关闭时是视频绝对帧号。切换模式时数值自动换算。
- 反向追踪:勾选后自动将参考帧和起始帧都设到选区的最后一帧。
点击 应用 执行追踪。
- 便捷预览模式:原行被注释保留,结果行插在后面,可直接播放预览
- 正式模式:原行被删除,替换为新结果
- 从剪贴板粘贴:从剪贴板粘贴数据(相当于 Apply 按钮旁的 Paste 按钮)
透视追踪的核心思路不是"每帧绝对匹配",而是以参考帧为基准做相对变换:
- 取追踪数据中的参考帧四边形(由参考帧号指定)
- 对选中的字幕行,计算其在参考帧下的屏幕四边形(通过
\pos、\org、\frz、\fscx等标签) - 建立一个 UV 映射空间,把参考帧四边形 → 单位方块 → 当前帧四边形 的映射关系算出来
- 对每一帧:将字幕的标签值通过 UV 映射重新计算,得到当前帧下的新标签
这个过程确保了:如果字幕在参考帧时看起来是正的,在其他帧时就会跟着追踪数据一起变形。
- 支持粘贴 AE CC Power Pin 文本数据
- 支持输入文件路径(程序自动读取)
- 对话框获得焦点时,如果当前内容为空或无效,自动从剪贴板尝试填充
显示在数据输入框下方:
- 数据帧数(
Data frames: N) - 选中行需要的帧数(
Line needs: N frames) - 视频分辨率(
Video: WxH)
数据长度匹配时显示绿色,不匹配时显示红色。
默认开启。
控制是否将透视追踪应用到 \pos 以及所有变换标签(\frz, \frx, \fry, \fscx, \fscy, \fax, \fay)。
开启后,程序会:
- 在参考帧计算字幕的屏幕四边形
- 通过 UV 映射计算每帧的新位置和透视参数
- 把结果写回
\pos,\frz,\frx,\fry,\fscx,\fscy,\fax,\fay
关闭后,仅跟踪位置变化(保持四边形形状),不再应用目标帧的透视变形。
默认开启。
控制是否对 \clip / \iclip 应用透视映射。
支持两种 clip 格式:
-
矩形 clip:
\clip(x1,y1,x2,y2)→ 按四个角点分别映射 -
矢量 clip:
\clip(m x y l ...)→ 逐坐标点映射
开启后,clip 区域会随着追踪数据一起变形,确保遮罩贴合目标。
默认开启。
控制 \bord 和 \shad 是否随透视缩放变化。
透视追踪会使字幕的视觉大小改变,如果边框和阴影不跟着调整,视觉效果会失调。开启后,边框和阴影的缩放比例会跟随 \fscx / \fscy 的变化自动调整。
默认开启。
这是透视追踪比较特殊的一个选项,值得理解清楚。
假设这样一种情况:
- 参考帧的追踪四边形是透视变形的(比如画面中的牌子是斜着的)
- 但你的字幕在参考帧时是平的(没有透视变形)
如果不开应用透视,程序会认为"字幕原本就是平的,在所有帧都保持平贴",结果可能是在透视较强烈的帧里,字幕看起来像是飘在表面而不是真正贴在目标上。
如果开启应用透视,程序会在参考帧先对字幕做一次透视预变形,算出"要让字幕在参考帧看起来像是贴在目标上,需要什么样的透视参数",然后再把这个状态作为基准映射到其他帧。
推荐开启。只有当你确定参考帧的字幕本身已经有了正确的透视参数时,才考虑关闭。
位于"透视追踪选项"区内。
指定追踪数据中作为透视变换基准的帧号,始终以数据内 1-based 帧号表示(1 = 追踪数据第一帧)。
程序会根据当前视频帧位置自动推荐参考帧号。你也可以手动调整。反向追踪开启时,参考帧自动设为追踪数据最后一帧。
行内存在 \fad / \fade 时,程序会逐帧静态化:按每帧与行的可见区间求 fade 透明度,替换为对应的静态 \alpha 标签。
- 透明度与已有的
\1a-\4a通道逐通道相乘,不会丢失通道信息 - fade 标签出现在某个 override 块时,从该位置持续调制到行尾——后面块里显式写的 alpha 标签同样会被 fade 调制
-
\t(...)内的 alpha 标签会先按当前采样时间静态化,再与 fade 组合
\org(旋转原点)在透视追踪中非常重要,因为它决定了 3D 旋转的轴心。
三种模式:
保留字幕行中已有的 \org 值,不做修改。
适合场景:
- 你手工设好了
\org - 字幕本身有特定的旋转轴需求
- org_mode = 1(保持原值)
推荐模式,默认选中。
把 \org 设为追踪四边形的中心点。
这是最安全的模式,适合绝大多数场景。因为透视追踪的变换计算以四边形为基准,把原点设在四边形中心可以让旋转和透视效果最自然。
尝试调整 \org,使得反推出来的 \fax 接近零。
\fax(剪切 X)是 ASS 标签中不太直观的一个。这个模式试图通过调整原点来减少不必要的剪切变形。
适合场景:
- 追踪数据本身透视变形较小
- 希望输出结果尽可能"干净"、不带
\fax标签 - 对数学变换有理解的进阶用户
默认开启。
- 开启时:起始帧是追踪数据内部的索引。1 = 第一帧。
- 关闭时:起始帧是视频的绝对帧号。程序会自动换算成追踪数据内的相对索引。
切换时,起始帧的值会自动换算。
推荐始终开启。 相对模式更稳定,不依赖视频的绝对时间轴。
配合"相对"模式决定追踪数据对齐到字幕行的起始偏移。
- 正向追踪:通常填 1(追踪数据第一帧对齐到字幕行起始)
- 设置大于 1 的值可跳过追踪数据的前几帧
- 反向追踪开时,起始帧被自动调整(应用阶段由参考帧号重新计算)
默认开启。
开启后,应用时:
- 原始行被注释(保留)
- 新结果插在后面
- 你可以播放预览对比效果
关闭后,原始行被直接删除替换。
推荐始终开启,确认效果后再手动整理。
默认关闭。
开启后自动将参考帧和起始帧都设到选中行集合的最后一帧。
适合:
- 在 AE 中是从后往前打的 Pin
- 希望以最后一帧作为贴合参考
默认开启。
开启后,当前设置会被保存到 aegisub-motion.json 的 persp 段,下次打开对话框自动恢复。
默认开启。
开启后,每个输出行会把当前帧的追踪四边形写入该行的扩展数据
(extradata 键 _aegi_perspective_ambient_plane,格式 x1;y1|x2;y2|x3;y3|x4;y4)。
Aegisub 的透视视觉工具会读取这个键,把结果贴回原平面继续手动精调。关闭后不写入,输出行更干净,但视觉工具无法直接恢复该平面。
理解透视追踪的内部处理步骤,有助于排查问题。
从标签到四边形(正向)的变换顺序:
原始矩形 (0,0)-(w,0)-(w,h)-(0,h)
↓ \fax, \fay 剪切
按对齐点 (\an) 平移
↓ \fscx, \fscy 缩放
平移到 pos - org
↓ 3D 旋转(Z → X → Y 顺序)
RotateZ(-frz) → RotateX(-frx) → RotateY(fry)
↓ 透视投影
投影到屏幕(深度 312.5)
↓
回加 org
从四边形到标签(逆向)的过程则相反:
取四边形
↓ 求解平行四边形参数(z1, z3)
确定 \org
↓ 相对 org 归一化
反投影到 3D 空间
↓ 分解旋转
提取 frx / fry / frz
↓ 在水平平行四边形中求解缩放与剪切
提取 fscx / fscy / fax
↓
计算 pos
这个正向-逆向管线确保了标签值与屏幕四边形之间的精确对应。
这是个需要稍作理解的选项。
考虑一个典型的用例:
- 你有一行字幕
{\frz0}Hello - 参考帧的 CC Power Pin 四边形是透视变形的(牌子的四个角不构成矩形)
如果不预校正:
- 程序在参考帧看到:字幕是
\frz0,计算出矩形屏幕四边形 - 映射到追踪四边形的 UV 空间
- 在其他帧:从 UV 映射回屏幕四边形
- 结果:字幕在各帧尽量保持"平的"外观,但位置跟随追踪
如果预校正:
- 程序在参考帧看到:字幕是
\frz0,计算出矩形屏幕四边形 - 但同时也注意到追踪四边形是扭曲的
- 于是调整参考帧的标签值,使字幕的屏幕四边形尽可能贴合追踪四边形
- 然后再做 UV 映射
- 结果:字幕在参考帧就贴合了目标表面,在各帧的透视变化也更自然
一句话总结:预校正是让字幕在参考帧就贴合目标透视,保证跨帧的透视连续性。
| 场景 | 推荐模式 | 原因 |
|---|---|---|
| 首次使用 | 强制中心 | 最安全,结果可预测 |
| 字幕已有手动 \org | 保持原值 | 保留手工调整 |
| 需要最小化 \fax | 尝试令 \fax=0 | 输出标签更"干净" |
| 追踪透视变化剧烈 | 强制中心 | 中心点稳定性最好 |
| 字幕本身有自旋转 | 保持原值 | 保留原有旋转轴 |
大多数场景直接用 强制中心即可。
不是。两者处理不同类型的数据和变换。摩卡处理平面运动,透视处理三维形变。
不能。程序严格校验数据帧数是否与选中行的时间范围匹配,不匹配直接中止。
没这回事。参考帧只是决定从追踪数据的哪个位置开始计算相对变化。把参考帧设在目标最稳定、遮挡最少的那一帧通常效果最好。
不一定。如果原行没有 \org,程序会自动把 \org 设为 \pos 的值,这不一定是最优的透视轴心。强制中心更通用。
建议保持开启。预校正能显著改善透视跟踪的准确性,尤其在追踪四边形变形较大的场景。
常见原因:
- 参考帧设置不正确 — 检查参考帧号的值
- 数据长度不匹配 — 检查状态提示的颜色
- 未勾选追踪位置与透视 — 确认追踪选项
建议:开启"便捷预览"模式,先看效果再决定是否正式替换。
可能的原因:
-
\org设置不合适 — 尝试强制中心 -
\fax/\fay值异常 — 尝试令 \fax=0 模式 - 追踪四边形本身异常 — 检查 AE 中的 Pin 位置
检查:
- 追踪剪裁是否开启
- clip 格式是矩形还是矢量(两者都支持)
- 是否在同一个 override 块中(透视追踪逐块处理)
这是正常的。AE CC Power Pin 追踪数据包含了三维透视信息,ASS 需要用这些标签来表达。
如果希望输出更"干净",可以尝试:
-
\org模式选尝试令 \fax=0 - 确认应用透视是否开启
追踪数据的帧数必须等于选中行覆盖的总帧数。
例如:选中行从第 100 帧到第 150 帧(共 51 帧),追踪数据必须有 51 帧的数据。
解决方案:
- 调整 AE 中 CC Power Pin 的关键帧范围
- 或调整 Aegisub 中的选中行范围
对话框状态提示显示"数据格式或文件路径无效"(或应用时弹窗提示"追踪数据解析失败,请检查数据格式或文件路径")时,常见原因:
- 四个角点的 Frame 列不一致或重复(AE 中重新追踪过部分 Pin)
- 坐标列是空值或非数字(AE 复制时漏选行)
- 粘贴的内容其实是文件路径但路径不存在
建议:重新在 AE 中全选四个 Pin 的所有关键帧复制,或检查路径是否正确。
字幕行引用的样式在脚本中不存在时,程序会弹窗提示(该行按默认样式值继续处理,与摩卡追踪行为一致)。
解决方案:检查字幕的 Style 字段是否拼写正确,或先创建对应样式。
脚本缺少 PlayResX/PlayResY 时,程序会按 Aegisub 的标准规则推断一个脚本分辨率(两个都缺失时用 384×288,只缺一个时按常见屏幕比例推算)。无 \pos 字幕的默认位置会按这个推断值计算,可能和你的预期不同。
解决方案:在脚本头补充 PlayResX/PlayResY。
如果你不确定怎么配,先用这套最稳配置:
- 追踪位置与透视 = 开
- 追踪剪裁 = 开
- 缩放边框与阴影 = 开
- 应用透视 = 开
- \org 模式 = 强制中心
- 相对 = 开
- 起始帧 = 1
- 便捷预览 = 开
- 保存配置 = 开
这套配置的优点是:
- 结果可预测
- 透视跟踪效果完整
- 出错时容易排查
如果只记住五句话,可以记这五句:
- 透视追踪处理三维扭曲,不是平面运动。
- 应用透视 保持开启,它让参考帧先贴合透视。
- \org 模式用强制中心,省心又稳定。
- 数据长度必须匹配,不对齐会直接报错。
- 便捷预览帮助你先看效果再决定,降低试错成本。
- 《摩卡追踪使用手册》:平面运动跟踪方案
- 《Aegisub软件应用Mocha追踪的边角定位【After Effects CC Power Pin】数据》:透视运动跟踪方案 感谢章鱼哥(@sh110119)写的文档