mcpField
S
scenario-blender-previs-storyboard

scenario-blender-previs-storyboard

github.com/scenario-labs创意与媒体1.2k379 次安装1 天前更新
代码仓库

关于 scenario-blender-previs-storyboard

面向导演和剪辑师的 Blender 预演与分镜技能,可将信息节拍整理为镜头、机位方案、联络表和定时动态分镜,并检查构图与连续性。

主要功能

  1. 01从节拍规划镜头
  2. 02基于人偶的 3D 预演
  3. 03机位与镜头规划
  4. 04镜头和构图审查
  5. 05联络表与动态分镜

适用场景

  1. 01制作前测试故事节拍
  2. 02比较机位和镜头选择
  3. 03用静帧和镜头制作定时动态分镜

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-blender-previs-storyboard

安装后在 Claude Code 中输入/scenario-blender-previs-storyboard确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
critique.md
expert-notes.md
procedures.md
sources.md
scripts/
bx_previs.py

详细介绍

预演、布局与故事板

专业预演应以尽可能低的成本清楚传达创意,使其足以供人评判:每个节拍只传递一个事实,每个镜头都围绕观众必须感受到的情绪来设计,通过静帧剪辑来确定时长。摄影机就是观众的身体;它的位置、高度和镜头焦距决定了情绪,因此每个非中性的选择都需要说明理由。如果这里提到的某个同级技能不在你可用的技能中,请用户安装它 (npx skills add scenario-labs/skills --skill <name>);如果无法等待用户回复,则根据工具架构继续操作,并指出这一缺失。

必备背景: scenario-blender-expert(执行通道、审查循环、5.2 API 变更)。

工具包:scripts/bx_previs.py(已在 5.2.1 上测试): import sys; sys.path += ["<this skill>/scripts", "<scenario-blender-expert>/scripts"]; import bx_previs as P。

该用哪个技能。 本技能适用于由导演和剪辑师评判的故事预演与动态故事板。范围之外:为视频生成模型(Seedance)提供指导的预览渲染视频。它遵循其他规则(饱和色彩标识、剪辑处不跳变镜头、平滑移动、交接表),下方的工作流和 P.audit 均不适用或不检查这些规则,因此不要将导演的动态故事板原样交给视频模型:应使用 scenario-blender-blockout 重新制作,角色通常会变成由视频模型自行制作动画的彩色胶囊体。共同点:公制单位、Z 轴向上、根节点位于脚部、每个镜头使用一个绑定到标记的摄影机、to_track_quat('-Z','Y') 注视目标。笔触:scenario-blender-grease-pencil。布局后的动画制作:scenario-blender-animation。真实骨架:scenario-blender-rigging。

立场(专家做法的差异)

  • Hjalti Hjalmarsson:先写信息节拍列表,再设计镜头。 每行一个事实,因为观众一次只能接收一件事。将连续节拍编成镜头;新的处理方式会重新排列相同的事实。缺少一个节拍,就意味着创意从未得到公平的检验。
  • Hjalti:先排演,再电影化;镜头需要时间。 固定机位版本用于评判表演;用镜头讲述相同节拍,时长约为 2 倍(最多 3 倍),因为观众必须理解每一次剪切(13/22/25 秒与 47/40 秒)。过度简化的版本总是太短,也会掩盖实际限制(角色不可能在 10 帧内穿过房间)。
  • Charge 的做法(Hjalti):把每一帧都当作故事板绘图。 每个镜头 10 帧,关键帧插值设为 CONSTANT,下一帧呈现 A/B 备选,十帧处确定胜出方案,以带版本号的名称导出静帧,另行剪辑来确定时长。
  • Hjalti:拿不准时就用眼平机位;尽早通过 A/B 测试锁定镜头焦距。 两个角色:分别对齐他们的眼睛高度。低角度或高角度都是一种表达。为某个镜头焦距设计的姿势,经不起更换镜头焦距。
  • Dillon Gu:构图与焦距是两个独立的决定,剪切可能破坏情绪。 观众就站在摄影机的位置。离开场景会消除危险感;连续插入两个静物镜头会降低紧张感。
  • 可以为摄影机作弊,但要先打关键帧(Hjalti、Charge、Renato Roldan)。每个镜头都可以调整大小、悬空摆放或替换道具;在共享时间轴中,没有打关键帧的作弊调整会破坏前面的镜头。
  • 预演应以最低成本传达创意(Hjalti、Charge)。仅当镜头移动本身承担叙事功能时才制作动画;其他镜头都只用一张静帧,推镜效果在剪辑中通过静帧伪造。使用 Workbench 的灰度,不做氛围灯光,先用人形模型,再上骨架。P.audit 会拒绝静帧镜头中移动的摄影机、区块起始帧之间的关键帧,以及非 Workbench 渲染引擎。
  • 每次剪切后,观众的视线都必须能找到一个主体(Hjalti)。重新安排角色的位置,让其处于竞争性主体前方;保留能延续情绪的角度(他拒绝了一个侧面剪切,因为这会让 Rex 变成剪影)。

