目标是做一个“漂浮文字卡片”动效:文字从下方缓慢漂上来,轻微左右摆动,同时整体有细腻的呼吸缩放。关键是让它首尾完全衔接,在任何平台循环播放都不会跳帧或突然停顿。
1)新建合成:建议 1920×1080,25fps,时长 4 秒(后面会让它无缝循环)。背景可先用纯色或渐变占位。
2)统一命名:文本层命名为 TXT,控制层命名为 CTRL,后面加表达式更不容易乱。
3)打开关键面板:时间轴、图形编辑器(Graph Editor)、对齐面板、效果控件(Effect Controls)。
1)创建文字:用文字工具输入标题,例如“Spring Sale”。把文字居中,字号先略大一点(后面再微调)。
2)做上下漂浮:
在 0:00 给 Position 打关键帧(稍微偏下 40px);在 2:00(第 2 秒)把位置调到偏上 40px;在 4:00(第 4 秒)把位置调回到第一帧的数值。
这样 0 秒与 4 秒的位置相同,为循环打好“首尾对齐”。
3)加缓动:选中三个关键帧,右键 → Keyframe Assistant → Easy Ease。再打开图形编辑器,把曲线调成更柔和的 S 形(中段更匀速,端点更慢)。
1)做左右摆动:给 Position 的 X 方向增加轻微摆动。做法有两种:
方法 A(纯关键帧):在 0:00、1:00、2:00、3:00、4:00 分别打 X 的小幅变化(例如 -15、+10、0、-10、-15),并全部加缓动。
方法 B(表达式,推荐):在 Position 上 Alt/Option 点击秒表,输入:
amp = 12; freq = 0.25; x = value[0] + Math.sin(time*2*Math.PI*freq)*amp; [x, value[1]];
这样会自动产生慢速摆动;你只需要保留 Y 方向的关键帧即可。
2)呼吸缩放:在 Scale 上加一个很轻的呼吸(比如 100% ↔ 102%)。同样保证首尾一致:0 秒与 4 秒保持同一数值。
1)新建 Null:Layer → New → Null ,命名 CTRL。
2)添加滑块:在 CTRL 上添加 Effects → Controls → Slider Control,命名为:Sway Amp、Sway Freq、Breath。
3)把表达式参数引用到滑块:例如 Position 摆动表达式改成:
amp = thisComp.layer('CTRL').effect('Sway Amp')('Slider'); freq = thisComp.layer('CTRL').effect('Sway Freq')('Slider'); x = value[0] + Math.sin(time*2*Math.PI*freq)*amp; [x, value[1]];
这样你之后复制整个合成,只改滑块就能快速做出不同节奏。
方法 1:首尾一致 + 预合成循环
确保所有关键帧在 0 秒与 4 秒完全一致(位置、缩放、旋转、透明度)。然后把动效层预合成(Pre-compose),在主合成里把预合成复制多次首尾拼接,或用时间重映射做重复。
方法 2:时间重映射 + loopOut(推荐)
选中预合成层:Layer → Time → Enable Time Remapping。删除最后一帧的关键帧(避免重复帧)。在 Time Remap 上添加表达式:
loopOut('cycle')
这样会严格按关键帧区间循环,不会在结尾卡一下。
1)不要保留最后一帧关键帧:很多人会让最后一帧与第一帧相同,但渲染时会出现重复帧导致微跳。
2)表达式与关键帧要统一周期:例如摆动频率要让一个周期刚好在 4 秒内闭合,或使用整周期倍数(比如 0.25Hz → 4 秒一圈)。
3)图形编辑器不要“甩尾”:曲线末端如果有突变,哪怕数值一致也会在速度上产生断点。
1)短视频:建议导出 H.264(MP4),码率 10-20Mbps;若需要透明背景,改用 ProRes 4444 或导出 PNG 序列再转码。
2)网页动效:轻量可用 GIF(注意色带),更推荐导出 MP4/WebM;如果是 UI 演示也可考虑 Lottie,但表达式过多时要简化。
把文本、背景卡片、阴影、噪点纹理都做成可替换模块:以后只需要换文案和颜色,就能快速产出一批统一风格的循环动效,用在封面、开屏、字幕条都很合适。