@ninkch/dsh-infinite-canvas 0.18.7 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -10
- package/README.zh-CN.md +46 -9
- package/assets/canvas-craft/SKILL.md +169 -0
- package/assets/canvas-studio/SKILL.md +11 -0
- package/assets/director/engine.js +5177 -0
- package/assets/director/models/bld_a.json +1 -0
- package/assets/director/models/bld_b.json +1 -0
- package/assets/director/models/bld_c.json +1 -0
- package/assets/director/models/bld_d.json +1 -0
- package/assets/director/models/bld_e.json +1 -0
- package/assets/director/models/bld_f.json +1 -0
- package/assets/director/models/bld_g.json +1 -0
- package/assets/director/models/bld_h.json +1 -0
- package/assets/director/models/bld_i.json +1 -0
- package/assets/director/models/bld_j.json +1 -0
- package/assets/director/models/bld_skyscraper_a.json +1 -0
- package/assets/director/models/bld_skyscraper_b.json +1 -0
- package/assets/director/models/bld_skyscraper_c.json +1 -0
- package/assets/director/models/bld_skyscraper_d.json +1 -0
- package/assets/director/models/cesiumman.json +1 -0
- package/assets/director/models/furn_bedDouble.json +1 -0
- package/assets/director/models/furn_bench.json +1 -0
- package/assets/director/models/furn_bookcaseClosed.json +1 -0
- package/assets/director/models/furn_cabinetTelevision.json +1 -0
- package/assets/director/models/furn_chair.json +1 -0
- package/assets/director/models/furn_kitchenBar.json +1 -0
- package/assets/director/models/furn_lampRoundFloor.json +1 -0
- package/assets/director/models/furn_rugRectangle.json +1 -0
- package/assets/director/models/furn_stoolBar.json +1 -0
- package/assets/director/models/furn_tableCross.json +1 -0
- package/assets/director/models/furn_televisionModern.json +1 -0
- package/assets/director/models/index.json +285 -0
- package/assets/director/models/soldier.json +1 -0
- package/assets/director/models/tree_blocks.json +1 -0
- package/assets/director/models/tree_cone.json +1 -0
- package/assets/director/models/tree_default.json +1 -0
- package/assets/director/models/tree_detailed.json +1 -0
- package/assets/director/models/tree_fat.json +1 -0
- package/assets/director/models/tree_oak.json +1 -0
- package/assets/director/models/tree_palm.json +1 -0
- package/assets/director/models/tree_palmDetailedTall.json +1 -0
- package/assets/director/models/tree_palmTall.json +1 -0
- package/assets/director/models/tree_pineDefaultA.json +1 -0
- package/assets/director/models/tree_pineRoundA.json +1 -0
- package/assets/director/models/tree_thin.json +1 -0
- package/assets/director/models/xbot.json +1 -0
- package/client.js +4475 -228
- package/docs/UI-RULES.md +4 -1
- package/docs/director-3d.md +578 -0
- package/docs/guide.en.md +84 -8
- package/docs/guide.zh-CN.md +85 -9
- package/docs/images/director-assets-buildings-en.png +0 -0
- package/docs/images/director-assets-buildings-zh.png +0 -0
- package/docs/images/director-assets-characters-en.png +0 -0
- package/docs/images/director-assets-characters-zh.png +0 -0
- package/docs/images/director-assets-furniture-en.png +0 -0
- package/docs/images/director-assets-furniture-zh.png +0 -0
- package/docs/images/director-assets-primitives-en.png +0 -0
- package/docs/images/director-assets-primitives-zh.png +0 -0
- package/docs/images/director-assets-trees-en.png +0 -0
- package/docs/images/director-assets-trees-zh.png +0 -0
- package/docs/images/director-daylight-en.png +0 -0
- package/docs/images/director-dynamic-en.png +0 -0
- package/docs/images/director-dynamic-zh.png +0 -0
- package/docs/images/director-live-render-zh.png +0 -0
- package/docs/images/director-static-en.png +0 -0
- package/docs/images/director-static-zh.png +0 -0
- package/docs/images/help-en.png +0 -0
- package/docs/images/help-zh.png +0 -0
- package/docs/images/overview-en.png +0 -0
- package/docs/images/overview-zh.png +0 -0
- package/docs/images/panel-assets-en.png +0 -0
- package/docs/images/panel-assets-zh.png +0 -0
- package/docs/images/panel-bible-zh.png +0 -0
- package/docs/images/panel-projects-zh.png +0 -0
- package/docs/images/panel-settings-en.png +0 -0
- package/docs/images/panel-settings-zh.png +0 -0
- package/docs/images/scene1-zh.png +0 -0
- package/docs/images/shortcuts-en.png +0 -0
- package/docs/images/shortcuts-zh.png +0 -0
- package/docs/images/video-node-refs.png +0 -0
- package/docs/storyboard-segmentation.md +446 -0
- package/index.js +223 -5
- package/package.json +5 -2
- package/docs/images/panel-bible-en.png +0 -0
- package/docs/images/panel-projects-en.png +0 -0
- package/docs/images/pipeline-zh.png +0 -0
- package/docs/images/provider-detail.png +0 -0
package/README.md
CHANGED
|
@@ -25,28 +25,44 @@ The canvas and the agent share one brain. Every node is an AI workbench, and the
|
|
|
25
25
|
|
|
26
26
|
The heavy lifting — bibles, episode scripts, storyboard breakdowns, batches of reference images — is exactly what the agent is fast at. You then fine-tune the 20% you care about directly on the nodes: tweak a prompt, reorder references, re-roll one shot, pull an older result from history.
|
|
27
27
|
|
|
28
|
-
## Case study:
|
|
28
|
+
## Case study: 门缝里的字条
|
|
29
29
|
|
|
30
|
-
A full episode produced end to end with the flow above. The canvas
|
|
30
|
+
A full episode produced end to end with the flow above. The canvas with the whole episode laid out — the icon rail on the left adds nodes, the **Projects** panel on the right manages the canvases of the current project (第1集 / 第2集), while assets and the bible stay shared across the project:
|
|
31
31
|
|
|
32
|
-

