简介
这场打斗已经铺垫了三集。你写下「Kaito 格开攻击,用横扫反击,Ren 翻滚躲开」,出来的画面却是两个身体在肩膀处融合在一起,一条不知道属于谁的手臂,还有一个发生在错误的人身上的横扫动作。单人动作的时候没问题。两个身体一接触,模型就把它们当成一个物体来处理。
打斗不是一个动作,而是一连串交手回合,每个回合都有一个接触点——两个身体碰到一起的那一刻。身体融合就发生在接触时,而参考静图在这时候也最能发挥作用。本文介绍如何从假人素材出发,为 AI 动画编排格斗场景:把打斗拆成回合,每次接触取一张静图,每个 shot 写清攻击方、受击方,以及能让接触点可见的机位。
为什么两个身体会出问题
两个角色一接触,三件事就同时发生:
- 归属不清。 哪条手臂属于谁需要做判断,而模型每一帧都会重新判断一次。
- 身份稀释。 一个 shot 里出现两个
@引用,意味着两个身份在同一批像素上竞争。身体越靠近,两者就越往中间平均。 - 动作数量翻倍。 出拳和格挡是两个动作。出拳、格挡再加反击是三个。一个 shot 只做一件事的原则立刻就破了。
单人动作的教程用拆分 shot 来解决第三个问题。打斗还需要同时解决前两个,这就是接触静图和攻防角色分配的作用。
关于如何在剧情层面让打斗场景有冲击力——筹码、空间感、出手前的那一拍——可以看战斗场景提示词指南,那篇专门讲写作。这篇讲调度。
双人 shot 的基本规则
- 每个 shot 只有一次接触。 格挡是一次接触,抓住是一次接触,出拳-格挡-反击是三个 shot。
- 攻击方和防御方各有名字。 「@Kaito 出击;@Ren 格挡。」不能写「两人互相交手」。
- 机位放在能看到接触点的那一侧。 通常垂直于两人连线,让两个身体都处于侧面,接触点清晰可见。
- 每次接触一张静图,来源要干净。 假人编舞素材是理想选择:两个没有纹理的身体,没有身份会渗漏,接触点一目了然。
- 静图里尽量让身体保持距离。 在完全接触前几帧取图,比取最大重叠时的帧效果更好。模型会补完接触动作,不需要帮它去解开。
- 身份和服装只来自资产。 两个角色意味着两个
@引用,描述里零面部或服装信息。
从任意素材中提取静图的详细规则,可以看姿势参考指南;打斗场景只是把同样的方法同时用在两个身体上。
从假人素材一步步搭出打斗
- 看完素材,列出所有交手回合。 每个回合是一次接触:出拳-格挡、抓住-挣脱、横扫-摔倒。十秒的打斗通常有四到六个回合。
- 每个回合取一张静图,在完全接触前一帧,选能看到接触点的角度。按回合命名:「ex-01-strike-block」。
- 把静图上传到内容库,绑定为 Visual reference,用打斗的名字命名。素材本身留在内容库里,方便核对顺序。
- 确认两个角色都已经建好 character asset,有 Main image,如果他们打斗时穿特定装备,把服装参考也绑定到资产上。
- 每个回合写一个 shot card。 机位朝向接触点一侧,
@攻击方做一件事,@防御方做一件事,匹配对应的交手静图,写清结束状态:「结束时 Ren 后退两步」。 - 生成所有回合的静图,检查归属:那条手臂是谁的,那条腿是谁的,谁在哪里。如果静图里身体融合了,换一张更清晰的参考图,不是加更多文字。
- 为通过检查的回合生成视频。 每段保持简短;一次接触在两秒以内。
- 在 Edit 里按回合顺序剪辑。 每段剪到接触动作和紧接着的后续。如果某个回合感觉拖沓,提前切入下一个,不要重新生成。
示例一:出拳与格挡
Medium-wide shot, camera at chest height, perpendicular to the two fighters so both are in profile, static. @Kaito on the left throws a straight right at head height; @Ren on the right raises his left forearm and blocks it outside. Match exchange still ex-01: bodies a forearm's length apart at contact. Ends with the block held for a beat, both feet planted. Training hall, flat overhead light. No camera move.
示例二:抓住与挣脱
Medium shot, camera at chest height, same side as Shot 1, static. @Ren on the right grabs @Kaito's collar with his right hand; Kaito twists left, brings his left arm over Ren's wrist, and breaks the grip. Match exchange still ex-02 for the grip position. One clean motion, ends with Kaito free and half a step back, Ren's hand open. Same hall, same light. Both faces from assets.
示例三:横扫与摔倒
Wide shot, camera low at knee height, same side of the fighters, static. @Kaito drops and sweeps his right leg through @Ren's front ankle; Ren's feet leave the mat and he falls onto his back, left to right. Match exchange still ex-03 for the sweep angle. Ends with Ren on the mat and Kaito rising. Dust lifts off the mat. No camera move; the fall happens within the frame.
打斗场景最常见的翻车原因
- 身体融合。 一个形状长了太多肢体。静图取的是最大重叠那一帧;换到接触前一帧。
- 归属错误。 Ren 的手臂长在 Kaito 的身上。那个动作没有命名攻击方和防御方,加上名字。
- 一个 shot 里有两次接触。 反击消失了。把这个 shot 拆开。
- 机位在错误的一侧。 接触点被另一个身体挡住了。把机位移到垂直于两人连线的位置。
- 面孔被平均了。 两个角色看起来像混合体。描述里有两个
@引用还加了面部描述;把描述删掉。
常见问题
打斗过程中可以运镜吗? 可以,每个 shot 一个运镜:格挡时推进,摔投时鞭摇。只用在真正能增加冲击力的 shot 上,其余的锁定机位,让剪辑来传递节奏。
一个 shot 能包含几次交手? 一次。两次交手放进一个 shot,融合就开始了。如果打斗感觉太碎,在剪辑上解决,不要拉长 shot。
两个角色体型差距很大怎么办? 反而更好;体型差距有助于区分归属。在 shot 里提一次就够:「Kaito 比 Ren 矮一个头。」其余的让资产来承担。
一定要用假人素材吗?真实打斗素材可以用吗? 真实素材也能用,只要你取图那一帧两个身体分得足够清楚。假人素材更方便,因为没有任何身份信息会渗漏进来。
下一步
拿出那场你一直在回避的打斗,列出它的交手回合——大概五个。找一段编舞风格相近的素材,每个回合在接触前一帧取一张静图,把第一个回合写成一个 shot:机位朝向接触点,@攻击方 出击,@防御方 格挡,写清结束状态。在 ArcLoop 里打开项目,先生成这一张静图,确认手臂的归属再往下走。




