☰
skills 项目 Blender 预演资料来源解析:七场专家讲座、时间戳索引与 5.2.1 校验基线
2026/11/6 6:16:25 网站建设 项目流程

【免费下载链接】skills

Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through the Scenario MCP, plus expert teams that drive Blender, Maya, ZBrush, Unreal, and Unity.

项目地址:https://gitcode.com/GitHub_Trending/skills63/skills
点击查看免费下载

这篇指南拆解skills仓库中 Blender 预演与故事板技能(scenario-blender-previs-storyboard)的资料来源索引 sources.md,说明七场专家讲座各自解决什么问题、关键时间戳对应哪条可执行规则,以及这些"人的经验"如何被翻译成 bx_previs.py 里可自动判定的门禁。读完你可以按时间戳精准回看原始讲座、判断某条规则是专家原话还是本技能的补充,并在 Blender 5.2.1 上复现对应的检查。

这份文档为什么不是普通参考文献列表

sources.md只有一页,但它承担的是整条证据链的源头:

七场讲座(2.8x 到 5.0 alpha 的界面) → notes/previs/ 笔记与摘要 _digest_previs_storyboard.md → references/expert-notes.md(按专家整理的原则、分歧、时间戳) → SKILL.md(姿态、数字表、摄像机语言表、质量门禁) → scripts/bx_previs.py(shot_list / build_shots / audit / animatic) → references/procedures.md(可直接运行的分阶段代码)

因此sources.md的价值不在"列了哪些视频",而在三件更严格的事:

  1. 可回查:每一行都给出"最适合什么"和精确到秒的时间戳,任何一条规则都能定位到讲座里的具体一分钟。
  2. 可判定版本:文档明确写出"屏幕上出现的 Blender 版本从 2.8x(Spitfire)到 5.0 alpha(Story Tools),而本技能用到的每一个 API 事实都在 5.2.1 上重新校验过"。这把"专家在旧界面里的操作"和"当前可执行的 API"分成了两层。
  3. 可区分归属:expert-notes.md用[added]标记本技能自己的补充(尺寸表、距离公式、0.15 m 眼高容差、70° 边缘阈值等),避免把工程推导说成专家原话。

需要说明证据边界:文档提到的notes/previs/摘要目录和procedures.md里引用的tests/code/blender-previs-storyboard/测试目录,在当前仓库快照中并未包含(tests/下是按技能划分的测试集)。本文只引用仓库中实际存在的 references/ 与 scripts/bx_previs.py 作为可核验层;复现测试套件需要从构建工程取得该目录。

七场来源总览

下表是sources.md原始索引的完整继承(去掉了外部跳转,仅保留可检索的视频 ID 作为定位线索)。

