docs(course): add the 15-module web course and narrated editor video

Generate a static beginner course from course data with real Chromium
screenshots for every module, and record a narrated walkthrough of UV,
Texture Paint, Compositor, Geometry Nodes, Spreadsheet and OPFS reopen.
The render lesson video covers M08/M09; the course page is linked from
the tutorial landing.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
mes123456
2026-11-13 06:02:34 +08:00
parent ef50fdd988
commit 693f6b774b
52 changed files with 2489 additions and 7 deletions

View File

@@ -0,0 +1,18 @@
{
"schemaVersion": 1,
"generatedAt": "2026-11-12T21:44:43.270Z",
"gpuMode": "hardware",
"modules": [
{
"moduleId": "M07",
"title": "Texture Paint 手绘贴图",
"status": "PASS",
"images": [
"steps/M07-texture-paint.jpg",
"steps/M07-painted-stroke.jpg"
],
"durationMs": 9901
}
],
"errors": []
}

View File

@@ -0,0 +1,77 @@
{
"voice": "zh-CN-XiaoxiaoNeural",
"chapters": [
{
"id": "intro",
"title": "开场:这几块编辑器现在能做什么",
"narration": "这一课把四块新增的编辑器连起来用一遍:UV 展开、纹理绘制、Compositor 合成、Geometry Nodes 与 Spreadsheet 数据检查。所有保存都用浏览器 OPFS,需要本地文件时再手动下载。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/intro.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/intro.wav",
"durationMs": 17400
},
{
"id": "open-studio",
"title": "打开练习工程",
"narration": "先打开课程摄影棚,再追加猴头 GLB。状态栏从六个对象变成七个,活动对象是 Suzanne。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/open-studio.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/open-studio.wav",
"durationMs": 9576
},
{
"id": "uv",
"title": "UV 展开",
"narration": "切到 UV Editing 工作区。桌面 Blender 的 UV 编辑器要求网格处于编辑模式,所以我们显式进入编辑模式。点击全选 UV,等待选择提交,再点击展开所选 UV。橙色点变成展开后的 UV 岛。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/uv.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/uv.wav",
"durationMs": 19344
},
{
"id": "texture-paint",
"title": "纹理绘制",
"narration": "回到 Shading 工作区,从 RE 资产库双击砖墙材质,再导入本地贴图作为材质图片。切到 Texture Paint,选择这张图,在画布上画一条白色笔画。松开鼠标后笔画提交,一次笔画只增加一个版本。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/texture-paint.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/texture-paint.wav",
"durationMs": 19320
},
{
"id": "compositor",
"title": "Compositor 合成",
"narration": "切到 Compositing。画布默认有一个 Composite 输出。添加 RGB 颜色和曝光节点,把 RGB 连到曝光,再把曝光连到 Composite。把曝光改成一点五,点击执行合成,右侧预览变亮。点击提交图,节点图写入原生 Main。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/compositor.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/compositor.wav",
"durationMs": 21480
},
{
"id": "geometry-nodes",
"title": "Geometry Nodes",
"narration": "选中猴头,切到 Geometry Nodes。添加 Transform 节点,从 Group Input 连到 Transform,再从 Transform 连到 Group Output。点击提交图,网格随修改器更新。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/geometry-nodes.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/geometry-nodes.wav",
"durationMs": 14424
},
{
"id": "spreadsheet",
"title": "Spreadsheet 数据检查",
"narration": "在同一个工作区下方的 Spreadsheet 里,把数据源切到顶点,可以看到位置和法线列。输入过滤值,只留下匹配的行;列面板可以隐藏或重排列。Spreadsheet 是只读的,不会修改场景。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/spreadsheet.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/spreadsheet.wav",
"durationMs": 17232
},
{
"id": "save-reopen",
"title": "保存到 OPFS 并重开",
"narration": "点击顶栏保存项目,工程写入浏览器 OPFS。刷新页面,从最近项目重新打开。UV、纹理笔画、合成节点和 Geometry Nodes 图都还在。需要本地 .blend 时,再单独点击下载 .blend。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/save-reopen.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/save-reopen.wav",
"durationMs": 19992
},
{
"id": "summary",
"title": "总结与边界",
"narration": "这四块编辑器已经可以完成入门工作流。明确边界:纹理绘制目前是最小二维画笔,合成器只覆盖常用节点,Geometry Nodes 只使用允许列表,Spreadsheet 只读。完整清单和限制写在课程第十五模块。",
"mp3": "../tests/golden/COURSE-FULL-001/video/narration/summary.mp3",
"wav": "../tests/golden/COURSE-FULL-001/video/narration/summary.wav",
"durationMs": 19080
}
]
}

View File

