2.8 KiB
Context
本变更整理本轮已经选定并实现的排列方案。用户确认的基准是“结构与通道联合规划”版本:支线呈现横向计算层次,主线随计算块自然起伏,长连接使用共享通道。
布局由构建工具生成,保存于 O_AnyImage.blend。运行时沿用资产加载方式。当前实现已经覆盖资产中的 7 个几何节点组。
Goals / Non-Goals
Goals:
- 通过计算块与连接通道联合规划保持整体秩序和可追溯性。
- 让全部几何节点组使用同一个通用排列入口。
- 保持节点运算、接口、真实连接、几何结果及重复排列行为正确。
Decisions
按最近的几何消费者识别支线
branches.py 从依赖图逆向计算字段节点的消费者集合,将集合相同且相连的字段组成计算块。几何处理节点和成对区域入口参与主结构规划。Group Input 按计算块或直接消费节点局部读取,减少跨区域参数线。
列内排列与整体通道规划共同形成结果
layout.py 依据依赖关系建立列,将跨列连接的中继位置作为空间参与者;通过相邻 socket 的位置关系确定列内顺序和间距。计算块在相同列坐标上整理内部层次,再与共享长线的水平通道一起形成区间约束,求出整体纵向位置。
这一方案保留选定版本的横向阅读习惯。交叉数不是硬性验收指标;画面评估关注是否能区分各条连接及支线归属。
规划完成后统一写入 Blender
arrange.py 负责清除已有布局容器与中继、准备局部输入、调用规划器,然后创建位置、共享 Reroute 和复杂支线 Frame。替换连线复用 common.nodes.replace_link_source,保留多输入 socket 的连接顺序。旧排列器失去调用入口的模块随替换移除。
通过现有构建入口发布资产
tools/nodes/build.py 对每个 GeometryNodeTree 调用排列器。测试按 check.py 中的几何资产清单参数化,覆盖排列前后程序与几何比较、节点矩形重叠、重复排列后的连接及局部输入数量。独立 Blender 进程重新加载保存资产,验证资产完整性和几何求值。
Risks / Trade-offs
- 长垂线及跨越其他 Frame 的连接仍可能存在 → 保留通道分组和局部预览,以实际追线效果评估后续调整。
- 复杂支线仍可能横向较宽 → 本轮以用户确认的整体秩序为基准,结合主线和支线的全局画面检查。
- 当前节点逻辑与历史试排的图结构不同 → 使用同一规则重新计算当前图,以当前资产的功能一致性验证结果。
Migration Plan
通用实现替换后构建资产,在独立 Blender 进程完成重新加载检查,并对照完整及局部预览。实现与资产作为同一变更交付;需要回退时同步恢复这两部分。