Files
AnyImage/openspec/specs/depth-surface-strip-cleanup/spec.md
nan 198fcbf55b
Some checks failed
Test / test (push) Has been cancelled
Initial public release
2026-09-19 21:31:36 +08:00

74 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# depth-surface-strip-cleanup Specification
## Purpose
TBD - created by archiving change clean-depth-surface-strip-faces. Update Purpose after archive.
## Requirements
### Requirement: 拆边后默认执行单次条带清理
`O Image Depth Plane` 与 `O Image Depth Cutout` SHALL 在 Split 正值分支内、Split Edges 之后且投影和厚度生成之前,通过几何节点执行一次 Face / All 删除。两个节点组 SHALL 共用该逻辑,正式接口 SHALL NOT 暴露 `Remove Strip Faces` 开关。
#### Scenario: 开启 Split
- **WHEN** Split Threshold 大于 0
- **THEN** 系统先按当前规则拆边,再根据拆后拓扑执行一次条带删面
#### Scenario: 关闭 Split
- **WHEN** Split Threshold 为 0
- **THEN** 系统旁路拆边及新增条带删面,保持当前零值分支的几何与投影行为
#### Scenario: 单次删除
- **WHEN** 首次删除使另一张面新出现一组边界对边
- **THEN** 该面不会因新边界在本次求值中被继续删除
### Requirement: 四边面边界对边判定
系统 SHALL 仅选择四边面,并按面角顺序取得四条边。若至少一组对边的 Face Count 均等于 1,该面 SHALL 被选中;其余面 SHALL 被保留。
#### Scenario: 条带及孤立四边面
- **WHEN** 四边面具有两条相对的边界边,或具有三条、四条边界边
- **THEN** 该面被删除
#### Scenario: 普通边缘及角落
- **WHEN** 四边面没有边界边、只有一条边界边,或仅有两条相邻边界边
- **THEN** 该面保留
#### Scenario: 面角起点与绕序
- **WHEN** 同一四边面的面角起点改变或绕序反转
- **THEN** 选择结果不变
#### Scenario: 非四边面
- **WHEN** 输入面为三角面或其他非四边面
- **THEN** 新增清理规则不删除该面
#### Scenario: 非流形边
- **WHEN** 一条边的 Face Count 不等于 1
- **THEN** 该边不能作为匹配条件中的边界边
### Requirement: 清理结果接入原投影和厚度流程
系统 SHALL 在剩余几何上固定相机坐标并执行现有投影及加厚,保留 UV 和用户属性,保持切口区域独立。清理选择 SHALL 只依据拆后拓扑,不依赖 Thickness 或后续 Smooth。
#### Scenario: 剩余区域加厚
- **WHEN** 清理后的定向正确的流形片状区域设置正厚度
- **THEN** 每个保留区域的正背面与侧壁保持完整连接,区域之间保持独立
#### Scenario: 改变显示形状参数
- **WHEN** 基础几何、深度输入与 Split Threshold 不变,仅修改 Thickness 或 Smooth
- **THEN** 被条带清理选中的基础面集合不变
#### Scenario: 属性与空结果
- **WHEN** 清理保留部分面或删除全部面
- **THEN** 求值正常完成且坐标有限;有剩余几何时 UV 与用户属性可用,临时属性依当前流程清理
### Requirement: Split Threshold 位于 Smooth 前
两个节点组 SHALL 将唯一的 `Split Threshold` 输入放在主输入区,紧邻并位于 `Smooth` 之前。该输入 SHALL 保持原名称、FACTOR 类型、0–1 范围、默认 0 和当前阈值映射。
#### Scenario: 检查接口
- **WHEN** 检查任一节点组或其修改器输入
- **THEN** Split Threshold 位于 Smooth 前且不属于 Options,Options 内没有重复输入,接口没有 Remove Strip Faces
#### Scenario: 参数读取
- **WHEN** Operator 为修改器赋值或用户调整 Split Threshold
- **THEN** 新位置的输入正常控制原拆边强度及默认条带清理