layer-video-direction

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Layer Video Direction

Layer 视频导演

Overview

概述

One shot, directed well. A generated shot goes wrong in predictable ways: the camera drifts when it should hold, two moves fight each other, the action is crammed into the first second or spread so thin nothing happens. Direction is choosing, before generating, what the camera does, what the subject does, and how long each takes.
The generation loop and the spend gate are in the
layer
skill; anchoring on a still, loops and drafts are in
layer-video
. Holding a character and set across several shots is
layer-video-continuity
.
If a sibling skill named here is missing from your available skills, ask the user to install it (
npx skills add layerai/skills --skill <name>
); unattended, proceed from tool schemas and flag the gap.
单个镜头,也能导演到位。生成镜头出现问题的方式往往可以预测:本应保持固定时,摄像机会漂移;两种运镜会互相争夺画面;动作会被塞进第一秒,或被摊得稀薄,什么也没有发生。导演工作是在生成前决定摄像机会做什么、主体做什么,以及每部分持续多久。
生成循环和费用控制机制位于
layer
skill;以静态图作为锚定、循环生成和草稿位于
layer-video
。在多个镜头中保持角色和场景一致的是
layer-video-continuity
。
如果这里提到的同级 skill 在可用 skills 中缺失,请让用户安装 (
npx skills add layerai/skills --skill <name>
);无人值守时,根据 tool schemas 继续,并标记该缺口。

Quick reference

快速参考

WantRoute
A standard camera move
video_effects: [{type, weight}]
, where
get_base_model
lists the type
A camera that must not move
video_effects: [{type: "STATIC"}]
if offered, and "locked-off camera" in the prompt
A named cinematic technique
list_reference_sets
with
filter.category
, passed as
reference_sets
An exact clip length
duration_seconds
, on a model filtered with
capabilities: {fixed_duration: true}
Models that take structured camera moves
list_base_models
with
capabilities: {video_effects: true}
video_effects
types are uppercase:
GENERAL
,
ORBIT_360
,
DOLLY_IN
,
DOLLY_OUT
,
ZOOM_IN
,
ZOOM_OUT
,
CRANE_UP
,
CRANE_DOWN
,
TILT_UP
,
TILT_DOWN
,
STATIC
,
FPV_DRONE
,
HYPERLAPSE
,
HANDHELD
. Support is per model, so read
get_base_model
before choosing one.
weight
runs 0 to 100; leave it unset for the model's default strength and lower it when the move overwhelms the subject.
目标实现方式
标准运镜
video_effects: [{type, weight}]
,其中
get_base_model
会列出可用类型
必须保持不动的摄像机如果模型提供,则使用
video_effects: [{type: "STATIC"}]
,并在 prompt 中写明“locked-off camera”
指定的电影摄影技术使用
list_reference_sets
并设置
filter.category
,然后将其作为
reference_sets
传入
精确的片段时长在通过
capabilities: {fixed_duration: true}
筛选的模型上设置
duration_seconds
支持结构化运镜的模型使用
list_base_models
并设置
capabilities: {video_effects: true}
video_effects
的类型均为大写:
GENERAL
、
ORBIT_360
、
DOLLY_IN
、
DOLLY_OUT
、
ZOOM_IN
、
ZOOM_OUT
、
CRANE_UP
、
CRANE_DOWN
、
TILT_UP
、
TILT_DOWN
、
STATIC
、
FPV_DRONE
、
HYPERLAPSE
、
HANDHELD
。支持情况因模型而异,因此选择前先读取
get_base_model
。
weight
的取值范围为 0 到 100;不设置时使用模型默认强度;如果运镜压过主体,应调低该值。

One move per shot

每个镜头只使用一种运镜

A shot carries one camera idea. A push in while orbiting while tilting reads as a malfunction, and models handle a single clear move far better than a compound one. If the scene needs two, it is two shots.
Prefer the structured effect over prose for the same move: the effect is the input the model takes for it. Where the model offers no effect for the move, describe it in the prompt in camera terms ("slow push in toward her face", "the camera cranes up to reveal the city") and keep the rest of the prompt about the subject.
Choose the move for what it says, not for energy:
  • Push in (dolly in): rising tension, attention narrowing to a detail or a face.
  • Pull out (dolly out): reveal of scale or isolation.
  • Orbit: showcase of a hero, a weapon, a product; it reads as display, not drama.
  • Crane up: arrival or ending; crane down settles into a scene.
  • Handheld: urgency and presence; wrong for calm or for anything that has to read precisely.
  • Static: performance and comedy; lets the action carry the shot.
