feat: Implement depth surface strip cleanup and organize tool CLI
- Added a proposal for depth surface strip cleanup, detailing the rationale and changes to the depth plane and cutout nodes. - Created specifications for the new cleanup requirements, including scenarios for strip removal and boundary edge detection. - Developed tasks for implementing shared strip detection logic and integrating new interfaces for depth nodes. - Established a new CLI structure for organizing node groups and model commands, replacing old entry points with a more intuitive command structure. - Introduced a prototype for panorama surface generation, including requirements for distance reconstruction and geometry node surfaces. - Added comprehensive tests for depth strip cleanup functionality, ensuring correct behavior for various mesh topologies and edge cases.
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
## ADDED 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** 新位置的输入正常控制原拆边强度及默认条带清理
|
||||
Reference in New Issue
Block a user