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-06 20:28:52 +08:00
2026-09-08 16:58:41 +08:00
2026-09-02 20:32:58 +08:00
2026-09-06 20:28:51 +08:00
2026-09-06 20:28:51 +08:00
2026-09-05 13:24:10 +08:00
2026-08-26 15:02:42 +08:00
2026-09-06 20:29:38 +08:00
2026-09-06 20:28:51 +08:00
2026-09-01 23:54:41 +08:00
2026-08-25 13:49:15 +08:00
2026-09-06 20:29:38 +08:00
2026-08-31 09:00:37 +08:00
2026-08-14 23:44:55 +08:00
2026-08-03 21:38:38 +08:00
2026-08-03 21:38:38 +08:00
2026-08-31 09:00:37 +08:00
2026-09-06 20:28:51 +08:00
2026-09-02 17:02:19 +08:00
2026-09-01 14:57:05 +08:00
2026-08-26 16:28:45 +08:00
2026-08-25 20:10:11 +08:00
2026-08-03 21:38:38 +08:00
2026-08-03 14:58:49 +08:00
2026-08-03 20:11:13 +08:00
2026-08-03 21:38:04 +08:00
2026-08-25 13:49:15 +08:00
2026-08-03 21:38:38 +08:00
2026-09-06 20:28:51 +08:00
2026-09-05 13:24:10 +08:00
2026-08-31 09:00:37 +08:00
2026-08-31 09:00:37 +08:00
2026-09-06 20:28:52 +08:00
2026-08-14 23:44:55 +08:00
2026-09-05 13:24:10 +08:00
2026-09-05 13:24:10 +08:00
2026-09-06 20:28:51 +08:00
2026-08-25 13:49:15 +08:00
2026-09-02 20:32:58 +08:00
2026-09-06 20:28:51 +08:00
2026-09-06 20:28:51 +08:00
2026-09-07 22:39:07 +08:00
2026-08-06 08:51:29 +08:00
2026-08-04 21:20:53 +08:00
2026-09-01 16:47:03 +08:00
2026-08-22 12:29:24 +08:00
2026-09-05 13:24:10 +08:00
2026-09-06 20:28:51 +08:00
2026-08-31 09:00:37 +08:00
2026-09-05 13:24:10 +08:00
2026-09-05 13:24:10 +08:00
2026-09-05 13:24:10 +08:00
2026-09-07 14:03:50 +08:00
2026-08-25 13:49:15 +08:00
2026-09-05 13:24:10 +08:00
2026-09-05 13:24:10 +08:00
2026-09-05 13:24:10 +08:00
2026-09-05 13:24:10 +08:00
2026-08-22 13:34:30 +08:00
2026-09-06 20:28:52 +08:00
2026-08-31 13:16:10 +08:00
2026-09-06 20:28:51 +08:00
2026-08-19 07:16:07 +08:00
2026-08-31 06:49:43 +08:00
2026-07-22 14:29:10 +08:00
2026-08-07 11:46:23 +08:00
2026-09-06 20:28:51 +08:00
2026-08-08 18:28:28 +08:00
2026-08-08 18:28:28 +08:00
2026-09-06 20:28:51 +08:00
2026-09-06 20:28:51 +08:00
2026-08-08 18:28:28 +08:00
2026-08-08 18:28:28 +08:00
2026-09-06 20:28:51 +08:00
2026-09-04 14:03:33 +08:00
2026-08-31 09:00:37 +08:00
2026-08-29 08:48:38 +08:00
2026-08-26 15:02:42 +08:00
2026-08-29 08:48:38 +08:00
2026-08-29 11:05:59 +08:00
2026-09-07 14:03:50 +08:00
2026-08-25 13:49:15 +08:00
2026-09-06 07:19:28 +08:00
2026-09-06 20:28:51 +08:00
2026-09-06 20:28:51 +08:00
2026-08-07 11:46:23 +08:00
2026-08-31 06:49:43 +08:00
2026-08-31 09:00:37 +08:00