视频专家与资历时长、日期最适合关键时间戳
Animation Previs/Layout Workshop, BCON24(XZtJ64g5VQQ)Hjalti Hjalmarsson,Blender Studio 导演(《Charge》编剧/导演,《Sprite Fright》导演;预演、布局、动画)50:42,2024-10-24把整个流程走两遍(剧场式与电影式),带剪辑长度;beats 列表;镜头与高度选择;每一个作弊(cheat)都在 3D 里演示00:07:26 beats;00:12:18 眼高;00:12:50 镜头 A/B 与极端值;00:18:21 静帧而非动画;00:19:30 太短;00:27:30 beats 到镜头(幻灯片 00:29:36);00:34:07 镜头 1 焦距;00:36:21 作弊;00:41:47 剪影;00:43:32 一个视觉焦点;00:46:01 剪辑长度对比幻灯片;00:47:31 要点
Charge: Previz Workflow Overview(cTx-n4OZXYE)Hjalti Hjalmarsson,《Charge》开源电影编剧/导演7:11,2023-02-02最容易脚本化的配方:10 帧块、常量关键帧、下一帧放 A/B、标记绑定摄像机、带版本号的静帧、独立剪辑00:00:22 屏幕方向与方法;00:02:11 画幅、passepartout、灰度;00:02:52 A/B;00:03:24 10 帧;00:03:59 先打关键帧再作弊;00:04:32 雾与摄像机运动;00:05:50 布局
How to improve your cameras, BCON22(AfWETpPKq-Q)Dillon Gu,动画导演(个人万圣节短片)51:25,2022-10-28镜头语言:同一段动画为三种情绪重拍,每个焦距、高度、运动与剪辑都有理由00:07:38 构图与焦距;00:09:15 观众在场景里;00:10:17 广角加推近;00:12:29 切到外景杀死危险感;00:16:44 中性;00:21:41 移轴变焦(dolly zoom);00:27:45 日常语法;00:33:21 侧向;00:39:17 180 度规则;00:45:57 两个插入镜头;00:48:45 产品镜头
The development story of Story Tools, BCON25(4flnlr39S1U)Falk David(Blender 开发者,Grease Pencil 模块)与 Pablo Fournier(Blender Studio,2.5D 布局与故事板)51:05,2025-09-175.0 的 Sequencer 场景选择器与同步;"设置三件套";把一个场景条拆开做覆盖;场景资产;删除与性能行为00:02:21 历史阻塞点;00:15:16 设置;00:18:35 场景资产;00:23:03 拆分与滑移做覆盖;00:26:33 GP 绑在绑定上;00:39:37 场景没有用户
Live Storyboarding Session, BCON24(CPprHO2R0VI)Renato Roldan,故事板画师,20 余年(The Third Floor,参与《星球大战》《King》《Terraform》)47:19,2024-10-243D 中的 2D("story blendering"):平面拉开深度做视差、画稿绑在移动代理上、边缘朝向警告、人体模型透过真实镜头00:12:17 深度中的平面;00:16:19 信条;00:18:41 画板承载时间与摄像机;00:25:10 代理承载物;00:26:53 边缘朝向;00:29:06 人体模型
Grease Pencil 2D 3D Hybrid Storyboard Animatic(H10rQoSg41c)Paul Coulthard,职业故事板画师(Spitfire Storyboards)53:18,2020-03-31混合工作顺序:地面路径、带关键帧的 GP 物体、草稿、确定摄像机、代理人体、Track To、常量与线性、用标记切镜(v2 时代 UI,API 已翻译)00:05:13 绘制平面;00:15:58 路径优先;00:19:47 确定摄像机;00:26:33 镜头;00:32:23 插值;00:34:10 代理父子关系;00:41:44 Track To;00:44:46 标记
Storyboarding in Blender masterclass(Xx68qcqMXS4)BouncyBrain,故事艺术家(署名 DreamWorks,参与《超级马力欧兄弟大电影》的 360 度镜头)19:23,2024-07-25"画在玻璃上"的机位架与 6 fps 故事板;其余是无解说延时00:08:03 6 fps;00:09:45 玻璃机位架;00:11:27 世界特效

七场里有两场同属 Hjalti(一场长工作坊 + 一场 7 分钟的配方复盘),它们不是重复:工作坊给判断标准,短片给可脚本化的顺序。这一点直接决定了SKILL.md的写法——先有"姿态",再有"工作流"。

逐场精读:时间戳到底教了什么

1. BCON24 工作坊:整套方法论的锚点

这场是expert-notes.md里的 "anchor",因为它把同一份半页剧本拍了两遍:一次锁定机位的剧场式,一次分镜的电影式。关键时间戳与其结论:

