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

4.5 KiB
Raw Permalink Blame History

pinned-geometry-smoothing Specification

Purpose

TBD - created by archiving change pin-geometry-node-smoothing. Update Purpose after archive.

Requirements

Requirement: 边界平滑固定开启 Pin Sharp 与 Pin Boundary

O Image Cutout Symmetry 的 Seam Smooth,以及 O Image Depth Plane、O Image Depth Cutout、O Image Depth Panorama 的 Boundary Smooth SHALL 固定使用 Pin Sharp = 1 与 Pin Boundary = 1,且 MUST NOT 为这两个 pin 新增或修改 modifier 输入。

Scenario: 边界点按边界条带松弛

  • WHEN 平滑命中边界点,包括 Split 形成的切边与对称平面的切缝
  • THEN 该点的目标位置取自边界条带自身权重 0.5 的一步 Blur
  • AND 该点不被内部 Blur 结果拖拽,轮廓不因平滑收缩

Scenario: 边界顶点仍沿边界移动

  • WHEN 边界上存在阶梯状顶点
  • THEN 顶点沿边界移动以消除阶梯
  • AND 顶点不会被固定在原位

Scenario: 尖锐处少动

  • WHEN 平滑范围内存在法线不连续的尖锐处
  • THEN 该点的平滑权重乘以 |Blur(Normal, 10)|
  • AND 尖锐处的位移小于同等权重下平坦区域的位移

Requirement: Fill Smooth 平滑衔接带

O Image Cutout Symmetry 的 Fill Smooth SHALL 平滑 front 表面与它挤出的侧壁之间的衔接带。锚点 SHALL 是 front 的完整边界带,即外侧轮廓与对称面上的切缝,SHALL 按四圈渐变衰减并覆盖对称轴上的点。该衔接处不是网格边界,因此 MUST NOT 套用 Pin Boundary,但 SHALL 保留 Pin Sharp。

Scenario: 衔接带使用邻域平均

  • WHEN Fill Smooth 大于 0
  • THEN 受力点按邻域平均松弛,不切换到边界条带目标

Scenario: 衔接带保留锐度权重

  • WHEN 衔接带范围内存在法线不连续的尖锐处
  • THEN 该点的平滑权重乘以 |Blur(Normal, 10)|

Scenario: 衔接带覆盖对称轴上的点

  • WHEN Fill Smooth 大于 0
  • THEN 对称轴上的点与外侧轮廓同样产生面内位移

Scenario: 衔接带比两圈更宽

  • WHEN Fill Smooth 大于 0
  • THEN 从轮廓向内第三圈的点仍然受力
  • AND 超出配置圈数的点保持原位

Requirement: 作用范围保持渐变语义

Boundary Smooth、Fill Smooth、Seam Smooth SHALL 继续表示平滑生效的渐变区域与迭代次数,落在范围外的顶点 MUST 保持原位。

Scenario: 范围外不动

  • WHEN 任一平滑的迭代次数大于 0
  • THEN 落在渐变范围外的顶点位置与输入完全一致
  • AND 拓扑与 UV 保持不变

Scenario: Cutout 轮廓与切边权重差异

  • WHEN Depth Cutout 同时存在原始轮廓与 Split 切边
  • THEN Split 切边使用完整权重
  • AND 原始轮廓使用 0.1 倍权重
  • AND Depth Plane 与 Panorama 的轮廓权重保持 1.0

Scenario: 关闭平滑

  • WHEN 迭代次数为 0
  • THEN 输出几何与未平滑的基线完全一致

Requirement: 共享平滑实现

common/smoothing.py SHALL 提供单一的平滑构建函数:pin 形态使用边界条带目标与锐度系数,普通形态只使用邻域平均目标。各节点组只提供几何、迭代次数、作用范围、权重、可移动分量与是否 pin;系统 MUST NOT 为单个节点组保留独立的平滑实现或旧偏移路径。

Scenario: 站点调用一致

  • WHEN 任一节点组构建顶点位置平滑
  • THEN 该组只传入几何、迭代次数、作用范围、权重、允许移动的分量与是否 pin
  • AND 边界条带分支、锐度权重与普通邻域平均目标由共享实现生成

Scenario: 对称平面约束

  • WHEN O Image Cutout Symmetry 应用 Fill 或 Seam 平滑
  • THEN 位移限制在对称平面内的分量
  • AND 镜像焊接与闭合性保持不变

Requirement: 属性平滑保持现状

法线平滑、深度模糊、掩码与统计模糊 MUST NOT 纳入 pin,保持既有节点与权重。

Scenario: 属性平滑不受影响

  • WHEN 构建 Depth Cutout、Depth Plane 或 Panorama
  • THEN 法线平滑与深度模糊的节点结构、迭代次数与权重与变更前一致

Requirement: 资产与测试同步

源码、保存资产与测试 SHALL 保持一致;几何节点及嵌套组 MUST 保持 Capture Attribute 为零。

Scenario: 重建资产

  • WHEN 执行节点资产构建并在独立 Blender 进程重新加载
  • THEN 资产与源码构建结果通过相同的行为验证
  • AND Capture Attribute 检查通过