Files
AnyImage/openspec/changes/compose-depth-cutout-symmetry/specs/post-cutout-symmetry/spec.md
nan ab282e4fdf feat: Implement depth cutout symmetry and associated functionalities
- Introduced a new proposal for depth cutout symmetry, allowing for the reuse of depth replacement and geometry operations.
- Added requirements for maintaining default thickness values for cutout nodes and ensuring proper initialization during object creation.
- Enhanced symmetry node to handle existing geometry, including alignment, mirroring, and boundary filling.
- Implemented fill smoothing to control the geometry of generated walls while preserving original surfaces.
- Created tests to validate the functionality of the new symmetry features against baseline geometry.
- Updated existing assets and node groups to support the new symmetry capabilities without introducing additional dependencies.
2026-09-14 14:58:48 +08:00

4.4 KiB
Raw Blame History

ADDED Requirements

Requirement: 原入口串联 Cutout 与对称节点

系统 SHALL 保留 Depth Solid 与 Depth Symmetry 入口。Depth Symmetry SHALL 按顺序创建 O Image Depth Cutout 和 O Image Cutout Symmetry 修改器,将 Cutout 两种 Thickness 输入均初始化为 0,并分别将深度标定参数与对称方向交给对应节点。

Scenario: 创建默认对称对象

  • WHEN 用户通过原 Depth Symmetry 入口完成轮廓创建
  • THEN 对象先执行零厚度 Cutout,再执行对称;Cutout 保留节点默认参数,包括 Depth Split、Boundary Smooth、Smooth 与 Depth Axis,仅沿用通用的手势模式选择、清理阈值和图像标定输入
  • AND 切换 Balloon / Shell 后厚度仍为 0

Requirement: 节点厚度默认值与入口初始化

O Image Depth Cutout 节点资产的 Balloon / Shell 两种 Thickness 默认值 SHALL 均为 0。Depth Solid 创建时 SHALL 按输入 subtype 分别设置 Balloon Thickness 为 1、Shell Thickness 为 0.2,其他创建默认设置保持不变;Depth Symmetry SHALL 使用两种厚度的零默认值。

Scenario: 手动添加 Cutout 节点

  • WHEN 用户从资产添加未经入口覆写的 Cutout 节点
  • THEN Balloon / Shell 两种 Thickness 均为 0

Scenario: 创建 Depth Solid

  • WHEN 用户通过 Depth Solid 入口创建对象
  • THEN Balloon Thickness 为 1,Shell Thickness 为 0.2,两个输入均完成初始化
  • AND 切换模式时使用对应厚度值,边界平滑等其他默认设置保持不变

Requirement: 成形后镜像与补面

对称节点 SHALL 接收上游完整几何,沿用原 Projected 的方向对齐、偏移、负侧面移除、镜像翻面与对应边界直壁连接语义。Fill Sides SHALL 控制是否添加连接侧壁。

Scenario: 非零厚度的两种成形结果

  • WHEN Balloon 或 Shell 的非零厚度输出连接至对称节点
  • THEN 节点对已成形结果执行对称;Shell 的壳体内外表面一同参与
  • AND Fill Sides 关闭时不添加连接壁,开启时连接对应边界且保持面方向一致

Requirement: 精简对称控制

对称节点 SHALL 仅公开 Geometry、Symmetry Direction、Depth Offset、Fill Sides、Fill Smooth 输入及 Geometry 输出,始终生成镜像两侧。默认方向 SHALL 为 (0, 0, 1),偏移 SHALL 为 0,Fill Smooth SHALL 为 2,Fill Sides SHALL 开启。

Scenario: 默认补面平滑

  • WHEN 从资产加载新的对称节点
  • THEN Fill Smooth 默认为 2

Scenario: 调整对称方向

  • WHEN 用户调整 Symmetry Direction 和 Depth Offset
  • THEN 几何使用原方向对齐及轴向偏移语义更新,对称平面位于调整后的局部 XY 平面
  • AND 界面不提供 Double Sided、Depth Axis、全局 Smooth 或 Boundary Smooth

Requirement: 深度 Cutout 使用 Object Space 法线

Depth Solid 与 Depth Symmetry SHALL 使用 Object Space 法线贴图,并在创建材质时开启 O Image Layer 的 Object Space。

Scenario: 创建深度 Cutout 材质

  • WHEN 用户通过任一深度 Cutout 入口生成对象
  • THEN 生成流程请求并读取 object_normal,材质的 Object Space 为开启状态

Requirement: 仅平滑新增侧壁

Fill Smooth SHALL 控制新增侧壁的几何平滑,固定与保留输入几何相接的端点并保持镜像对称;数值为 0 SHALL 使用原直壁构成。

Scenario: 平滑连接壁

  • WHEN Fill Sides 开启且 Fill Smooth 大于 0
  • THEN 有曲率的轮廓所生成侧壁内部顶点可被平滑移动,原保留表面及接缝端点不受该平滑移动
  • AND 对应连接保持封闭,镜像对称关系保持成立

Scenario: 禁用补面

  • WHEN Fill Sides 关闭而 Fill Smooth 改变
  • THEN 输出几何保持一致

Requirement: 零厚度匹配原 Projected

在相同输入、标定与方向偏移、相同预处理条件下,Cutout 零厚度接对称节点 SHALL 与原 Depth Symmetry 的 Projected 在顶点位置、面连接及朝向上等价。

Scenario: 两种模式与补面开关的一致性

  • WHEN 分别选择 Balloon / Shell 且两个厚度均为 0,Cutout 分割与平滑关闭、Depth Axis 为 -Z,旧 Projected 的 Smooth 与 Boundary Smooth 为 0,新 Fill Smooth 为 0
  • THEN 对 Fill Sides 开关分别比较,新旧结果的顶点位置在浮点容差内一致,面数、连接及朝向一致