|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Shot 1 up close — storyboard → character/scene turnaround images → video, with the reference relationships drawn as edges:
|
|
35
35
|
|
|
36
|
-

|
|
37
37
|
|
|
38
|
-
A
|
|
38
|
+
A node with its generation panel: click the content area to open it — references live in a draggable strip at the top, and model / ratio / quality / count sit on one row:
|
|
39
39
|
|
|
40
|
-

|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
The bible modal — world view, style, character/scene/prop entries, each able to bind reference assets:
|
|
43
43
|
|
|
44
|
-

|
|
45
45
|
|
|
46
|
-
The
|
|
46
|
+
The assets modal — a card grid with search, category and project filters; videos use their first frame as the thumbnail (EN UI):
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
The project dropdown on the top-left project name: every row shows `project · canvas`, renames happen in place, and more than five projects paginate with a page-jump box (ZH UI):
|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
|
|
54
|
+
The Settings panel — data root, Craft status, Skill boost (General expert), text model and the image/video/TTS providers (EN UI):
|
|
47
55
|
|
|
48
56
|

|
|
49
57
|
|
|
58
|
+
Shortcuts and gestures:
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
Help & feedback:
|
|
63
|
+
|
|
64
|
+

|
|
65
|
+
|
|
50
66
|
## Work beside the chat
|
|
51
67
|
|
|
52
68
|
The canvas is not a separate window you have to switch to. It opens as a **tab in the Harness right pane**, so you can talk to the agent on the left and storyboard on the right **at the same time** — ask for a change in chat and watch the nodes update in place.
|
|
@@ -59,6 +75,27 @@ The canvas is not a separate window you have to switch to. It opens as a **tab i
|
|
|
59
75
|
|
|
60
76
|
> One live canvas at a time (shared node graph and generation state): opening it in the pane while the full-page panel is also open **moves** the canvas rather than duplicating it — the other side shows a "move the canvas here" button.
|
|
61
77
|
|
|
78
|
+
## 3D Director Stage (previz)
|
|
79
|
+
|
|
80
|
+
A blocking & previz workspace that lives inside the same project: place real glTF characters and set dressing, frame them with real cameras, and send the result back to the canvas as an image or video node.
|
|
81
|
+
|
|
82
|
+
- **Three modes** — **Static previz** (studio look, paused), **Dynamic previz** (studio look + timeline playback), **Live render** (final look: daylight, shadows, materials, no guides).
|
|
83
|
+
- **Asset library** — characters, trees, furniture, buildings, primitives, and ancient-street set pieces (pitched roofs, stalls, stone steps) in one searchable rail.
|
|
84
|
+
- **Direct manipulation** — local-axis move/rotate/scale gizmo, box select, **Alt-drag a scale handle = uniform scale**, **W/A/S/D + Q/E fly navigation** (hold Shift for 4x speed).
|
|
85
|
+
- **Shots & timeline** — shot rail with per-shot start/end, camera keyframes, ease curves, markers and loop playback.
|
|
86
|
+
- **Camera & optics** — FOV, focal length, sensor size and roll stay consistent; shot-size presets show the live framing percentage.
|
|
87
|
+
- **Export** — PNG still or MP4/WebM clip, dropped straight back onto the canvas as an image or video node.
|
|
88
|
+
|
|
89
|
+

