Initial public release
Some checks failed
Test / test (push) Has been cancelled

This commit is contained in:
2026-09-19 21:31:36 +08:00
commit 198fcbf55b
837 changed files with 67239 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
# geometry-field-flow Specification
## Purpose
TBD - created by archiving change remove-geometry-capture-attributes. Update Purpose after archive.
## Requirements
### Requirement: Geometry graphs prohibit Capture Attribute
全部生产几何节点定义、嵌套几何组、保存资产及相关测试辅助图 MUST 不使用 GeometryNodeCaptureAttribute。
#### Scenario: Inspect definitions and saved assets
- **WHEN** 分别构建节点定义并加载保存资产,递归检查全部几何组及嵌套组
- **THEN** 每个已访问几何组的 Capture Attribute 数量均为零
### Requirement: Fields are consumed directly when evaluation is equivalent
字段 SHALL 在消费位置直接连接,明确必要域转换;跨几何变化时 SHALL 优先审查调整消费顺序及源几何采样,以减少中间存储。多个消费者或跨区域连线 MUST 不作为存值的充分理由。
#### Scenario: Reuse a field without geometry changes
- **WHEN** 多个消费者所在几何状态、域、类型与输入属性版本允许等价求值
- **THEN** 消费者直接使用字段及必要域转换,保持原结果而不新增存储
#### Scenario: Consume a field after topology changes
- **WHEN** 切分、删面、挤出或合并改变源字段求值上下文
- **THEN** 实现明确源几何与映射,验证结果等价,并仅保存无法通过合理调整消费或采样消除的必要数据
### Requirement: Named storage has an explicit purpose and lifetime
每处 Store Named Attribute SHALL 有明确的实际消费者与存储必要性,记录名称、类型、域、Selection 和阶段。必要命名协议 SHALL 保留;临时属性 SHALL 在最后消费者后清理,并保留已有用户属性。
#### Scenario: Preserve material protocols
- **WHEN** 输出几何供材质消费 UVMap 或 o_normal_scale
- **THEN** 属性域与数值保持正确,包括角 UV 以及正背面和侧壁掩码
#### Scenario: Finish consuming temporary data
- **WHEN** 几何处理完成临时命名数据的最后一次消费
- **THEN** 最终输出不携带新增内部临时属性,且输入已有用户属性的名称、类型和值按原行为保留
### Requirement: Geometry behavior and graph readability are preserved
重构 SHALL 保持修改器接口、几何结果、UV 和材质行为,并逐组检查字段消费关系与完整节点布局的可读性。
#### Scenario: Validate depth processing
- **WHEN** 使用非均匀深度测试 Split 开关、零与正厚度、独立重叠表面、Balloon/Uniform、圆化、膨胀及法线平滑
- **THEN** 实际几何与实施前行为基线等价,索引重排按拓扑和对应几何数据比较
#### Scenario: Validate cut boundary smoothing and panorama
- **WHEN** 对原轮廓、切分边界、平滑迭代和 Panorama 接缝、极点、无效像素及 Valid Only 求值
- **THEN** 原轮廓保护、影响范围、固定映射、球面采样与 UV 保持预期行为
#### Scenario: Inspect material inheritance
- **WHEN** 输入为空或带有多个材质槽,执行 Image Plane 或 Panorama 的材质继承
- **THEN** 材质槽及面材质索引符合原行为,生成几何保留且输入来源几何正确处理
### Requirement: Rules tests and saved assets agree
项目规范及当前节点资产说明 SHALL 明确禁止 Capture 并采用一致的字段传递规则。测试 SHALL 覆盖结构约束与真实行为;节点资产 SHALL 重建并经过独立加载验证,相关测试及全量测试正常退出后完成交付。
#### Scenario: Deliver a geometry graph change
- **WHEN** 本次节点整理完成
- **THEN** 源码、规范、测试和 O_AnyImage.blend 同步,Capture 旧结构断言已替换,uv run node-group build 与 uv run pytest 成功且正常退出