Files
workinf_Blender_Wasm/docs/tasks/WBV2-P1424-001-desktop-completion/DW26.md
mes123456 f3e21c6b98
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
chore: checkpoint web Blender migration source, tools and docs
Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer,
web workflow engine and protocol, tooling, docs and task records.
Large generated evidence, user-testing archives, build snapshots and
imported test assets remain untracked.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-10 11:18:01 +08:00

4.0 KiB
Raw Blame History

DW26:完整 bpy/RNA 与 Python GPU 入口

  • stage: scripting-preferences
  • queueTask: WBV2-P1424-001;parent: WBV2-P1424-000;nextTask: null
  • 包状态:planned_gap_closure(并不表示已有源码尚未实现)
  • 完整交付依赖:DW02, DW14, DW20
  • 工作量级:XL;不表示日期承诺
  • validation: NOT_RUN;acceptance: NOT_CLAIMED

优先复用的十多天成果

嵌入式 CPython、真实 bpy 绑定、console namespace、traceback、native registration 修复和 compute Python API 已存在。

既有任务:RNA-DATABLOCK-REFLECTION(记录为 implemented)、RNA-REFLECTION-EXTENDED(记录为 implemented)。按需读取一个任务结果的 summary/remaining/ownedPaths,不打开完整产品报告。

相关交接仅作按需引用:

  • tests/golden/WBV2-P1424-001/embedded-python-implementation.md
  • tests/golden/WBV2-P1424-001/general-webgpu-compute-implementation.md

先对照当前小范围源码和最新交接保留已实现子项;只有缺功能、缺接线或缺必要依赖才新增实现。历史状态不自动当作当前缺口。

操作者工作流与交付

Text/Console 执行脚本 → bpy 数据/operator/UI 回调 → Main/编辑器效果 → 生命周期清理

可被实际脚本与扩展使用的原生 Python API,逐模块列明完整接线与剩余平台边界。

最小生产入口

  • blender-5.2.0/source/blender/web_engine/web_engine_python.cpp
  • blender-5.2.0/source/blender/web_engine/web_engine_python_bootstrap.py
  • blender-5.2.0/source/blender/python/intern/bpy.cc
  • blender-5.2.0/source/blender/python/intern/bpy_app_timers.cc
  • blender-5.2.0/source/blender/python/gpu/gpu_py_compute.cc
  • web/app/src/app/WasmPythonConsole.tsx
  • web/app/src/app/WasmTextEditor.tsx

以上为聚焦入口,非要求全文加载。使用源码聚焦工具、精确 --source/--unit 和函数片段;接入新 operator 时追加其具体原生文件,单次最多 8 个精确源码文件。没有默认测试入口或要运行的 fixture;功能完成前不执行任何验证。

只补未完成部分

  1. 复用 DW02 和已完成原生绑定;逐模块补齐 bpy.data/context/ops/types/props/app、RNA 指针/集合/枚举与跨 ID 参数。
  2. 完成 register/unregister、property factories、动态 enum、operator/menu/panel/UIList、callback 替换/回滚、引用保活。
  3. timers/handlers/modal、depsgraph callbacks、Main replacement、file reload 和后台任务所有权保持真实原生语义。
  4. 保留原生 mathutils/bmesh 等接口;其中几何运算仍路由统一 OCCT 出口,不引入 Python/JS 平行模拟。
  5. Python GPU drawing/shader/create-info、compute 标准入口与扩展入口按照 CS12 统一原生后端;失败不返回假结果。
  6. 原生异常、traceback、输出、取消、死循环中断和模块 import 状态对 Text/Console 可见;不因脚本回调失效破坏 UI。

compute 专项引用:CS12。卡位于 docs/tasks/WBV2-P1424-001-compute-ssbo/;一次只读当前一张,既有实现不重复,状态依据后续真实交接更新。CS09 在 DW19 负责消费者,CS12 在 DW26 负责原生 Python 入口,CS13/CS14 分别归 DW31/USER01;不要另起平行路线。

失败边界

独立 Pyodide 或 Python 仿制 bpy 不得替代同一原生 Main 中的实际绑定;API 名存在不等于语义完整。

实现交接与后续使用

交付前必须具有实际入口→原生执行→消费者/结果→错误/取消→适用 history/save 的生产代码。这里是实现交付条件,不运行验收;编译成功不能替代功能。旧的已完成子项可引用并保留,不能声称本轮重新实现。

用户使用阶段的场景(现在不执行):脚本创建场景、注册面板和 operator、定时更新属性后注销,执行 GPU 计算并保存项目。

每次记录保留成果、补齐断点、仍有缺口、必要构件与下一动作。共同规则见同目录 EXECUTION.md,首次领取时阅读;不要将完整计划作为后续执行上下文。