VicoHu
5bda548fe9
fix(canvas): 3D 导演台 - 修复白膜视频导出渲染循环逐帧崩溃 (#439)
导出白膜视频得到的是 0 秒视频:文件实测仅 1 帧(ffprobe
nb_read_frames=1,duration=0.001s),却无任何报错并照常回写画布。
根因:applyClaySceneMaterials 把场景内所有非 actor mesh 的材质换成
clay MeshStandardMaterial,drei Grid 的 GridMaterial(带 uniforms 的
ShaderMaterial)也在其中。Grid 组件内部 useFrame 每帧读取
material.uniforms.worldCamProjPosition,材质被换后 uniforms 为
undefined,渲染循环逐帧抛 TypeError,R3F 不再产出新帧,
captureStream 只录到启动前手动 gl.render 的那一帧;5 秒后
setTimeout 照常 stop,残缺视频被当作成功结果。开启轨迹显示
(drei Line 同为 uniforms 材质)或视口白膜显示模式时同样触发。
修复:
- applyClaySceneMaterials 跳过带 uniforms 的 ShaderMaterial,
并抽到 lib/canvas/director/director-clay-materials.ts 补回归测试;
- recordCanvas 加固:录制期间监听 window 未捕获错误,首个渲染
错误立即中止并报错;录制结束用 <video> 探测真实时长(Chrome
MediaRecorder 的 webm 无时长头,需 seek 到末尾),低于预期一半
报「时长异常」,杜绝残缺视频再被静默回写。
2026-09-08 16:58:41 +08:00
..
2026-09-04 14:03:33 +08:00
2026-08-15 12:45:29 +08:00
2026-08-22 17:42:04 +08:00
2026-09-07 10:18:06 +08:00
2026-08-02 05:28:02 +08:00
2026-08-30 16:52:09 +08:00
2026-09-02 20:32:58 +08:00
2026-09-04 14:03:33 +08:00
2026-09-05 16:39:45 +08:00
2026-09-05 13:24:10 +08:00
2026-09-07 22:28:32 +08:00
2026-08-31 13:16:10 +08:00
2026-08-09 08:58:21 +08:00
2026-09-04 14:03:33 +08:00
2026-09-01 14:57:05 +08:00
2026-08-29 23:34:55 +08:00
2026-09-07 23:02:34 +08:00
2026-08-24 12:09:15 +08:00
2026-08-24 12:09:15 +08:00
2026-09-07 22:39:07 +08:00
2026-09-01 23:54:41 +08:00
2026-08-28 16:24:58 +08:00
2026-08-31 09:00:37 +08:00
2026-08-31 09:00:37 +08:00
2026-09-07 14:03:50 +08:00
2026-09-01 17:32:38 +08:00
2026-08-31 06:49:43 +08:00
2026-08-31 09:00:37 +08:00
2026-07-23 10:34:59 +08:00
2026-08-06 16:36:51 +08:00
2026-08-15 15:48:16 +08:00
2026-08-22 12:29:24 +08:00
2026-09-01 14:57:05 +08:00
2026-09-01 14:57:05 +08:00
2026-09-01 16:47:03 +08:00
2026-09-06 07:42:02 +08:00
2026-08-15 15:48:16 +08:00
2026-08-28 16:24:58 +08:00
2026-08-31 13:16:10 +08:00
2026-07-31 13:12:06 +08:00
2026-08-28 16:24:58 +08:00
2026-08-29 10:28:23 +08:00
2026-09-05 13:24:10 +08:00
2026-09-02 00:47:57 +08:00
2026-08-19 20:52:11 +08:00
2026-09-01 14:57:05 +08:00
2026-08-31 09:00:37 +08:00
2026-09-07 22:28:19 +08:00
2026-08-31 12:28:12 +08:00
2026-09-01 14:57:05 +08:00
2026-08-31 09:00:37 +08:00
2026-08-31 09:00:37 +08:00
2026-09-05 13:24:10 +08:00
2026-09-01 16:47:03 +08:00
2026-09-07 22:28:19 +08:00
2026-09-05 13:24:10 +08:00
2026-09-05 13:24:10 +08:00
2026-08-31 12:28:12 +08:00
2026-09-01 14:57:05 +08:00
2026-08-31 06:49:43 +08:00
2026-08-27 22:12:04 +08:00
2026-08-26 22:38:07 +08:00
2026-08-15 15:48:16 +08:00
2026-09-07 22:39:07 +08:00
2026-08-29 08:48:38 +08:00
2026-08-10 00:13:02 +08:00
2026-08-14 20:45:26 +08:00
2026-08-10 00:13:02 +08:00
2026-09-01 23:54:41 +08:00
2026-08-29 11:05:59 +08:00
2026-09-06 07:19:28 +08:00
2026-08-29 13:19:01 +08:00
2026-08-03 15:06:09 +08:00
2026-09-07 23:02:34 +08:00
2026-09-01 17:52:21 +08:00
2026-09-01 20:01:52 +08:00
2026-08-27 22:12:04 +08:00
2026-08-27 22:12:04 +08:00
2026-08-27 10:32:45 +08:00
2026-09-08 16:58:41 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-09-04 14:03:33 +08:00
2026-09-04 14:03:33 +08:00
2026-09-04 14:03:33 +08:00
2026-09-04 14:03:33 +08:00
2026-08-18 21:42:22 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-20 13:24:09 +08:00
2026-09-06 04:44:16 +08:00
2026-09-05 13:24:10 +08:00
2026-08-15 15:48:16 +08:00
2026-08-22 09:52:09 +08:00
2026-09-07 14:03:50 +08:00
2026-09-07 14:03:50 +08:00
2026-08-31 09:00:37 +08:00
2026-08-19 11:47:26 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-18 15:43:25 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-09-04 14:03:33 +08:00
2026-08-30 13:02:55 +08:00
2026-08-28 09:07:33 +08:00
2026-09-06 04:44:16 +08:00
2026-08-24 09:47:38 +08:00
2026-08-31 15:06:34 +08:00
2026-08-31 09:58:36 +08:00
2026-09-07 22:39:07 +08:00
2026-09-04 14:03:33 +08:00
2026-08-30 05:05:46 +08:00
2026-08-26 15:23:19 +08:00
2026-08-26 15:23:19 +08:00
2026-08-29 23:34:55 +08:00
2026-08-31 12:28:12 +08:00
2026-08-31 15:59:34 +08:00
2026-08-29 23:34:55 +08:00
2026-08-29 23:34:55 +08:00
2026-08-25 14:33:34 +08:00
2026-08-31 13:16:10 +08:00
2026-09-07 15:00:37 +08:00
2026-08-29 23:34:55 +08:00
2026-08-19 11:58:06 +08:00
2026-08-22 09:52:09 +08:00
2026-08-27 22:39:30 +08:00
2026-08-17 13:16:13 +08:00
2026-09-04 14:03:33 +08:00
2026-08-14 20:44:50 +08:00
2026-09-04 14:03:33 +08:00
2026-09-07 23:21:16 +08:00
2026-09-05 13:24:10 +08:00
2026-08-30 16:52:09 +08:00
2026-08-29 11:05:59 +08:00
2026-08-30 19:03:10 +08:00
2026-08-29 23:34:55 +08:00
2026-08-30 19:03:10 +08:00
2026-08-30 19:03:10 +08:00
2026-09-05 13:24:10 +08:00
2026-08-29 13:19:01 +08:00