时间戳讲座内容在技能中的落点
00:03:09 / 00:05:52从半页剧本列资产清单;自创比例可能被设计采纳("80% 那个")P.prop的真实尺度布景;门 2.1 m、柜台 1.0 m 的尺度门
00:07:26–00:08:33beats of information:不是故事节拍、不是动画姿势,"一次一条信息",连混乱也只是一条信息SKILL.md第 1 步;P.shot_list的缺失/重复/乱序校验
00:09:04 / 00:29:11先画平面图,后标机位(#1a、#1b、#2 到 #8)与动作线P.floor_plan(line=..., paths=[...])
00:09:36–00:10:41绑定卫生:预先决定预演只碰哪些骨骼,做成 "layout" 选择集;跳过就会"一半时间点错骨骼"骨骼集合layout与P.RIGIFY_LAYOUT
00:11:13深度雾:带 Array 修改器的平面 + 半透明视口色,用于可读性而非打光P.fog_for_shot(放在主体之后、只在一颗镜头里出现)
00:12:18眼高;两个角色就取两人眼高的中间值;低或高都是"表态"height_class的eye/eye:<name>/low/high
00:12:50–00:13:2335 mm(更多背景)对 60 mm(隔离),最后回到 35 mm,因为画框必须容纳动作极端值(Jay 走进来、Rex 站起来俯视)SIZES与place_camera的v * lens / sensor_h距离公式;fit="all"
00:13:52–00:18:21最简版 13 s"已经有点闷";详细版 22 s:加一个 beat(砸桌)、三姿势的怒气爆发(预备、过冲、回落,两姿势不够)运行时预算与"补 beat"的判断依据
00:19:30过度简化的版本永远太短,并且掩盖后勤问题(Jay 不可能 10 帧穿过房间)评论表第 1 节"后勤成立"
00:34:07镜头 1 的焦距试错:更广会让前景的砸击更大,但把背景信息也拉进来——"2D 里你随便画,3D 里你得到的是真实信息"广角在 3D 中"进口"了必须管理的背景
00:36:21作弊清单:圣代不在桌上、桌子被缩放、Rex 悬空、反向镜头里 Jay 漂浮、换一个更高的圣代、角色拉伸以修正切脚、女服务员是带 Noise 修改器的粗糙托盘key_block先打键再作弊;audit在相邻镜头检查
00:39:38道具问题用故事解决:Rex 顺手把撒粉罐扔掉评论表"道具一眼可读"
00:41:47放弃侧切,因为侧视变成剪影、丢掉了威胁感情绪必须活过角度变化
00:43:32揭示镜头出现两个焦点:让 Jay 坐到圣代前面"切完之后眼睛只能找到一样东西"
00:46:01对比幻灯片:剧场式 13 / 22 / 25 s,电影式 47 / 40 s,"两倍,有时三倍"运行时预算的来源
00:47:31要点:永远先写 beat 表;开头就 A/B 焦距与角度,因为为一个镜头做的姿势换镜头就得重做;骨骼越少越好;只给想法"刚好够活"的表达;声音会改变剪辑ab_lens的"先 A/B 再继续摆姿势"顺序

这里最容易被忽略的是 00:48:40 的那句"不管你做得多好,总会有制片人说你还能更便宜"。它不是为了自嘲,而是audit里"成本门禁"的理论依据:预演是一次性美术,最便宜的版本只要还能被判断就够。

2. Charge 复盘:把方法压成可脚本化的配方

7 分钟的cTx-n4OZXYE是整条工具链的"施工图",因为它的每一个动作都能对应到一个函数:

时间戳内容对应实现
00:00:22全局屏幕方向规则:Anar 一路从左到右去电池,从右到左回家audit(travel={"robot": "right"}),低于画面宽度 5% 的位移忽略
00:02:11画幅"尽早锁定",因为它严重影响摄影;设定传感器、不透明 passepartout("更准确的构图表示")、几档灰度setup_scene(res=..., fps=...);build_shots里passepartout_alpha = 1.0
00:02:44Ctrl+B 把摄像机绑到标记数据层等价写法marker.camera = cam(无需时间轴上下文)
00:02:52–00:03:24自动关键帧打开、主物体全打、全部 Constant;下一帧放替代版本做 A/B,赢家留在"完整十年"的第一帧shot_list帧号按十位对齐;make_stepped
00:03:24"每个镜头最多 10 帧,逼自己把每一帧当画稿和故事板";帧号递增导出、绝不覆盖block=10;render_stills的_v###版本命名
00:03:59独立剪辑文件给静帧找时间;下一镜 = 复制摄像机、10 帧后再绑、随便作弊但碰到什么就先打键animatic的NN_edit;key_block
00:04:32"摄像机运动会妨碍在剪辑里给表演 beats 找时间":简单推镜在剪辑里对静帧做push参数(在 FIT 缩放上做乘法)
00:05:50布局阶段在自己的文件里逐镜重建,用预演当指南第 9 步"在新场景对里迭代"

注意 00:02:11 的"不透明 passepartout"是一个视口显示设置。procedures.md专门标注它不影响渲染,所以它的价值只存在于实时会话里;这也解释了为什么audit要把它当成问题项而不是渲染项。

3. Dillon Gu:构图与焦距是两个独立决定

Dillon 的实验设计很干脆:动画不动,只换摄像机,为三种情绪各给一套镜头,并且每条选择都要说出理由。这把"镜头语言"从审美偏好变成了可复述的映射表。

时间戳情绪/手法读起来是什么
00:09:15 / 00:09:46"观众其实就在场景里";有人比机位高,你就觉得自己更弱机位即身体
00:07:38构图的规则可以都对,焦距错了氛围就换了焦距独立于构图
00:05:29–00:06:34角落仰视 + 手持,观众知道她不知道的事潜伏的观察者
00:10:17–00:11:22远距离广角(她很小、观察者保持距离)然后快速推近被盯上、有人锁定了目标
00:12:29切到外景就"不在动作里了",危险消失;改成室内特写、只露拐角的脚剪辑可以杀死情绪
00:16:44–00:22:51眼平中景"太安全";俯视慢推、线性关键帧的移轴变焦压力自上而下;世界失控
00:27:45–00:30:32偏中、背后=孤立;不露脸=只是又一天;太近意味着"要出事了"日常的语法
00:33:21"侧向移动是穿过画面最中性的方式"但用在悲伤角色上会杀掉张力
00:39:17过肩镜头留在摄像机已经在的那一侧肩膀180 度规则
00:45:57拒绝电视插入镜头,因为"连续两个无生命物体"降低张力audit报"两个插入镜头连排"
00:48:45产品镜头是全片最静的镜头运动的量要与情绪一致

技术实现上,handheld()在摄像机 X/Z 旋转上挂 NOISE 修改器,默认REPLACE把噪声居中在曲线上,ADD会整体偏移约 strength/2;key_lens()默认线性插值,正好对应"快速推近"和"移轴变焦"。

4. Story Tools:让"一个动作、多机位"变成剪辑结构

这场讲座的价值不在美术,而在时间线结构。历史阻塞点是"你能编辑序列,但不能同时做两件事"(00:02:21);5.0 的答案很克制:Sequencer 的场景选择器 + 场景时间同步。

  • 设置三件套(00:15:16):页脚开启 Sync,"否则什么都不会工作";钉住 Edit 场景,否则导出错东西;镜头场景开自动关键帧、Edit 里关掉——"两种自动关键帧"。
  • 场景资产(00:18:35):放在自己的文件里(同一文件内复制会坏),需要设置库路径;对场景条Shift+D是全拷贝,Alt+D是链接拷贝。
  • 覆盖(00:23:03):一个场景、一个动作、两台机位——把场景条拆开,每段一颗机位;拖剪辑点移动换机位的位置,滑移改变动作相位,"两个快捷键"完成重定时,而不是去搬关键帧。
  • 2.5D 画板(00:26:33):Grease Pencil 笔画画在绑到角色的绑定上,笔画跟着走而不用给位置做动画。
  • 删除语义(00:39:37):删掉场景条永远不会删掉场景,因为"场景没有用户";场景条内部仍尊重合成与 NLA;切换场景后首次播放慢(依赖图重建)。

在技能里,这套东西变成coverage()与animatic()的软切分:一个live镜头加若干cover=True镜头组成一条场景条,按剪辑点Strip.split(frame, split_method='SOFT'),每片各自scene_camera;retime_cut移动剪辑点的同时把标记和表格一起搬走,于是静帧、审计与场景播放保持一致。procedures.md还提醒:覆盖run 内每段的剪辑长度必须等于预演块长,否则动作在切点处会断。

5. Renato Roldan:画板要能承受"别人来动机位"

Renato 的两句信条被反复引用:"只要对摄像机成立,就成立"(00:16:19)、"越快越好";"没人会去动机位看你所有的小把戏"(00:24:32)。具体手法:

  • 00:12:17 一张平面画稿拆成不同深度的 Grease Pencil 物体,加一点摄像机运动就有视差,成本极低。
  • 00:17:28 灰色里只留一个跳色——红色。
  • 00:18:41 画板必须承载时间、构图和摄像机运动,即使剪辑师之后会改。
  • 00:25:10–00:28:38 把画稿绑到移动的 3D 平面代理上,从摄像机反推代理的运动:当代理转到边缘朝向,就说明这个镜头对 2D 动画很难——画板已经提前告诉你了。
  • 00:29:06 用可摆姿势的人体模型透过真实镜头拍,解决极端广角的绘制问题,并给 2D 画师一份对得上的布局。

"边缘朝向"这条被量化成本技能自己的阈值:EDGE_ON_DEG = 70.0,由facing_report()逐帧计算平面朝向轴与"指向摄像机"方向的夹角,超过就进flagged。

6. Paul Coulthard(Spitfire):2.8x 时代的工作顺序,以及 API 翻译

这场是文档里"版本跨度"的实证:界面是 2.x/2.8x 的,但顺序至今有效。

  1. 00:15:58 先在地面画路径(Surface 放置,抬高偏移避免穿插);00:14:43 沿路径打关键帧(演示里约 40 帧一个)。
  2. 00:18:09 在新图层上用洋葱皮画粗略姿势。
  3. 00:19:47先确定摄像机,再细化。
  4. 00:32:23 脚接触地面用常量插值,只有飞行或滑行才用线性。
  5. 00:34:10 用 3D 代理人体承载困难路径(地形、飞行),父子关系用 Keep Transform;代理旋转到让平面画看起来不对时就得重画;代理还能跨软件交接。
  6. 00:41:44 Track To(-Z,上轴 Y)让被跟随对象在路径编辑时保持居中。
  7. 00:44:46 用绑定到摄像机的标记切镜。
  8. 00:26:33 镜头语言:24 mm 广角、近距离畸变、长焦压缩并强化两人对峙、广角拍远景。

"Track To" 在 5.2 的脚本等价物就是look_at():

d = Vector(target) - obj.location obj.rotation_euler = d.to_track_quat("-Z", "Y").to_euler()

标记切镜的等价物是build_shots里的sc.timeline_markers.new(id, frame=...).camera = cam。文档说"API 已翻译",指的就是这类映射:界面动作会变,数据结构(标记、摄像机、父子、插值)不变。

7. BouncyBrain:玻璃机位架与 6 fps

几乎无解说的延时,但两个机制很实用:

  • 00:09:45 "画在玻璃上":主角画稿与摄像机都是圆环空物体的子级,圆环位于主体上方。绕主体转 = 旋转圆环(画稿在画面里位置不变);推拉 = 让摄像机沿自身局部 Z 移动(画稿在屏幕上变大变小)。
  • 00:11:27 世界特效(爆炸)留在世界空间,不跟着玻璃走。
  • 00:08:03 故事板按 6 fps 画,再在剪辑器里重定时;镜头用复制场景实现。

glass_rig()实现了这个父子结构,facing_report()负责在"画稿被带得转过 70°"时报警。6 fps 则是一个真实的坑:一个 12 帧、6 fps 的场景条放进 24 fps 剪辑里,时长仍是 12 帧——播放快 4 倍。procedures.md的陷阱复现里专门断言了duration == 12,所以规则是"导出静帧或重定时",而不是"直接把板场景当场景条塞进去"。

从时间戳到代码:三类转换路径

sources.md的时间戳不是装饰,它们落到代码里只有三种命运:

类型例子处理方式
可直接编码10 帧/镜、帧号按十位、全集 Constant、35 mm/F5.6/clip 0.01–200、标记绑机位shot_list、make_stepped、build_shots的固定参数
需要换算或加阈值"眼高"→相对两人眼高均值 ±0.15 m;"边缘朝向"→70°;"一次一条信息"→beats 唯一且有序;"两倍到三倍"→1.6–1.9 s/beatEYE_TOL、EDGE_ON_DEG、shot_list的校验、运行时预算
只能人判是否好笑、情绪是否落地、笑点是否被榨太久、表演是否对评论表最后一节"数字判不了什么"

SKILL.md的数字表把可编码量固定下来,并标注来源:10 帧块与"十位命名"来自 Charge/Hjalti;35 mm 剧场、约 60 mm 隔离、F5.6、裁剪 0.01–200 m 来自 Hjalti;13/22/25 s 对 47/40 s 来自幻灯片 00:46:01;三姿势怒气来自 Hjalti;6 fps 来自 BouncyBrain;手持噪声 0.010–0.018 rad、18–26 帧尺度来自视频指南(峰值实测约为强度的 0.66 倍)。

而尺寸表(可见高度 = 主体高度 × 4 / 2 / 1.15 / 0.8 / 0.6 / 0.4 / 0.25 / 0.12)、距离公式d = 可见高度 × 焦距 / 传感器高、0.15 m 眼高容差、70° 阈值、5% 屏幕宽度阈值,全部标[added]——它们是标准构图语法加 S6 接触表校准的结果,不是专家说过的数字。在bx_previs.py里它们就是常量:

SENSOR_W = 36.0 SIZES = {"ews": 4.0, "wide": 2.0, "full": 1.15, "mws": 0.8, "medium": 0.6, "mcu": 0.4, "cu": 0.25, "ecu": 0.12} EYE_TOL = 0.15 EDGE_ON_DEG = 70.0 POP = (0.85, 0.1, 0.08, 1) # Renato: red as the one popping colour

见 bx_previs.py。

版本考古:屏幕上是 2.8x,执行要按 5.2.1

sources.md开篇那句"每个 API 事实都在 5.2.1 上重新校验"是整页最工程化的一句。它意味着讲座里的操作不能照抄,必须换成当前的数据层写法。SKILL.md的 "Blender 5.2 notes" 给出了这些替换:

  • bpy.ops.render.opengl在--background下直接失败;无头要么用 Workbench 的render.render,要么在实时会话里用锁定摄像机的视图。
  • keyframe_insert()不受"新建关键帧插值"偏好的影响(偏好设为 CONSTANT,键仍是 BEZIER),所以必须调用make_stepped()遍历 F-Curve 强制修改——5.x 还要先通过bpy_extras.anim_utils.action_get_channelbag_for_slot拿到 channelbag,因为action.fcurves已经不存在。
  • 在非窗口场景上frame_set后变换是陈旧的,此时write_still还会用窗口场景的帧;所以测量前必须activate()。
  • 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 是关的,armature_basic_human_metarig_add会报 "could not be found",必须先ensure_rigify()。
  • Selection Sets、Storypencil、Grease Pencil Tools 不再随包;用名为layout的骨骼集合替代"布局选择集"。
  • GP v3 笔画可以在无头 Workbench 静帧里渲染。

这十条里至少四条能直接对应到讲座的原操作:Ctrl+B 绑机位、Track To、6 fps 板场景、Rigify 代理。sources.md声称"回检",procedures.md的 P16 则把坑复现成断言(例如bpy.ops.render.opengl抛出的错误信息里必须含background mode)。这就是从"看过视频"到"证据可执行"的分界。

分歧处理:什么时候听谁的

七位专家并非观点一致。expert-notes.md用一张分歧表把"选 A 还是选 B"变成"由什么决定",这比罗列原则有用得多:

选择选项 A选项 B判定条件
预演里是否给摄像机做动画不做:静帧,推近在剪辑里伪造(Charge 00:04:32)做,当运动本身承载故事:交接、移焦(Hjalti 00:18:54);变焦做情绪(Dillon 00:10:49)这个运动是意义还是附带?
双人场景的焦距35 mm 装下极端值并锁定(Hjalti 00:13:23)60 mm 隔离与压缩(Hjalti 00:35:46;Spitfire 00:27:05)剧场式构图 对 电影式隔离;3D 里广角会进口背景
广角的含义戏剧性、远景、大前景远距离监视感;极端且贴近时是"不对劲"机位距离
每镜帧数1 张静帧、10 帧块(Charge)多几个 beat 以检验后勤(Hjalti 详细版 00:16:07)是验证想法还是验证动作物理上放得下
方法3D 预演、半故事板(Charge)手绘板进动画分镜;混合(Renato、Spitfire、Pablo)团队技能、预算、周期、最终风格;无手绘板的 agent 默认 3D
换机位标记绑摄像机场景条按机位拆分静帧与 10 帧块用标记;一个连续动作多角度且要重定时,用覆盖 run
剪辑放在哪独立剪辑文件(Charge)同文件场景对,或 5.0+ 的 Edit 场景同步版本、场景重量、交接需要
主角画稿的位置摄像机机位架上的玻璃(BouncyBrain)代理上的世界空间(Spitfire、Renato)摄像机只跟一个角色、永不侧看 对 多角度看同一动作
中性还是表态从中性开始再 A/B(Hjalti)情绪已定就直接表态(Dillon)情绪是否已决定;中立侧角用在悲伤上会杀张力
跨剪辑换焦距每镜可换(Hjalti、Dillon)切点不换镜头(给视频模型的指南)人的剪辑 对 生成式模型的引导片

最后一行是理解整页边界的钥匙。

边界:这七场讲座不负责"给视频模型的引导片"

sources.md的末段专门划了一条线:给 render-to-real 视频模型(如 Seedance)做引导用的 playblast,其机位语法、手持幅度和"主角在框内"的审计来自这类引导片的生产测试,并且只在和上面这些专家一致的地方才保留。

不一致的地方在SKILL.md里写得更直白:引导片遵循另一套规则——饱和色身份、切点不跳焦距、缓入缓出的运动、交接表——这些既不在本工作流里,也不被P.audit检查。所以不要把导演看的动画分镜直接丢给视频模型,而要用scenario-blender-blockout重建,在那里角色通常变成彩色胶囊,由模型自己动。

同理,"颜色"这条也有归属:灰度加一个跳色(红色)跟随 Charge 与 Renato;饱和身份色板是给视频模型的,不是给导演的。

如何用这份索引做一次可复现的检查

技能安装后,两个技能目录是并排的(实际仓库中位于skills/dcc/blender/),bx_previs依赖 lead 技能的scripts/:

npx skills add scenario-labs/skills --skill scenario-blender-previs-storyboard

导入并按来源建一份最小验证:

import os, sys SKILLS = "/abs/path/to/skills/dcc/blender" # 同时含 scenario-blender-previs-storyboard 与 scenario-blender-expert OUT = "/abs/path/to/output" sys.path += [os.path.join(SKILLS, "scenario-blender-previs-storyboard", "scripts"), os.path.join(SKILLS, "scenario-blender-expert", "scripts")] import bpy import bx_previs as P BEATS = ["店主背对店面。", "小机器人悄悄靠近零食。", "店主转身。", "机器人像玩具一样僵住。"] SHOTS = [ dict(id="sh010", beats=[1, 2], subjects=["robot", "keeper"], loc=(-1.5, -1.4, 0.55), aim=(1.2, 0.9, 0.75), lens=28, size="wide", dur=3.0, intent="机器人高度的反讽双人镜"), dict(id="sh020", beats=[3], subjects=["keeper"], size="mcu", lens=50, height="eye", azimuth=-35, dur=1.5, intent="他眼线上的中性 MCU"), dict(id="sh030", beats=[4], subjects=["robot"], loc=(2.0, 0.55, 1.72), aim="robot", lens=35, dur=2.0, block=48, live=True, pov=True, intent="他的 POV,快速推近:他盯上了"), ] table = P.shot_list(BEATS, SHOTS, start=10) # 缺失/重复/乱序会直接 ValueError

这段对应的是来源 1 的 00:07:26 与来源 2 的 00:03:24:shot_list会校验 beats 完整性,并把镜头起点对齐到十位(一个更长的live块会把下一镜推到下一个十年)。随后:

sc = P.setup_scene("01_blend procedures", res=(1920, 1080), fps=24, pct=20) # 来源 2 的 00:02:11 cams = P.build_shots(sc, table, chars) # 36 mm 传感器、不透明 passepartout、clip 0.01–200、标记绑机位 rep = P.audit(sc, table, chars, line=("robot", "keeper"), stepped=MOV) assert rep["problems"] == [], rep["problems"]

audit会把来源里的判断变成字符串问题:主主体眼线出框、眼睛被blockers挡住(射线检测会报出遮挡物名字)、非眼高机位却没有intent、越过动作线、屏幕方向不符、预演块超过 10 帧、连续两个无人物镜头、实拍块之外的非常量关键帧、passepartout 不透明、静帧镜头里机位在动、渲染引擎不是 Workbench;灯光只进warnings,因为 Workbench 忽略它们。

跑无头脚本用文档给的标准形式:

blender --background --factory-startup --python-exit-code 1 --python <test>.py

procedures.md声明test_03_procedures.py会把该文档的代码块逐字抽取执行(只替换 P0 的两个路径),另有test_01(完整搭建一个场景,27 项检查)、test_02(API 陷阱、覆盖、混合,27 项)、test_04(passepartout、雾、覆盖重定时、成本门禁、Rigify 代理,22 项)。如前述,该测试目录不在当前仓库快照内,这条声明属于文档事实而非可当场运行的事实——引用时应标注清楚。

相关文件索引

文件作用
SKILL.md姿态、工作流九步、数字表、摄像机语言、质量门禁、常见错误、5.2 说明
references/sources.md七场来源、专家资历、最适合的用途、最佳时间戳
references/expert-notes.md按专家整理的深读、[added]清单、分歧与判定条件
references/procedures.mdP0–P21 可运行代码与陷阱复现
references/critique.md评审量表、数字判不了什么、S6 实例与三轮修正记录
scripts/bx_previs.py工具实现:shot_list、build_shots、audit、animatic、coverage、fog_for_shot等
skills/dcc/blender/README.md家族定位、安装命令、环境要求与证据说明

把sources.md当成一张地图来用:想在某个判断上较真,就按时间戳回到那一分钟;想知道这条判断有没有被工程化,就去bx_previs.py找同名函数;想确认它是不是专家原话,就看expert-notes.md里有没有[added]。这三步走完,一条预演规则才算真正"有据可依"。

【免费下载链接】skills

Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through the Scenario MCP, plus expert teams that drive Blender, Maya, ZBrush, Unreal, and Unity.

项目地址:https://gitcode.com/GitHub_Trending/skills63/skills
点击查看免费下载
上一篇:7天精通SolidityPy:智能合约形式化验证完整指南
下一篇:15分钟跑完240条抖音视频:开源工具douyin-downloader上手指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询