7.7 KiB
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 仅用于确有包裹语义的部分