首先确定

输入变更未说明时的默认值
格式每次创作(Charge:先锁定格式)1920x1080,24 fps,静帧为 50 %
处理方式镜头数量、时长先按影院标准处理,再采用电影化风格
方法Agent 没有绘图板使用人偶制作 3D 预演;仅在提供美术素材时绘制分镜;仅按需使用 Rigify 代理模型(P.rigify_proxy,在 --factory-startup 下 Rigify 默认关闭:先调用 P.ensure_rigify())
氛围或导演风格每个镜头的镜头、机位高度、运动中性语法,每个镜头注明偏离之处
时长预算时长电影化剪辑中每个节拍约 1.6 至 1.9 s(根据 Hjalti 的幻灯片推算:25 个节拍、8 个镜头、40 至 47 s)
行进路线屏幕方向出发时从左向右,返回时从右向左(Charge)
交付物输出镜头清单、联系表、平面图、干净版及带叠加信息的 Animatic MP4、带版本号的 .blend

工作流

  1. 从剧本到节拍。 先列出资产清单,再按顺序列出节拍,每个节拍只包含一个事实;标记你添加的每个节拍。 门槛:如果节拍缺失、重复或顺序错误,P.shot_list(BEATS, SHOTS) 会报错。
  2. 布景与代理模型。 使用 P.setup_scene(格式、Workbench、灰度、Standard 视图变换); 使用 P.prop 创建实际比例的布景道具;使用 P.mannequin 创建角色(根节点位于脚部,并设置 eye_height,布局子集包含四个枢轴控制器)。整体使用灰度,为主角选一种跳色(Renato:红色)。门槛:与 门(2.1 m)和柜台(1.0 m)并排时,比例看起来正确。
  3. 舞台预览。 使用一台固定摄像机(共享的 cam,fit="all",35 mm,平均视线高度) 取景,覆盖动作范围的两端;每组节拍对应一个区块。门槛:在 P.audit 的各行中,每个区块的每个主体 的 head_in 和 feet_in 都为 true;舞台预览剪辑已定时。
  4. 电影化规划。 列出多个开场方案,重新排列节拍,并将它们分组为镜头,标注 intent、 size、lens、height、dur。在评估摄像机之前,先用 P.floor_plan 标出动作线和行进路径。门槛: 位于动作线同一侧;行进方向符合方向规则。
  5. 调度。 对每个区块:执行 sc.frame_set(f)(保持上一姿势),只设置发生变化的内容, 执行 P.key_block(all_movables, f);视角作弊也使用相同的关键帧;然后执行 P.make_stepped。门槛: P.stepped_report == {};检查相邻镜头中的视角作弊。
  6. 摄像机。 P.build_shots 根据景别、镜头焦距和视线高度(或显式指定的 loc/aim)放置每台摄像机, 设置不透明的取景遮罩(Charge:仅显示构图;其他摄像机使用 P.passepartout(sc)),并在首帧绑定标记。 进一步调整姿势前,先对关键镜头执行 P.ab_lens。门槛:P.audit(...)["problems"] == []。
  7. 视觉风格。 执行 P.contact_sheet 并打开图像表。角色与暗淡布景融为一体时: 使用 P.fog_for_shot(sc, t, chars)(Hjalti:为提高可读性而非照明添加深度雾;雾位于主体后方,并针对该镜头设定关键帧), 使用 P.values_at 比较主角与背景。门槛:符合「质量门槛」下的视觉检查清单(在 S6 中,只有图片捕捉到了遮挡和被截断的广角镜头)。
  8. 剪辑。 执行 P.render_stills,然后执行 P.animatic(图片条保持 dur 秒,静帧使用 push, 实拍镜头使用场景条,添加声音和 burn_in)。将一个连续动作从多个角度呈现(Pablo,Story Tools):一个 live 镜头加上 cover=True 镜头会合并成一条场景条,并按摄像机柔性分段;使用 P.retime_cut 重新定时(标记会跟随), 切勿移动关键帧。门槛:时长在预算范围内;从 MP4 提取的帧与剪辑列表一致。
  9. 迭代:在一对新的场景中(02_blend/02_edit)使用新的版本号;不得覆盖任何内容。

