Files
nan 198fcbf55b
Some checks failed
Test / test (push) Has been cancelled
Initial public release
2026-09-19 21:31:36 +08:00

7.7 KiB
Raw Blame History

Purpose

规定 Cutout Depth Surface 在深度断层处保留原表面并分离相邻区域的行为,提供默认关闭、随数值增大而增强的控制,并确保厚度生成后每个分离区域的正面、背面和侧壁保持完整连接。

ADDED Requirements

Requirement: 分离控制替换拉伸剔除

系统 SHALL 在 Depth Surface 及外层 Cutout 的 Options 中以 Split 替代 Stretch Limit。Split SHALL 为范围 0–1 的比例输入,默认 0,增大时不得降低同一输入几何的切边选择强度。

Scenario: 默认关闭

  • WHEN 用户使用默认 Split 0
  • THEN 系统不增加切边,并在 Cleanup 保留的区域上使用原 Depth Surface 采样与投影行为

Scenario: 中点与最大强度

  • WHEN Split 分别设为 0.5 和 1
  • THEN 内部深度坡度阈值分别为 5 和 2.5,且控制值不能超过 1;正值对应阈值为 2.5 / Split

Scenario: 接口替换

  • WHEN 用户检查新 Cutout 的 Options
  • THEN 可见 Split,且不存在 Stretch Limit 控制及其拉伸删几何行为

Requirement: 使用相邻面深度与实际跨度选择共享边

系统 SHALL 以场景尺度的相邻面中心 Z 差除以变形前两面中心的实际距离作为坡度得分;场景深度 SHALL 包含图片标定的 Uniform Scale 和当前 Depth Scale 的幅度。系统 SHALL 只对恰有两个邻面的共享边执行此判断,并安全处理零跨度输入。

Scenario: 同一阈值两侧

  • WHEN Split 为 0.5,两个有效邻接的坡度得分分别为 4 和 6
  • THEN 得分 4 的边不被选中,得分 6 的边被选中进行分离

Scenario: 等比尺度变化

  • WHEN 图片几何和经标定的深度同时等比缩放且 Split 不变
  • THEN 相应共享边的坡度得分和选择结果保持一致

Scenario: 深度归零与退化邻接

  • WHEN Depth Scale 为 0 或邻面中心距离为零
  • THEN 该条件不产生新增切边,且求值不产生非有限坐标

Requirement: 分离保留表面及两侧独立位置

系统 SHALL 通过拓扑分离保留原始表面的覆盖,使用各自所属侧的数据确定拆后位置。仅设置选边而继续使用共享 UV 的同一个深度值 SHALL NOT 被视为实现两侧分离。

Scenario: 零厚度深度阶跃

  • WHEN Cleanup 为零,规则网格跨越深度阶跃且 Split 选中贯通边界
  • THEN 原始面全部保留,两侧具有独立顶点与不同场景深度,且没有拉伸剔除造成的缺面

Scenario: 开启控制但没有切边

  • WHEN Split 大于零且所有共享边均未达到分离阈值
  • THEN 顶点投影与 Split 为零时完全一致,轮廓不因面中心平均而收缩

Scenario: 切口保持原相机射线

  • WHEN 某些共享边被分离
  • THEN 仅关联顶点使用所属侧的深度,并保持原 XYZ 的相机射线方向;其他顶点保留原采样位置

Requirement: Cleanup 在拆边后生成厚度前执行

Depth Surface SHALL 在 Split Edges 后、投影及厚度生成前执行一次 Cleanup,按拆分后平面区域的面积使用既有清理阈值。其他 Shape SHALL 保持原 Cleanup 顺序。

Scenario: 清理拆出的碎片

  • WHEN 拆边生成低于 Cleanup 面积阈值的独立区域
  • THEN 该区域在生成厚度前被清理,其余区域随后投影并加厚

Scenario: 厚度不改变清理结果

  • WHEN Split、基础网格和 Cleanup 保持不变,仅调整 Thickness
  • THEN 被 Cleanup 保留的平面区域不变

Scenario: 关闭分离仍可清理

  • WHEN Split 为零且 Cleanup 为正
  • THEN Cleanup 对原平面区域执行一次,不因分离关闭而失效

Requirement: 厚度侧壁与正背面完整连接