A dolly zoom (vertigo) is a push in with a counter-zoom, not
DOLLY_IN
; use a
camera_movement
set for it, or describe both halves in the prompt.
每个镜头只承载一个摄像构想。推进时叠加环绕再叠加 tilt,看起来就像设备故障;而模型处理单一清晰的运镜,效果远好于复合运镜。如果场景需要两种运镜,就拆成两个镜头。
对于同一种运镜,优先使用结构化 effect,而不是文字描述:effect 才是模型用于实现该运镜的输入。如果模型不提供对应的 effect,则在 prompt 中使用摄像机术语描述(“镜头缓慢向她面部推近”“摄像机通过 crane up 揭示城市”),prompt 的其余部分继续聚焦主体。
应根据运镜所表达的含义来选择,而不是根据画面活力来选择:
  • 推进(Push in / dolly in):增强紧张感,将注意力收窄到某个细节或面部。
  • 拉远(Pull out / dolly out):揭示场景规模或主体的孤立感。
  • 环绕(Orbit):展示主角、武器或产品;传达的是展示感,而非戏剧冲突。
  • Crane up:用于登场或结尾;crane down 则让画面落定到场景中。
  • Handheld:营造紧迫感和临场感;不适合平静场景,也不适合必须精确传达的内容。
  • Static:适合表演和喜剧,让动作承担镜头叙事。
dolly zoom(vertigo)是推进配合反向变焦,而不是
DOLLY_IN
;请使用
camera_movement
set,或在 prompt 中描述两个组成部分。

Lens, framing and light

镜头、构图与灯光

Name these in the prompt in production terms, once, and keep them across a scene:
  • Framing: extreme wide, wide, medium, close-up, extreme close-up; eye level, low angle, high angle, top down.
  • Lens: wide-angle for space and distortion near the edges, long lens for compressed depth and a soft background.
  • Light: the key's direction and quality (hard noon sun from the left, soft overcast, low warm backlight), and the time of day. A shot with no stated light gets an even, flat default.
在 prompt 中用专业制作术语一次性说明这些要素,并在整个场景中保持一致:
  • 景别(Framing):大远景(extreme wide)、远景(wide)、中景(medium)、特写(close-up)、大特写(extreme close-up);平视(eye level)、低机位(low angle)、高机位(high angle)、俯拍(top down)。
  • 镜头(Lens):广角镜头(wide-angle)用于展现空间,并在画面边缘产生畸变;长焦镜头(long lens)用于压缩空间深度并营造柔和背景。
  • 灯光(Light):主光的方向和质感(来自左侧的强烈正午阳光、柔和的阴天光线、低角度的温暖逆光),以及一天中的时间。未指定灯光的镜头会采用均匀、平淡的默认效果。

Technique presets

技术预设

Layer ships technique reference sets that package a camera move, angle, framing, lens, lighting, composition, atmosphere, genre look, optical or visual effect, timing or performance. Discover them with
list_reference_sets
and
filter.category
set to one of
camera_movement
,
camera_angle
,
camera_framing
,
camera_lens
,
scene_lighting
,
scene_composition
,
scene_atmosphere
,
time_and_motion
,
genre_look
,
optical_effect
,
visual_effect
or
character_performance
; add
filter.fulltext
for the technique the user named. Pass the chosen set as
reference_sets: [{set_id}]
. Never hard-code a set: the catalogue differs by workspace.
Read
reference_set_contributions
on the estimate. A camera set attached to an image model comes back
skipped_irrelevant_category
, and any set can be degraded on a model that cannot apply it. When
reference_sets_degraded
is true, say which set did not apply and why; never report it as applied.
Layer 随附 technique reference sets,将运镜、角度、景别、镜头、灯光、构图、氛围、类型风格、光学或视觉效果、时序或表演打包在一起。使用
list_reference_sets
发现这些集合,并将
filter.category
设置为
camera_movement
、
camera_angle
、
camera_framing
、
camera_lens
、
scene_lighting
、
scene_composition
、
scene_atmosphere
、
time_and_motion
、
genre_look
、
optical_effect
、
visual_effect
或
character_performance
之一;使用
filter.fulltext
匹配用户指定的技术。将选中的集合作为
reference_sets: [{set_id}]
传入。绝不硬编码集合:不同 workspace 的目录内容有所不同。
在估算结果中读取
reference_set_contributions
。将 camera set 附加到 image model 时,结果会返回
skipped_irrelevant_category
;任何 set 在无法应用它的模型上也可能被降级。当
reference_sets_degraded
为 true 时,说明哪个 set 未应用以及原因;绝不将其报告为已应用。

Pacing to the clip

为片段安排节奏

