跳到主要内容

维护与扩展规则

本页不是给业务接入方增加“隐藏能力”的方法,而是给 Voxel Kit 维护者划定扩展方式:新增功能可以很多,但必须落在清晰的能力族、权限边界和性能模型上,不能把内部 ArkGraphics 对象临时泄露给宿主。

公开 API 设计原则

新增能力必须先回答:

  1. 它属于 Preview、Format、Validate、Convert 还是 Edit?
  2. 是否需要 ArkGraphics?是否需要写权限?是否会读取完整 VOX0
  3. 内存上限、异步模型、失败语义和缓存可信边界是什么?
  4. 能否只通过稳定数据对象表达,而不是泄露 Scene、Camera、Geometry 或私有 TaskPool 输入?

只有这些边界明确后,才应在 voxel-preview/Index.ets 增加导出。

新 API 评审清单

问题合格答案的特征
谁拥有资源?调用方还是 HAR 清楚;dispose()、取消、重复调用语义明确。
是否异步?Promise 的成功点、失败类型、并发限制和大文件内存上限明确。
输入是否可信?容器 CRC、语义校验、缓存命中和业务信任不会被混为一谈。
可否跨版本演进?返回稳定数据对象,不让业务依赖 Scene/Camera/Mesh。
如何验证?至少有构建、独立宿主、真机和损坏输入的测试方案。

推荐能力拆分

未来需求建议模块不应做法
VOX0/PAL0 完整读取与 source hashFormat/Validate API。复用预览私有 Reader 并对外承诺。
JSON/VOX/GLB 导出Convert API。将 PRVW 提取误称为 GLB 导出。
体素编辑/历史/写回独立 Editor HAR。给只读 Viewer 暴露可变 Scene。
网络资源加载业务 SDK 或宿主。让 Preview HAR 自行持有鉴权、缓存、URI 权限。
精确相机控制/事件版本化 Controller API。直接返回内部 Camera。

能力族命名建议

VoxelViewer 只读可视预览
VfpPackageReader 容器读取与区段提取
Validate API 权威体素与 source hash 语义校验(未来)
Convert API JSON / VOX / GLB 等显式转换(未来)
VoxelEditor 编辑、历史、写回(独立模块,未来)

这样,预览用户不会因为引入编辑器而承担写权限、撤销栈或完整 VOX0 恢复的成本;Reader 用户也不必为了查看目录而初始化 ArkGraphics。

资源与渲染修改守则

  • 修改 PBR 描边前,先确认 unitGridTexture 资源路径;不要因静态 HAR Resource 解析失败而永久切到 BORD。
  • 改动动画、场景替换、延迟描边或编辑接管时,必须保留代际取消与每次异步让出后的版本复核。
  • 不要把动画期间原生 Geometry 创建移回播放过程;这会造成帧抖动和完整模型闪现。
  • 不要为了性能静默降采样用户体素;容量策略必须显式向上层报告。
  • 坐标来源是 Z-up。需要支持 Y-up 时引入显式输入元数据或选项,不要猜测最长轴。

对可见效果的最低验证

视觉修改必须至少在:浅背景、深背景、彩色体素、纯黑体素、无/有 unitGridTexture、载入动画结束、连续双指操作这七类情形中检查。只有截图/录屏或目标机手动确认,才能证明“线条、光照、动画和手感”没有退化。

变更后的必做事项

改动必做验证
公开 API更新所有 API/快速开始/README,构建 entry 消费回归。
纹理、描边、光照真机检查深浅背景、黑色体素、动画后和编辑后。
Picker/VFP 读取JSON、VFP 1.2、VFP 1.3、损坏 CRC、无 PRVW。
手势/相机手动单指、双指平移、缩放、取消/结束和动画结束时机。
VFP 规范更新规范、固定样本、Reader/Compiler 验证和兼容策略。
OHPM 发布README/CHANGELOG/LICENSE、HAR 内容、重新安装和真机 smoke。

文档维护

本仓库的 ai-docs/ 是工程操作记录。功能、配置、构建/发布流程或设计边界变化后必须更新:

  • ai-docs/context/recent-10-actions.md
  • 对应 ai-docs/changelog/YYYY-MM-DD-*.md
  • 必要时的 ai-docs/context/decisions.md 与架构文档;
  • 对外 README、开发者文档和 API 参考。

这样可保证未来维护者看到的是可执行的当前事实,而不是历史实验或未落地设计。

文档目录的维护方式

  • 新的预览能力放在 VoxelViewer/,先补概览页中的“解决什么问题”,再补 API、接入和排障。
  • 新的格式读取能力放在 Reader-API/,必须写明容器校验、语义校验、缓存与权限边界。
  • 新的构建/发布要求放在 开发与发布/,同时更新模块 README/CHANGELOG 与站点指南。
  • 任何新增公开符号都至少更新:总览、快速开始、对应 API 参考、范围兼容性和测试清单。