数值

数值相对于来源
每个镜头块 10 帧,只有在有充分理由时才用 20 帧;从 10、20、30 开始预演时间线Charge
镜头按十位命名(sh010、sh020)标记Hjalti on screen
35 mm 影院画幅;隔离主体的关键镜头约为 60 mm36 mm 传感器Hjalti
F 值 5.6,摄像机支架上的裁剪范围为 0.01 至 200 mHjalti 的支架Hjalti
影院版 13 / 22 / 25 秒,对比电影版 47 / 40 秒相同剧本Hjalti slide 00:46:01
一次愤怒爆发分 3 个姿势(预备、过冲、稳定)一个节拍Hjalti
分镜以 6 fps 绘制,在剪辑中重新定时分镜场景BouncyBrain
眼睛容差 0.15 m;视角超过相机 70 度时绘图会崩坏审核阈值[added]
可见高度 = 主体高度 x 4 / 2 / 1.15 / 0.8 / 0.6 / 0.4 / 0.25 / 0.12ews、wide、full、mws、medium、mcu、cu、ecu[added]
距离 = 可见高度 x 镜头焦距 / 传感器高度(16:9 时为 20.25 mm)保持尺寸相同更换镜头:d2 = d1 x f2 / f1[added]
手持抖动 NOISE 为 0.010 至 0.018 rad,帧尺度为 18 至 26 帧摄像机旋转视频指南;测得峰峰值 = 强度 x 0.66

摄影机语言

选择表现含义来源
平视、中焦、居中、固定中性;每个 A/B 的起点Dillon, Hjalti
低机位或藏在角落隐蔽的观察者Dillon
从远处用广角拍摄,然后快速推近被监视;有人盯上了某个目标Dillon
极广角近景“不对劲”,失真Dillon
长焦信息性、平淡、孤立主体、强化双人场景Dillon, Hjalti, Spitfire
俯视;滑动变焦(线性关键帧)来自上方的压力;失去控制Dillon
从后方偏离中心拍摄孤立Dillon
侧向移动最中性的画面运动Dillon
倾斜或移动,并以某个细节收尾该细节成为主体Hjalti
不露脸的构图、较长镜头、边缘处的重要物件由声音带出日常Dillon

有真实感的运镜(Dillon):观察者或昏沉的身体拿着摄影机时,画面会有手持抖动;摄影机操作员快速推近;摄影机随着角色的肩膀下沉;懒散时少动,紧迫时多动;产品镜头是最静止的镜头。Hjalti 会在交接过程中拉焦(dof.focus_object)。**剪辑:**位于动作线的一侧;越肩镜头使用摄影机所在一侧的肩膀,跳切可以表示省略了日常活动的时间(Dillon);主观视角位于摄影机一侧、稍微偏离动作线的位置 [添加,S6]。

质量门槛

可测量项:P.audit(sc, table, chars, line=(a, b), travel={name: "right"}, stepped=movables):每个镜头帧上切换标记,且不能提前一帧;主体的视线方向在画面内且未被遮挡(射线投射会标出遮挡物,包括雾);测量尺寸与预期尺寸;为每个非平视摄影机指定高度类别及意图;位于动作线一侧(主观视角和 cross 除外);每段行程的画面方向;遮挡长度;连续两个插入镜头;实拍片段以外存在非恒定关键帧;不透明遮幅;成本门槛;warnings 会列出灯光。此外还包括剪辑片长、ffprobe 流和时长,以及实拍镜头与预演帧对照渲染的画面。