Clips are short, so time the action to the length. Say when things happen: "holds still for the first second, then turns sharply toward the camera, and the rest of the clip is the reaction". Without timing the model spreads the action evenly, which reads as slow motion, or front-loads it and leaves dead frames.
Set
duration_seconds
from the beat, not the maximum. Filter for
fixed_duration
when the length matters; models without it choose their own length and ignore the request without an error.
For a performance, give the beat a cause and a reaction: "she hears the door, freezes, then slowly turns". Emotion words alone ("she looks scared") produce a held expression, not a performance.
片段很短,因此要根据长度安排动作发生的时间。明确说明事情何时发生:“第一秒保持静止,随后突然转向摄像机,片段余下时间呈现反应”。如果不指定时序,模型会均匀铺开动作,看起来像慢动作;也可能把动作全部前置,留下无内容的画面。
根据节拍设置
duration_seconds
,而不是按最大值设置。长度重要时筛选
fixed_duration
;不支持该能力的模型会自行选择长度,并忽略请求且不报错。
对于表演,为节拍提供原因和反应:“她听到门声后僵住,随后缓慢转身”。只写情绪词(“她看起来很害怕”)只能得到僵住的表情,而不是表演。

Worked example

实例

"A 5-second hero shot of our mech for the trailer: slow, imposing, a dolly zoom feel."
  1. The approved mech still has a
    file_id
    . No upload.
  2. list_base_models
    with
    filter.use_case: "image_to_video"
    and
    filter.capabilities: {fixed_duration: true}
    . Take the first result;
    get_base_model
    for its
    video_effects
    types and durations.
  3. list_reference_sets
    with
    filter.category: "camera_movement"
    and
    filter.fulltext
    for the technique the user named. Show the user the match before using it.
  4. Prompt: "Low angle, wide lens. The mech stands still for the first second, then its head turns slowly toward the camera and its visor lights up. Hard low backlight, dust in the air."
  5. estimate_forge_price
    with the still as
    {file_id, type: "first_frame"}
    ,
    duration_seconds: 5
    , and
    reference_sets: [{set_id}]
    . Read the contribution report: if the set is degraded on this model, re-estimate without
    base_model_id
    so the server picks one that applies it, or fall back to the closest
    video_effects
    type. Above 20 CUs, ask and wait for an explicit yes.
  6. Execute, poll
    get_forge_run
    at
    poll_interval_seconds
    , and report whether the set applied.
“用于预告片的我们机甲 5 秒英雄镜头:缓慢、压迫感强,呈现 dolly zoom 的感觉。”
  1. 已获批准的机甲静态图有
    file_id
    。无需上传。
  2. 使用
    filter.use_case: "image_to_video"
    和
    filter.capabilities: {fixed_duration: true}
    调用
    list_base_models
    。取第一个结果;使用
    get_base_model
    查看其
    video_effects
    类型和时长。
  3. 使用
    list_reference_sets
    ,设置
    filter.category: "camera_movement"
    ,并通过
    filter.fulltext
    匹配用户指定的技术。使用前先向用户展示匹配结果。
  4. Prompt:“低机位,广角镜头。机甲在第一秒保持静止,随后头部缓慢转向摄像机,面罩亮起。强烈的低位逆光,空气中弥漫着尘埃。”
  5. 使用该静态图作为
    {file_id, type: "first_frame"}
    ,调用
    estimate_forge_price
    ,设置
    duration_seconds: 5
    和
    reference_sets: [{set_id}]
    。读取贡献报告:如果该 set 在此模型上被降级,则重新估算时移除
    base_model_id
    ,让服务器选择一个能够应用它的模型;或者退回到最接近的
    video_effects
    类型。超过 20 CUs 时,先询问并等待明确同意。
  6. 执行,按
    poll_interval_seconds
    轮询
    get_forge_run
    ,并报告该 set 是否已应用。

Common mistakes

常见错误

  • Two or three camera moves in one shot.
  • Describing a move in prose when the model takes it as a
    video_effects
    type.
  • Passing
    video_effects
    as a list of strings instead of
    {type, weight}
    objects.
  • Leaving the camera unstated and accepting the drift the model adds.
  • Hard-coding a technique set id or name from another workspace.
  • Reporting a technique set as applied without reading the contribution report.
  • Emotion words instead of a timed beat.
  • Asking for an exact length on a model without
    fixed_duration
    .
  • 在一个镜头中使用两三种运镜。
  • 模型接受
    video_effects
    类型,却用文字描述同一种运镜。
  • 将
    video_effects
    作为字符串列表传入,而不是
    {type, weight}
    对象。
  • 不指定摄像机状态,放任模型加入漂移。
  • 硬编码来自其他 workspace 的 technique set ID 或名称。
  • 未读取贡献报告,就把 technique set 报告为已应用。
  • 只写情绪词,而不是设计带时序的节拍。
  • 在不支持
    fixed_duration
    的模型上要求精确时长。