系统 SHALL 在加厚时使每个分离区域的侧壁与正面、背面及相邻厚度段共享连续边界。对定向正确的流形片状输入,各加厚区域 SHALL 形成闭合表面,不得跨区域重新焊接切口。

Scenario: 阶跃区域加厚

  • WHEN 对已拆开的深度阶跃区域设置正厚度
  • THEN 每个区域的侧壁准确连接其正背面,边界无开口、重叠但未连接的接缝或错位边界

Scenario: 分段厚度

  • WHEN 厚度足以生成多个侧壁段
  • THEN 各段相接且总厚度符合输入值,侧壁端点与对应表面边界一致

Scenario: 近距离独立区域

  • WHEN 两个独立分离区域的间隔小于既有几何焊接容差
  • THEN 厚度连接仍保持区域独立,不因全局合并恢复原连接

Requirement: 正式 Cutout 流程共享分离能力

系统 SHALL 让多个物体共享同一套节点资产,并通过各自修改器传入数据。Split SHALL 仅影响 Depth Surface 分支;外层 Cleanup、Smooth 及其他三种 Shape SHALL 保持各自职责。

Scenario: 六物体共享节点

  • WHEN 三张图片分别创建 High 和 Low 的 Depth Surface
  • THEN 六个物体引用共享节点组,同一图片的标定值一致,各物体控制值可以独立调整

Scenario: 完整修改器链

  • WHEN Depth Surface 同时启用分离、正厚度及外层 Smooth
  • THEN 同一区域的正背面和侧壁保持连接,分离区域之间保持独立

Scenario: 切换其他 Shape

  • WHEN 用户改变 Split 后选择其他三种基础 Shape
  • THEN Split 不改变这些 Shape 的基础拓扑与形状结果

Requirement: 节点布局清晰可读

资产中全部七个几何节点组 SHALL 遵循 AGENTS.md 的节点组规范:主链从左到右连续排列、辅助分支就近汇入、节点无重叠、保留默认节点标题并隐藏未使用输出。必要的向左引用 SHALL 直接连接,不使用 Reroute 绕行,允许回接连线交叉。

跨区域暂存值 SHALL 使用 o_depth_* 命名属性并就近读取,在输出前通过一个 Wildcard 模式的 Remove Named Attribute 统一清理。大步骤之间 SHALL 留白,不放置 String 注解。同一目的的计算 SHALL 聚在主轴同一侧,支线内部间距 SHALL 明显小于与其他部分的距离。独立用途可在两侧错落展开,长算式可超出所服务主链步骤的范围;必要的几何引用可回接。

Scenario: 暂存属性生命周期

  • WHEN Split 和 Thickness 分别开启或关闭
  • THEN 面、面角和顶点暂存值在正确域传递,输出不残留暂存属性,UVMap 与用户属性保持可用,关闭分支不出现移除缺失属性的警告

Scenario: 查看所有几何资产

  • WHEN 用户打开任一几何节点组
  • THEN 计算分支按用途聚拢并利用附近空位,长算式横排,局部输入靠近消费节点,布局调整保持原计算结果

Scenario: 查看同级分支汇合

  • WHEN 多个独立同级分支输入 Join Geometry、Menu Switch 或 Combine XYZ 等汇合节点
  • THEN 分支末端排成一列并对齐输出端,XYZ 三轴按同级输入组织,菜单分支按输入顺序上下排列,共享上游留在公共位置

Scenario: 查看同一用途的计算

  • WHEN 用户查看 Depth Plane 的置换计算或 Depth Surface 的 Split 选边判别
  • THEN 同一用途的计算聚在主轴同一侧,内部节点间距紧凑,与其他部分之间保留更大的空白,主轴可适当宽松

Scenario: 查看分离与厚度流程

  • WHEN 用户在节点编辑器查看新 Depth Surface
  • THEN 能沿主链依次辨认采样判别、拆边、投影、厚度和输出,辅助连线不横跨无关区域,节点文字不被遮挡

Scenario: 查看成对区域

  • WHEN 用户检查厚度 Repeat 区域
  • THEN 成对节点位置正确,循环内部节点清晰排列,区域不遮挡其他节点,Frame 仅用于确有包裹语义的部分