Files
AnyImage/openspec/changes/use-tangle-cutout-meshing/tasks.md

5.3 KiB
Raw Blame History

1. 固定数值后端

  • 1.1 核验并固定 Tangle Python 上游提交、源码哈希和 MIT 许可,加入随插件分发的源码与许可文件。
  • 1.2 提供内存数值入口,返回三角面和约束来源;隔离 Decimal 上下文、命令行退出与可变状态,验证重复调用和失败后恢复。
  • 1.3 验证现有分发规则收录源码与许可;检查依赖清单一致性,不构建扩展包。

2. 统一轮廓和孔洞策略

  • 2.1 在现有有效世界 Edge Length 度量下实现 Fine Outline 开启的保守微孔双阈值,以及关闭时的全部封闭孔填充。
  • 2.2 填孔后重建组件与轮廓,处理孔中岛、背景连通凹口和空输入;保持原图片和材质 Alpha。
  • 2.3 接入两种外轮廓精度策略,确保中线距离场、域查询和最终轮廓一致;覆盖分辨率、画布与非均匀缩放用例。

3. 延伸中线并接入 Tangle

  • 3.1 将细分支支撑沿有效内部图延伸至所在主体,保留稀疏性并检查关节、根部和跨孔路径。
  • 3.2 规范化 PSLG 重合点、点落边和重复约束,生成可靠孔内种子并保留中线身份。
  • 3.3 两种模式共用 10°和最大面积参数的 Tangle 最终三角化,输出现有基础网格所需组件、UV、边界及高度输入。
  • 3.4 验证最终约束链、面积、孔洞、组件与非退化性;增加有界细化和明确错误传播,失败不创建残缺对象。
  • 3.5 删除最终建网中失去用途的旧布点、三角化及扇形补面路径,保留仍用于中线构图的必要几何函数并理顺命名。

4. 验证与复核

  • 4.1 补充合成多孔、细腿根部、微孔阈值两侧、细长孔、孔中岛与点落边回归;检查实际边链及正高度支撑。
  • 4.2 用六张用户图复核两种模式,重点输出鱼与甲虫的网格和高度对照;记录面数、角度、小面和压平面积、位置及耗时。
  • 4.3 在支持的 Blender/Python 环境执行导入、重复调用、基础网格创建及同步/AI 返回路径验证,记录实际覆盖版本。
  • 4.4 对高复杂度多孔输入验证迭代/顶点限制、失败恢复及耗时,确认不会无界细分或静默切回旧算法。
  • 4.5 运行相关 Cutout 几何、边长、对象、Operator 和分发测试,检查最终差异与旧引用;仅在发现关联故障时扩大测试范围。

验证记录

  • 相关几何、边长、对象、Operator、交互、节点消费与分发规则测试:141 passed,7 subtests passed。分发测试使用内存归档替身,未构建扩展包。
  • Blender 4.5.10 / Python 3.11.11、Blender 5.2.0 / Python 3.13.13:各 81 passed、4 subtests passed,正常退出。使用 Blender 内置 NumPy 和对应随包 SciPy wheel;5.2 测试通过运行时 socket API 读取修改器输入。
  • 六张原图的两种模式均通过;各预热一次并测量两次。鱼精细/普通为 2266/972 面、25/0 孔,甲虫为 669/382 面。精细模式压平面积:鱼 0.056%,甲虫 0%;精细建网中位耗时分别约 0.67s、0.13s(不含图片读取及高度求解)。
  • 256 孔合成图:2K 与 4K 在同一物理间距下均得到 3448 顶点、6044 面,构建分别约 2.25s、6.23s;资源上限及失败后恢复另有自动化测试覆盖。
  • 临时对照结果:C:/Users/icrdr/AppData/Local/Temp/anyimage-mesh-trial-e5fd3fe134d24686900f07f9308db158/integrated-results.html,含六图网格、Poisson 高度投影与两种模式对照。
  • 最终源码使用 mesh.py 承担两种模式的统一建网职责,替换原 fine_mesh.py;第三方版本与原始哈希记录于 tangle.py 文件头。

5. 按实际网格补足支撑

  • 5.1 用单次局部补点替换中线图和距离场,保留连续内部支撑及累计顶点上限,删除旧中线调用与专用测试。
  • 5.2 分离像素角孔洞自接触,保持面积、孔洞和边界约束校验,复核密鱼能正常完成。
  • 5.3 修复低分辨率深度投影的相邻点重合,构建节点资产并验证壳体方向。
  • 5.4 运行粗密网格、两种 Fine Outline、真实样本和 Blender 相关回归,记录结果。

局部支撑复核

  • 删除中线图、宽度场和全局支撑约束,单次局部补点保持内部连通;新增粗密分支、孤立三角形、共享弦、资源上限、像素角接触及边界损坏测试。最终网格专项 45 passed。
  • 六张用户原图、两种 Fine Outline 共 20 组配置通过;鱼和甲虫包含最长边 / 5、/ 20、/ 100 三档。全部 Poisson 高度有限、内部顶点为正,无全零高度面。密鱼精细模式 27077 面、55 孔,约 2–3 秒;密甲虫 9272 面,约 0.67–1.03 秒(本机单次建网,区间含并行测试负载)。
  • 极粗精细模式:甲虫 156 面,鱼 585 面,压平面积均为 0%。局部拆分允许部分角度低于 10°。
  • 深度投影合并数值重合的已连接顶点,修复角部退化面导致的壳体厚度翻转。已运行 uv run node-group build:10 个保存节点组加载验证通过,构建流程全部 1024 测试通过并正常退出。
  • Blender 4.5.10 / Python 3.11.11、Blender 5.2.0 / Python 3.13.13:各 81 passed、4 subtests passed,正常退出;未构建扩展包。
  • 临时原图结果:C:/Users/icrdr/AppData/Local/Temp/anyimage-support-integrated/results.json。