|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+

|
|
94
|
+
|
|
95
|
+
Assets are shared with the canvas: the characters, trees, furniture and buildings you already generated are directly usable as previz set dressing.
|
|
96
|
+
|
|
97
|
+
Full walkthrough — asset tabs, gizmo, keyboard map, shots and export: **[User guide → 3D Director Stage](./docs/guide.en.md#8-3d-director-stage)**.
|
|
98
|
+
|
|
62
99
|
## How it works
|
|
63
100
|
|
|
64
101
|
```mermaid
|
package/README.zh-CN.md
CHANGED
|
@@ -25,28 +25,44 @@
|
|
|
25
25
|
|
|
26
26
|
设定集、整集剧本、分镜拆解、成批参考图——这些批量工作正是 Agent 最快的部分。跑完后你只需要在画布上精修真正在意的那 20%:改提示词、调参考图顺序、重掷某一个镜头、从历史里回退旧结果。
|
|
27
27
|
|
|
28
|
-
##
|
|
28
|
+
## 案例:门缝里的字条
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
用上面的流程完整制作的一集。整集铺开后的画布全览——左侧一列图标添加节点,右侧「项目」面板管理当前项目的画布(第1集 / 第2集),资产与设定集在项目内共享:
|
|
31
31
|
|
|
32
32
|

|
|
33
33
|
|
|
34
|
-
场1
|
|
34
|
+
场1 的镜头组——场1分镜表 → 角色/场景多视图 → 场1视频,节点之间用连线表达参考关系:
|
|
35
35
|
|
|
36
|
-

|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
节点 + 生成面板:点击节点内容区弹出面板,参考图在顶部缩略图条里可拖拽排序,模型/比例/清晰度/张数一行排开:
|
|
39
39
|
|
|
40
|
-

|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
设定集弹窗——世界观、风格基调、角色/场景/道具条目,每条都可以绑定参考资产:
|
|
43
43
|
|
|
44
|
-

|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
资产弹窗——卡片网格,搜索/分类/项目筛选,视频以首帧作为缩略图:
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
左上角项目名点开是项目下拉:每行显示「项目名 · 画布名」,可直接就地改名,超过 5 个项目自动分页并可跳页:
|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
|
|
54
|
+
设置页签——数据根目录、Craft 状态、技能增强(通用专家)、文本模型与图片/视频/TTS 供应商:
|
|
47
55
|
|
|
48
56
|

|
|
49
57
|
|
|
58
|
+
快捷键与操作:
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
帮助与反馈:
|
|
63
|
+
|
|
64
|
+

|
|
65
|
+
|
|
50
66
|
## 在对话旁边工作
|
|
51
67
|
|
|
52
68
|
画布不是必须切过去的另一个窗口——它可以作为 **Harness 右侧面板里的一个页签**打开,左边对话、右边分镜,**同时进行**:在对话里提要求,右边节点实时跟着变。
|
|
@@ -59,6 +75,27 @@
|
|
|
59
75
|
|
|
60
76
|
> 同一时刻只有一个画布实例(共享节点图与生成状态):在右栏打开时若全屏面板也开着,画布会**被移动到右栏**而不是复制一份——另一侧显示「把画布切换到这里」按钮。
|
|
61
77
|
|
|
78
|
+
## 3D 导演台(预演)
|
|
79
|
+
|
|
80
|
+
同一项目里内置的摆位与预演工作台:把真实 glTF 角色与场景陈设摆进场景,用真实机位取景,再把结果作为图片或视频节点导回画布。
|
|
81
|
+
|
|
82
|
+
- **三种模式**:**静态预演**(影棚外观、暂停摆位)、**动态预演**(影棚外观 + 时间轴播放)、**实时渲染**(成片外观:日光、阴影、材质,无辅助线)。
|
|
83
|
+
- **资产库**:人物、树木、家具、建筑、几何体,以及古街陈设(坡屋顶、摊位、石阶),一个搜索栏全覆盖。
|
|
84
|
+
- **直接操作**:局部轴移动/旋转/缩放操作轴、框选、**Alt + 拖轴端方块 = 等比缩放**、**W/A/S/D + Q/E 键盘漫游**(按住 Shift 加速 4 倍)。
|
|
85
|
+
- **分镜与时间轴**:分镜轨、单镜起止、机位关键帧、缓动曲线、标记、循环播放。
|
|
86
|
+
- **机位与光学**:FOV、焦段、传感器尺寸、滚筒角联动一致;景别预设直接显示当前构图占比。
|
|
87
|
+
- **导出**:PNG 截图或 MP4/WebM 预演视频,直接落成画布上的图片/视频节点。
|
|
88
|
+
|
|
89
|
+

|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+

|
|
94
|
+
|
|
95
|
+
资产与画布共享:你已经生成的角色、树木、家具、建筑,可以直接拿来当预演场景的摆件。
|
|
96
|
+
|
|
97
|
+
完整操作(资产页签、操作轴、快捷键表、分镜、导出):**[操作手册 → 3D 导演台](./docs/guide.zh-CN.md#8-3d-导演台)**。
|
|
98
|
+
|
|
62
99
|
## 工作方式
|
|
63
100
|
|
|
64
101
|
```mermaid
|
|
@@ -215,6 +215,145 @@ B:……
|
|
|
215
215
|
- ❌ 反例:`镜头缓慢推近。`(全片每镜都这样写 = 单调平移,观众看不出情绪变化)
|
|
216
216
|
- **一镜一个连续动作段落**;不要在一个镜头里写多个动作串联,也不要写跨镜切换(切镜由分镜表组织)。
|
|
217
217
|
- **首帧与运动不重复**:visual 描述静止状态,motion 描述之后发生的变化。
|
|
218
|
+
- **`motion` 由两部分组成**:**主体动作节拍**(`timeBeats` 三拍,见下节)+ **运镜**(起点 → 方式 → 终点,
|
|
219
|
+
见 `camera` 十二式)——只写运镜就是"只会平移"的根源。
|
|
220
|
+
|
|
221
|
+
### timeBeats(每镜三个时间节拍,强制动作有层次)
|
|
222
|
+
|
|
223
|
+
**硬规则:每镜必须把主体动作拆成 3 个时间节拍——`[0s] 起势 → [中段] 发力 → [结尾] 落点`。**
|
|
224
|
+
|
|
225
|
+
两条写法都合法,**优先用结构化字段**(画布会把字段单独注入视频提示词,段落更清晰):
|
|
226
|
+
|
|
227
|
+
1. **结构化(首选)**:分镜 JSON 里给独立的 `timeBeats` 数组,每拍一条:
|
|
228
|
+
`"timeBeats":["0s 背对镜头、肩线绷住","1.2s 肩先转、眼后转、右手撑住桌面","2.4s 停在 3/4 侧脸、指节压白"]`
|
|
229
|
+
2. **写进 `motion`(兼容旧格式)**:`[0s] … → [中段] … → [结尾] …;<运镜,起点 → 终点>`
|
|
230
|
+
|
|
231
|
+
模型只演写出来的节拍;只写"缓缓转头"= 一个节拍 = 模型只会做最省力的平移。
|
|
232
|
+
|
|
233
|
+
| 镜头类型 | [0s] 起势 | [中段] 发力 | [结尾] 落点 |
|
|
234
|
+
|---|---|---|---|
|
|
235
|
+
| 对话镜 | 低头看信、嘴半张 | 抬眼看向对方、把信按在桌上 | 指尖顶住桌面、话说完、视线不移 |
|
|
236
|
+
| 冲撞镜 | 站在门口、肩线绷紧 | 一步跨进来、手掌推向桌面(椅子被撞开) | 手停在桌面、对方后退半步、纸散开 |
|
|
237
|
+
| 情绪镜 | 背对镜头、肩膀起伏 | 肩先转、眼睛后转、右手撑住桌面 | 停在 3/4 侧脸、眼泪停在睫毛上、不眨眼 |
|
|
238
|
+
|
|
239
|
+
- **该做**:三段都写**可见动作**(身体部位 + 方向 + 落点),三段之间姿势/位置**必须真的变化**,每段都能被拍到一帧。
|
|
240
|
+
- **不该做**:三段写同一个动作的不同情绪("他犹豫 → 更犹豫 → 非常犹豫")= 0 个节拍;也不要写心理("他下定决心")。
|
|
241
|
+
- **动作量下限**:`duration ≥ 2s` 的镜头,timeBeats **不得少于 3 条**;`≤1s` 的快切镜允许 1 条(多写演不完)。
|
|
242
|
+
- ✅ 正例:`"timeBeats":["0s 背对镜头、肩线绷住","1.2s 肩先转、眼后转、右手撑住桌面","2.4s 停在 3/4 侧脸、指节压白"]` + `motion: "手持微晃左移跟拍,起于他右后方、止于他正面偏左"`
|
|
243
|
+
- ❌ 反例:`他缓缓转头`——一个节拍,模型只会给一个平移/微动。
|
|
244
|
+
- **判定**:能数出 3 个带时间锚点(`[0s]` / `[中段]` / `[结尾]`,或"起初/随即/最后")的可见动作阶段,
|
|
245
|
+
且结尾状态与 `tail` 写的接点一致。
|
|
246
|
+
|
|
247
|
+
### camera(机位 / 镜头 / 运动三件套,禁止只写"推拉摇移")
|
|
248
|
+
|
|
249
|
+
三件套分工:**机位与镜头写进 `visual`,运动写进 `motion`**。只写"推近"等于没说清用什么镜头、从哪推到哪。
|
|
250
|
+
|
|
251
|
+
**① 景别 × 焦段**(`visual` 里写"近景,85mm")
|
|
252
|
+
|
|
253
|
+
| 景别 | 常用焦段 | 典型用法 | 情绪效果 |
|
|
254
|
+
|---|---|---|---|
|
|
255
|
+
| 大远景 / 远景 | 超广角 14–24mm | 环境交代、人物渺小 | 孤独、压迫、史诗感 |
|
|
256
|
+
| 全景 | 广角 24–35mm | 关系建立、动作调度 | 客观、疏离、空间清楚 |
|
|
257
|
+
| 中景 | 标准 50mm | 对话、信息交换 | 自然、旁观、贴近人眼 |
|
|
258
|
+
| 中近景 / 近景 | 中长焦 85mm | 情绪、反应镜头 | 亲近、聚焦、背景柔化 |
|
|
259
|
+
| 特写 / 大特写 | 长焦 135–200mm | 细节揭示、情绪爆点 | 压缩、紧张、窒息 |
|
|
260
|
+
|
|
261
|
+
**② 光圈 × 景深**(`visual` 里写"f/2.8 浅景深")
|
|
262
|
+
|
|
263
|
+
| 光圈 | 景深观感 | 适用 |
|
|
264
|
+
|---|---|---|
|
|
265
|
+
| f/1.4 | 极浅,背景糊成色块 | 梦幻人像、夜戏孤光、情绪特写 |
|
|
266
|
+
| f/2.8 | 浅,主体与背景分离 | 叙事主力、对话镜 |
|
|
267
|
+
| f/4 | 中等,人与背景都可辨 | 群像、双人对峙 |
|
|
268
|
+
| f/8 | 深,环境全清晰 | 建立镜头、动作全景、纪实 |
|
|
269
|
+
|
|
270
|
+
判定:**情绪镜 / 冲撞镜必须写焦段与光圈**(大特写 135–200mm + f/1.4–2.8;远景 14–24mm + f/8);
|
|
271
|
+
其余镜头可省略。全场统一 f/1.4 = 背景全糊、看不出在哪,不合格。
|
|
272
|
+
|
|
273
|
+
**③ 运镜十二式**(写进 `motion` 的"运动方式"段,必须带起点 → 终点)
|
|
274
|
+
|
|
275
|
+
| 运镜 | 一句触发条件 |
|
|
276
|
+
|---|---|
|
|
277
|
+
| 推近 | 要压向情绪或让人看清细节时(从中景推到近景,不是一直推) |
|
|
278
|
+
| 后拉 | 要揭示处境、让观众从人物身上抽离时 |
|
|
279
|
+
| 左摇 | 要顺着视线往左带出新信息时 |
|
|
280
|
+
| 右摇 | 要带出主体右侧的人或空间关系时 |
|
|
281
|
+
| 仰摇 | 要从低往高拍、制造压迫或崇高感时 |
|
|
282
|
+
| 俯摇 | 要从高往低拍、揭示布局或让主体显弱时 |
|
|
283
|
+
| 左移跟拍 | 人物横向走位大(超过画面 1/4)时,镜头同速横跟 |
|
|
284
|
+
| 前移穿入 | 要穿过前景进入场景、形成沉浸感时 |
|
|
285
|
+
| 升起俯视 | 要收尾揭示环境规模、或人物被环境吞没时 |
|
|
286
|
+
| 左环绕 | 对峙/宣言要转出轮廓与空间层次时 |
|
|
287
|
+
| 甩镜 | 冲撞/转场要硬切到新主体时(带运动模糊,切完必须稳住) |
|
|
288
|
+
| 焦点转移 | 注意力要从人转到道具、或从道具转回人时(机位不动,只变焦平面) |
|
|
289
|
+
|
|
290
|
+
其余可用:右移跟拍 / 右环绕 / 下降贴近 / 后退撤离 / 变焦推进 / 定镜凝视——同法写"起点→终点",不要只写名字。
|
|
291
|
+
|
|
292
|
+
- **归并大类(「连续三镜不同运动」自检时按大类比)**:推(推近 / 前移穿入)、拉(后拉)、
|
|
293
|
+
摇(左摇 / 右摇 / 仰摇 / 俯摇)、跟(左移 / 右移跟拍)、升降(升起 / 下降)、环绕、甩、变焦(变焦推进 / 焦点转移)、手持。
|
|
294
|
+
|
|
295
|
+
**④ 单镜容量上限(超了就拆镜,这是稳定性的来源)**
|
|
296
|
+
|
|
297
|
+
| 项目 | 上限 | 怎么判(可机械核对) |
|
|
298
|
+
|---|---|---|
|
|
299
|
+
| 主运镜 | **1 个** | `motion` 里能数出两个不同运动动词(推+摇 / 移+环绕)= 超限 |
|
|
300
|
+
| 主动作链 | **1 条**(起势→发力→落点) | 出现两个互不相干的目标动作("转身" + "端起杯子")= 超限 |
|
|
301
|
+
| 主要角色 | **2 名** | `characters` 数组 > 2,且都要在画面里演戏 = 超限 |
|
|
302
|
+
| timeBeats | **3 条** | `duration ≥ 2s` 的镜头不足 3 条 = 不合格(见上节) |
|
|
303
|
+
|
|
304
|
+
超限一律**拆镜**(换景别 / 换机位接),不要在一镜里堆——堆了模型只执行前半段,下一镜必然对不上。
|
|
305
|
+
|
|
306
|
+
### vfx(特效与物理细节,不写就没有)
|
|
307
|
+
|
|
308
|
+
视频模型**不会自己加特效**:不写就是空白。`vfx` 没有独立字段——粒子/光效/物理/环境写进 `visual`,
|
|
309
|
+
镜头类(晃动 / 呼吸 / 拖影)写进 `motion`。
|
|
310
|
+
|
|
311
|
+
| 类别 | 写法示例 | 适用 |
|
|
312
|
+
|---|---|---|
|
|
313
|
+
| 粒子 | 雨丝斜打(细密、有方向)、尘粒在光柱里浮动、雪片近大远小、火星随呼吸明灭 | 氛围 / 苦情 / 古装 |
|
|
314
|
+
| 光效 | 逆光镜头光斑、路灯钠黄溢光、闪电瞬时照亮半张脸、手电光柱切过烟雾 | 夜戏 / 悬疑 |
|
|
315
|
+
| 物理 | 衣角被风掀起、水面涟漪一圈圈扩散、纸张翻飞、湿发贴在颊边 | 写实 / 生活 |
|
|
316
|
+
| 镜头 | 轻微手持晃动、镜头呼吸感(缓慢起伏)、运动模糊拖影 | 纪实 / 动作 |
|
|
317
|
+
| 环境 | 烟雾贴地弥漫、蒸汽升腾、水汽在玻璃上凝结 | 冷峻 / 工业 |
|
|
318
|
+
|
|
319
|
+
- **硬规则:每场至少 3 镜写 vfx**;纯对话文戏可降到 1 镜,**但不得为 0**。
|
|
320
|
+
- **判定**:每镜 `visual`(或 `motion`)里能找到一个**具名物理/光效细节**(名词 + 方向或强度),
|
|
321
|
+
例如"雨丝从右后斜打""钠黄溢光反在指纹上";数得出"每场 ≥3 镜"即合格。
|
|
322
|
+
- vfx 必须**带方向或强度**;不写方向的粒子在成片里就是噪点。
|
|
323
|
+
- ✅ 正例:`…;前景雨丝从右后斜打过画面,路灯钠黄溢光在指纹上反出一道亮边。`
|
|
324
|
+
- ❌ 反例:`画面很唯美`——空话,模型不知道画什么。
|
|
325
|
+
|
|
326
|
+
### negative(负向要求清单:在分镜阶段规避,不是生成后再后悔)
|
|
327
|
+
|
|
328
|
+
画布自动组装的视频提示词**没有负向槽位**——所以 negative 的主用法是**写分镜时逐条转成"正向确定写法"**;
|
|
329
|
+
只有在手写提示词覆盖(含 `subject_definitions` 的完整结构)或厂商原生支持负向参数时,
|
|
330
|
+
才把清单作为"负向:…"追加到末尾。
|
|
331
|
+
|
|
332
|
+
**通用必备(每场逐条检)**
|
|
333
|
+
|
|
334
|
+
| 负向项 | 正向规避写法(写进 `visual` / `motion`) | 怎么判 |
|
|
335
|
+
|---|---|---|
|
|
336
|
+
| 换脸 | 写死"与 @角色@ 一致,脸型/眼型不变" | 能搜到"一致/不变" |
|
|
337
|
+
| 五官漂移 | 逐镜复述不变的眉形、鼻梁、下颌线 | 相邻镜外观词逐字相同 |
|
|
338
|
+
| 服装变化 | 逐镜复述服装关键件("旧邮差制服、左胸口袋") | 服装词全场同一套 |
|
|
339
|
+
| 手部畸形 | 写清手部姿态与遮挡("右手五指并拢按在桌面") | 有动作的镜都写了手 |
|
|
340
|
+
| 多指 | 明确手指数与动作("双手十指交握") | 手部特写必写 |
|
|
341
|
+
| 穿模 | 写清前后遮挡关系("手在桌面之上、不入桌面") | 有接触动作就写 |
|
|
342
|
+
| 闪烁 | 固定光源方向与强度("门灯始终从右后方打来") | 光线描述跨镜一致 |
|
|
343
|
+
| 风格突变 | 每镜沿用同一句风格词 | 风格词全片统一 |
|
|
344
|
+
| 动作僵硬 | timeBeats 三段姿势真有变化 | `duration ≥ 2s` 的镜头 ≥3 拍 |
|
|
345
|
+
| 人物凭空出现/消失 | 首镜写站位、末镜用 `tail` 写清位置与退场方向 | 每镜有位置关系 |
|
|
346
|
+
| 口型与台词不同步 | 有台词必写"开口说话、口型清晰可见"(近景/中近景、脸可见) | 有 `dialogue` 的镜必查 |
|
|
347
|
+
|
|
348
|
+
**按题材追加(勾选后同样要找到对应规避写法)**
|
|
349
|
+
|
|
350
|
+
| 题材 | 追加负向项 |
|
|
351
|
+
|---|---|
|
|
352
|
+
| 古装 | 现代物件(手表 / 拉链 / 塑料 / 电线 / 汽车) |
|
|
353
|
+
| 室内 | 窗外光线突变(白天拍成夜晚、阴晴乱跳) |
|
|
354
|
+
| 多人 | 身份互换(服装、配饰串到别人身上) |
|
|
355
|
+
|
|
356
|
+
- **判定**:每场通用 11 项逐条能在分镜里找到规避写法;题材项按标签勾选,勾了就必须有对应写法。
|
|
218
357
|
|
|
219
358
|
### 冲撞感:怎么用镜头写出"撞"(每场至少一个冲撞点)
|
|
220
359
|
|
|
@@ -305,6 +444,29 @@ non_diegetic_music: 仅当显式给出(节点扩展参数 {"music":"…"}
|
|
|
305
444
|
3. 参考图已连到视频节点(无参考图时自动回退普通提示词)。
|
|
306
445
|
- **手写覆盖**:节点提示词里若含 `subject_definitions`,画布原样发送,不做二次加工(高级用法)。
|
|
307
446
|
|
|
447
|
+
### 字段落点:写了没用,是因为没落到对的字段上
|
|
448
|
+
|
|
449
|
+
分镜镜头落库时保留这些键:`title` / `visual` / `motion` / `timeBeats` / `camera` / `vfx` / `negative` /
|
|
450
|
+
`tail` / `cam` / `start` / `seg` / `characters` / `scene` / `props` / `duration` / `dialogue` / `sfx`。
|
|
451
|
+
**结构化字段(`timeBeats` / `camera` / `vfx` / `negative`)会被画布单独提取**,逐镜拼进视频提示词的
|
|
452
|
+
「动作节拍 / 机位·焦段·运镜 / 物理特效」三段;没写就是空,模型不会自己补。落点对照:
|
|
453
|
+
|
|
454
|
+
| 内容块 | 落在哪个字段 | 组装后变成 |
|
|
455
|
+
|---|---|---|
|
|
456
|
+
| timeBeats(3 拍:起势→发力→落点) | `timeBeats` 数组(首选)或 `motion` 前半段 | `动作节拍(按时间推进,不可省略任何一拍):… → … → …` |
|
|
457
|
+
| camera 三件套 | `camera`(首选),或拆进 `visual`(景别+焦段+光圈)+ `motion`(运镜) | `机位/焦段/运镜:…` |
|
|
458
|
+
| vfx | `vfx`(首选),或写进 `visual` / `motion` | `物理特效(必须可见):…` |
|
|
459
|
+
| negative | `negative`(逗号分隔短语) | 合并进逐镜末尾的「禁止:…」清单 |
|
|
460
|
+
| 台词与音色 | `dialogue` + 设定集「声音:…」 | `台词:<Subject N>(S1)用…说:<d>…</d>` |
|
|
461
|
+
| 音效 / 环境声 | `sfx` | `音效:…`(并合并进 `overall_soundscape`) |
|
|
462
|
+
|
|
463
|
+
> 结论:**只写 `visual` 不写 `motion` = 没有运动;`timeBeats` 不写 3 拍 = 只有平移;`vfx` 不写 = 没有特效。**
|
|
464
|
+
>
|
|
465
|
+
> 补充一条**切段**口径:铺开时画布会按真实镜头边界把这张分镜表切成若干段生成(默认单段上限 15s,
|
|
466
|
+
> 面板上可调;MiniMax 这类弱衔接模型建议 6–10s)。切点只落在 `scene_change` / `closeup` /
|
|
467
|
+
> `new_character` 三种镜头上,所以**同一个人同一段连续动作不要拆成多个 continuation 镜**——
|
|
468
|
+
> 宁可给这一镜更长的 `duration`;真要换机位,就让下一镜成为三种切点之一(哪怕插一镜大特写)。
|
|
469
|
+
|
|
308
470
|
### 分镜衔接:分段生成能不能接上,全看这四件事
|
|
309
471
|
|
|
310
472
|
短剧一集必然切成多段生成(模型单次有时长上限),而**每段是独立采样的——模型看不到上一段最后发生了什么**。
|
|
@@ -384,6 +546,13 @@ non_diegetic_music: 仅当显式给出(节点扩展参数 {"music":"…"}
|
|
|
384
546
|
**每镜 `visual` 六要素齐全且景别具体**;**每场至少 1 个大特写**
|
|
385
547
|
- [ ] **冲撞**:每场至少一个冲撞点,且叠了 ≥2 种冲击手段(短镜头堆叠 / 反向构图 / 机位跳切 / 声音突入)
|
|
386
548
|
- [ ] **调度**:`motion` 写成"起点→运动方式→终点",含非平移运动;**同一场连续三镜不含同一种运动方式**
|
|
549
|
+
- [ ] **timeBeats**:每镜有 3 拍(`[0s]` 起势 → `[中段]` 发力 → `[结尾]` 落点),写进 `timeBeats` 数组或 `motion`;
|
|
550
|
+
`duration ≥ 2s` 的镜头**一律不少于 3 条**,`≤1s` 的快切镜允许 1 条
|
|
551
|
+
- [ ] **camera 容量**:每镜只有 **1 个主运镜 + 1 条主动作链**(多一个就拆镜),运镜写全「起点 → 方式 → 终点」
|
|
552
|
+
- [ ] **vfx / negative**:每场 **≥3 镜**写了具名特效或物理细节(纯对话文戏可 1 镜、不得为 0);
|
|
553
|
+
negative 通用项 + 题材项写进 `negative` 字段(或转成正向规避写法)
|
|
554
|
+
- [ ] **切段友好**:同一角色的同一段连续动作没有被拆成多个 continuation 镜;
|
|
555
|
+
换机位时下一镜是 `scene_change` / `closeup` / `new_character` 之一(切点干净,剪辑时是硬切不是硬接)
|
|
387
556
|
- [ ] **节奏**:同一场里至少一次明显的时长对比(快切/长镜);景别随情绪推进而不是随机
|
|
388
557
|
- [ ] 提示词:图片含景别/光线/构图;视频单动作单运镜;风格词全片统一;**每条视频提示词都有音频指令**
|
|
389
558
|
- [ ] 资产:命名含项目 + 集数 + 场次(便于检索与后期对轨)
|
|
@@ -357,3 +357,14 @@ description: 用无限画布(Infinite Canvas)做短剧/视频创作时使用
|
|
|
357
357
|
重生成分镜不花钱,视频按秒计费
|
|
358
358
|
- ❌ 把景别写成"镜头""画面"、把「大特写」写成"大豆/大特"、把「调度」写成"调职" → 按 `canvas-craft`
|
|
359
359
|
「术语勘误」统一,术语错 = 分镜粗,粗分镜 = 成片糊
|
|
360
|
+
|
|
361
|
+
## 3D 导演台(AI 直接驱动出预演)
|
|
362
|
+
|
|
363
|
+
用 `canvas_director_stage` 工具,一段 JSON 规格即可生成整场 3D 预演,不用手动搭场景:
|
|
364
|
+
|
|
365
|
+
- `action=help` → 列出可用姿态 id / 道具 preset / 动作片段
|
|
366
|
+
- `action=apply` + `spec` → 写入项目并落盘;客户端打开 3D 导演台会自动套用
|
|
367
|
+
- `action=get` → 读回当前规格
|
|
368
|
+
|
|
369
|
+
规格结构:`title`、`duration`、`env`、`characters[{name,pos,rotY,h,pose,color,material,path,pathFace,poseAnim,loop,keys}]`、`props[{preset,pos,scale,color}]`、`cameras[{name,pos,target,fov,keys}]`、`shots[{camera,start,end}]`。
|
|
370
|
+
路径为二维地面点数组,物体沿路径运动并按切线自动转向;`poseAnim` 首尾姿态相同即可无缝循环。
|