视觉检查(逐张打开图片):联系表(每个节拍都清晰可见、每个镜头只有一个焦点、主角易于辨认、取巧手法和遮挡物不可见、从当前摄影机角度能读懂姿势)、平面图(摄影机所在一侧、行程)、A/B 对比表(孤立与环境背景)、从 MP4 抽取的帧(顺序、烧录字幕、推近、实拍镜头内容)。漫画式节奏和声音仍由人来判断(Hjalti)。

常见错误

错误看起来像修正
在已完成的表演上零散添加镜头通用覆盖镜头,构图错误根据每个镜头的节拍设计镜头(Hjalti)
忽略极限位置的广角构图最高姿势或入场动作被裁切使用 fit="all" 并检查极限位置
从真实视点拍摄 POV柜台或角色自己的头挡住视线将 POV 向前、向上调整(S6:向前 0.6 m,高 1.72 m,越过柜台);审查会报告遮挡物
门或道具挡在摄影机与主角之间主角在关键帧中被遮住将门或道具打开,或移动摄影机;联系表会发现问题
从远侧拍摄过肩镜头越轴,主角不在画面内留在摄影机一侧;检查视线
未设关键帧的调整较早的镜头发生变化在每个区块中为所有可移动物体设置 key_block
以 24 fps 剪辑时,将 6 fps 分镜场景作为场景条使用播放速度快 4 倍导出静帧或调整播放速度
每个镜头都做动画、氛围灯光、完整绑定速度慢,剪辑与动作冲突,无法尽早评估使用静帧和 push;仅在动作本身承载含义时使用 live;使用 Workbench 灰度效果和人偶
将覆盖镜头拆成独立条带,或移动关键帧剪辑点偏离动作运行 cover=True,使用 P.retime_cut
雾效与世界坐标对齐或位于前景主角染上色调,每个镜头都有雾使用 P.fog_for_shot(位于主体后方,仅用于一个镜头)

Blender 5.2 说明

  • bpy.ops.render.opengl 在 --background 模式下会失败;请使用 Workbench render.render(无头模式),或在实时会话中使用锁定相机的视口。
  • keyframe_insert() 会忽略新关键帧的插值偏好(关键帧仍为 BEZIER),即使已启用“Only Insert Available”:请调用 P.make_stepped。
  • 对非窗口场景调用 frame_set 会导致变换数据过时,而且对此类场景调用 write_still 渲染时会使用窗口场景的帧:请使用 P.activate、P.render_frame。
  • VSE:使用 strips、left_handle/right_handle、content_start;SceneStrip.frame_start 和 frame_final_* 会发出警告(将在 6.0 中移除)。Strip.split(frame, split_method='SOFT') 会从数据进行拆分。新场景默认使用 AgX:请将编辑场景设置为源视图变换。
  • marker.camera = cam 在无头模式下会绑定相机;bpy.ops.marker.camera_bind 需要时间线上下文。
  • 在 --factory-startup 模式下,Rigify 默认关闭:在调用 P.ensure_rigify() 之前,bpy.ops.object.armature_basic_human_metarig_add 会报错“could not be found”。
  • Selection Sets、Storypencil 和 Grease Pencil Tools 不会随软件捆绑;请使用骨骼集合 layout。Storyboarding 应用模板附带一个编辑场景,其中同步已开启、自动关键帧在编辑模式下已关闭(在其 Storyboarding 工作区中,固定功能已关闭)。
  • GP v3 笔画可在无头模式的 Workbench 静帧中渲染。

参考资料

  • references/procedures.md:各阶段经过测试的代码(包含和不包含该模块的情况)以及陷阱测试;编写代码前请先加载。
  • references/expert-notes.md:各位专家的原则、分歧和判断条件,并附时间戳;选择处理方式、镜头或剪辑时请加载。
  • references/critique.md:评审标准和 S6 的发现;每次进行 Look 阶段检查时请加载。
  • references/sources.md:七个源视频、各自最适合的用途和最佳时间戳。

评论

支持 Markdown