Files
AnyImage/openspec/specs/depth-surface-stretch-culling/spec.md
nan 076a8c90f1 Add specifications for two-times upscale and unified depth plane features
- Introduced the two-times upscale specification detailing requirements for unified output, fixed model presets, arbitrary dimensions, and consistent job behavior.
- Added scenarios for existing models, repeated upscale, and handling of alpha preservation.
- Created the unified depth plane specification outlining geometry modes, stable interface, and asset evaluation.
- Defined scenarios for mode switching, relief and camera preservation, and validation of delivered assets.
2026-09-17 17:19:05 +08:00

3.6 KiB
Raw Blame History

depth-surface-stretch-culling Specification

Purpose

TBD - created by archiving change restore-depth-surface-stretch-culling. Update Purpose after archive.

Requirements

Requirement: Depth Surface exposes a stretch multiplier limit

系统 SHALL 仅为 Depth Surface 提供 Stretch Limit Factor 输入,范围为 0–1、默认值为 0,并将它放入 Options Panel。系统 SHALL 以原始边长除以投影后边长得到剩余比例;0 SHALL 关闭拉伸剔面,正值越大 SHALL 越严格地清理拉伸面。

Scenario: Default value preserves the complete surface

  • WHEN 用户创建 Depth Surface 且保持 Stretch Limit 为 0
  • THEN 系统 SHALL 不因边长比例删除任何 Edge 或 Face

Scenario: Other Cutout shapes do not consume the limit

  • WHEN 当前 Shape 为 Surface、Balloon 或 Depth Balloon
  • THEN Stretch Limit SHALL 不显示为该 Shape 的有效控制,也 SHALL 不改变其几何结果

Requirement: Stretch is measured on matching edges around depth projection

系统 SHALL 在 Depth Surface 的 Set Position 之前以 Point Domain 捕获 Edge Vertices Distance Field 的原始值,并将同一个未捕获 Field 直接用于 Set Position 后的当前距离。系统 SHALL 在 原始距离 / 当前距离 < Stretch Limit 时以 Point Domain 删除对应位置及其相邻 Edge 和 Face。

Scenario: Point remains within the threshold

  • WHEN 一个 Point 上适配后的边长比例不低于 Stretch Limit
  • THEN 系统 SHALL 保留该 Point 及其相邻拓扑

Scenario: Point exceeds the threshold

  • WHEN 一个 Point 上适配后的边长比例低于 Stretch Limit
  • THEN 系统 SHALL 删除该 Point 及相邻 Edge 和 Face

Scenario: Depth Scale changes the evaluated stretch

  • WHEN 用户调整 Depth Scale,使同一条 Edge 的投影后长度跨过当前 Stretch Limit
  • THEN Geometry Nodes SHALL 实时更新该 Edge 及关联 Face 的保留状态

Scenario: Lower threshold permits more stretch

  • WHEN 同一个 Point 的剩余比例不低于 Stretch Limit
  • THEN 系统 SHALL 保留该 Point 及其相邻拓扑

Requirement: Stretch culling removes loose topology

系统 SHALL 在删除拉伸 Point 后删除 Edge Neighbors.Face Count == 0 的 Edge,并随后删除 Vertex Neighbors.Face Count == 0 的 Point。该清理 SHALL 位于 Depth Surface Thickness 与 Smooth 之前,并 SHALL 保留仍属于至少一个 Face 的开放边界。

Scenario: Face deletion leaves a single line

  • WHEN 拉伸剔面后有 Edge 不再属于任何 Face
  • THEN 系统 SHALL 删除该 Edge,最终 Depth Surface 不包含纯线拓扑

Scenario: Edge deletion leaves isolated points

  • WHEN 松散 Edge 清理后有 Point 不再属于任何 Face
  • THEN 系统 SHALL 删除该 Point,最终 Depth Surface 不包含孤立点

Scenario: Culling creates an open surface boundary

  • WHEN 一条 Edge 在拉伸剔面后仍属于一个保留的 Face
  • THEN 系统 SHALL 保留该 Edge,使后续 Thickness 能围绕最终开放边界构建侧壁

Requirement: Stretch culling preserves Depth Artifact semantics

系统 SHALL 只使用 Geometry Nodes 中投影前后的几何边长完成拉伸判断,并 SHALL 保持 Vector Depth EXR 的 RGB Camera XYZ、Validity Alpha、Depth Metadata 和 Server Job 协议不变。

Scenario: Depth Surface evaluates stretch data

  • WHEN Depth Surface 使用生成的 Vector Depth EXR 求值
  • THEN 系统 SHALL 从 RGB Camera XYZ 形成投影并比较几何边长,且 SHALL NOT 要求额外 Depth Continuity 通道或贴图