@@ -0,0 +1,67 @@
{
"schemaVersion": 1,
"status": "PASS",
"gpuMode": "hardware",
"durationMs": 198097,
"chapters": [
{
"id": "intro",
"title": "开场:这几块编辑器现在能做什么",
"startMs": 1998,
"endMs": 23406
},
{
"id": "open-studio",
"title": "打开练习工程",
"startMs": 23407,
"endMs": 36988
},
{
"id": "uv",
"title": "UV 展开",
"startMs": 36989,
"endMs": 60333
},
{
"id": "texture-paint",
"title": "纹理绘制",
"startMs": 60334,
"endMs": 83657
},
{
"id": "compositor",
"title": "Compositor 合成",
"startMs": 83658,
"endMs": 109141
},
{
"id": "geometry-nodes",
"title": "Geometry Nodes",
"startMs": 109142,
"endMs": 127572
},
{
"id": "spreadsheet",
"title": "Spreadsheet 数据检查",
"startMs": 127573,
"endMs": 148806
},
{
"id": "save-reopen",
"title": "保存到 OPFS 并重开",
"startMs": 148807,
"endMs": 172801
},
{
"id": "summary",
"title": "总结与边界",
"startMs": 172802,
"endMs": 195883
}
],
"errors": [],
"screencast": {
"path": "/home/mes123456/workinf_Blender_Wasm/tests/golden/COURSE-FULL-001/video/screencast.webm",
"bytes": 16422241
}
}

View File

@@ -0,0 +1,89 @@
{
"schemaVersion": 1,
"status": "PASS",
"voice": "zh-CN-XiaoxiaoNeural",
"video": {
"path": "../web/app/public/tutorial/full/video/full-course-editors-720p.mp4",
"sha256": "25a52b9f08ec8a67d9b3e6ff06166425f2992996e35aca687c91e5dfdf67d137",
"bytes": 7569658
},
"narration": {
"path": "../tests/golden/COURSE-FULL-001/video/narration.wav",
"sha256": "c025ce95717087b62501a2f06080bf3b31679d2be5352fde71b908378e58176d",
"bytes": 19017356
},
"vtt": {
"path": "../web/app/public/tutorial/full/video/re-pbr-lesson.zh-Hans.vtt",
"sha256": "ce90e056846ce2d98d08a96a54b13e1c0df808fd2fd09aaca51376f56646ea93",
"cues": 9
},
"poster": {
"path": "../web/app/public/tutorial/full/video/poster.jpg",
"sha256": "a67d1d7c34365205d177e5003daa0ebce2ebbf8f0bcfd27370b7c35cf5de6fe1"
},
"chapters": [
{
"id": "intro",
"title": "开场:这几块编辑器现在能做什么",
"startMs": 1998,
"endMs": 19398,
"narration": "这一课把四块新增的编辑器连起来用一遍:UV 展开、纹理绘制、Compositor 合成、Geometry Nodes 与 Spreadsheet 数据检查。所有保存都用浏览器 OPFS,需要本地文件时再手动下载。"
},
{
"id": "open-studio",
"title": "打开练习工程",
"startMs": 23407,
"endMs": 32983,
"narration": "先打开课程摄影棚,再追加猴头 GLB。状态栏从六个对象变成七个,活动对象是 Suzanne。"
},
{
"id": "uv",
"title": "UV 展开",
"startMs": 36989,
"endMs": 56333,
"narration": "切到 UV Editing 工作区。桌面 Blender 的 UV 编辑器要求网格处于编辑模式,所以我们显式进入编辑模式。点击全选 UV,等待选择提交,再点击展开所选 UV。橙色点变成展开后的 UV 岛。"
},
{
"id": "texture-paint",
"title": "纹理绘制",
"startMs": 60334,
"endMs": 79654,
"narration": "回到 Shading 工作区,从 RE 资产库双击砖墙材质,再导入本地贴图作为材质图片。切到 Texture Paint,选择这张图,在画布上画一条白色笔画。松开鼠标后笔画提交,一次笔画只增加一个版本。"
},
{
"id": "compositor",
"title": "Compositor 合成",
"startMs": 83658,
"endMs": 105138,
"narration": "切到 Compositing。画布默认有一个 Composite 输出。添加 RGB 颜色和曝光节点,把 RGB 连到曝光,再把曝光连到 Composite。把曝光改成一点五,点击执行合成,右侧预览变亮。点击提交图,节点图写入原生 Main。"
},
{
"id": "geometry-nodes",
"title": "Geometry Nodes",
"startMs": 109142,
"endMs": 123566,
"narration": "选中猴头,切到 Geometry Nodes。添加 Transform 节点,从 Group Input 连到 Transform,再从 Transform 连到 Group Output。点击提交图,网格随修改器更新。"
},
{
"id": "spreadsheet",
"title": "Spreadsheet 数据检查",
"startMs": 127573,
"endMs": 144805,
"narration": "在同一个工作区下方的 Spreadsheet 里,把数据源切到顶点,可以看到位置和法线列。输入过滤值,只留下匹配的行;列面板可以隐藏或重排列。Spreadsheet 是只读的,不会修改场景。"
},
{
"id": "save-reopen",
"title": "保存到 OPFS 并重开",
"startMs": 148807,
"endMs": 168799,
"narration": "点击顶栏保存项目,工程写入浏览器 OPFS。刷新页面,从最近项目重新打开。UV、纹理笔画、合成节点和 Geometry Nodes 图都还在。需要本地 .blend 时,再单独点击下载 .blend。"
},
{
"id": "summary",
"title": "总结与边界",
"startMs": 172802,
"endMs": 191882,
"narration": "这四块编辑器已经可以完成入门工作流。明确边界:纹理绘制目前是最小二维画笔,合成器只覆盖常用节点,Geometry Nodes 只使用允许列表,Spreadsheet 只读。完整清单和限制写在课程第十五模块。"
}
]
}