Add cutout shell and volume node assets for depth volume processing
- Implemented `cutout_shell.py` to build front normals and shell positions for balloon geometry. - Created `cutout_volume.py` to establish smooth center fields and manage balloon surface attributes. - Introduced `pisa_sr_export.py` for exporting PiSA-SR components with dependencies and asset finalization.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Normal Map 勾选仅控制本地形态
|
||||
Normal Map 勾选 SHALL 仅控制 Flat 和 Solid 的法线生成;两个 Depth 入口 SHALL 始终生成并使用法线图,且不改写用户保存的勾选值。工具说明 SHALL 明确该作用范围。
|
||||
|
||||
#### Scenario: Flat 与 Solid 关闭法线
|
||||
- **WHEN** AI 可用且勾选关闭,用户创建 Flat 或 Solid
|
||||
- **THEN** 系统使用 NONE 法线模式
|
||||
|
||||
#### Scenario: Flat 与 Solid 开启法线
|
||||
- **WHEN** AI 可用且勾选开启,用户创建 Flat 或 Solid
|
||||
- **THEN** 系统请求 TANGENT 法线并连接结果材质
|
||||
|
||||
#### Scenario: Depth Solid 自动法线
|
||||
- **WHEN** 用户创建 Depth Solid,无论勾选保存为真或假
|
||||
- **THEN** 系统请求 OBJECT 法线并正确加载、按输出轴向处理和连接材质
|
||||
|
||||
#### Scenario: Depth Balloon 自动法线
|
||||
- **WHEN** 用户创建 Depth Balloon,无论勾选保存为真或假
|
||||
- **THEN** 系统请求 TANGENT 法线并连接结果材质
|
||||
|
||||
### Requirement: 所有调用路径采用一致策略
|
||||
法线策略 SHALL 在 Operator 业务层统一解析,Job 参数与结果接收使用同一策略。
|
||||
|
||||
#### Scenario: 绕过 Pie 调用
|
||||
- **WHEN** 直接调用 Operator 创建任一 Depth 形态并传入 generate_normal 为 false
|
||||
- **THEN** 法线仍按该深度入口生成和应用,与 Pie 调用结果一致
|
||||
|
||||
### Requirement: AI 可用性继续限制入口
|
||||
AI 未就绪时系统 SHALL 仅提供 Flat 与 Solid,忽略遗留的开启法线选项;AI 就绪时 SHALL 提供四个入口。
|
||||
|
||||
#### Scenario: 未就绪的本地创建
|
||||
- **WHEN** AI 未就绪、保存的 Normal Map 为真,用户创建 Flat 或 Solid
|
||||
- **THEN** 创建过程不因该遗留值启动 AI Job,法线模式为 NONE
|
||||
|
||||
### Requirement: 法线适配跟随当前几何
|
||||
Flat 与 Solid 共用节点组后的法线适配 SHALL 支持厚度变化,Depth 入口 SHALL 保持各自法线空间和轴向转换正确。
|
||||
|
||||
#### Scenario: Flat 增厚
|
||||
- **WHEN** 带法线的 Flat 调整为 Balloon 正厚度
|
||||
- **THEN** 材质按当前几何参与法线适配,不因初始 Flat 预设而缺失 Balloon 所需连接
|
||||
|
||||
#### Scenario: 深度入口轴向与双面
|
||||
- **WHEN** 分别检查两个 Depth 入口的 -Z、+X 输出,以及 Depth Balloon 的 Double Sided 开关
|
||||
- **THEN** 对应法线图被正确加载和连接,前后表面的着色方向与几何一致
|
||||
@@ -0,0 +1,56 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 四个创建入口映射三个节点组
|
||||
系统 SHALL 提供 Flat、Solid、Depth Solid、Depth Balloon 四个入口,并默认使用 Solid。Flat 与 Solid SHALL 共用 O Image Cutout;Depth Solid SHALL 使用 O Image Depth Cutout;Depth Balloon SHALL 使用 O Image Depth Balloon。
|
||||
|
||||
#### Scenario: 普通默认创建
|
||||
- **WHEN** 用户以默认形态创建 Cutout
|
||||
- **THEN** 对象使用 O Image Cutout,Thickness Mode 为 Balloon,Thickness 为 1
|
||||
|
||||
#### Scenario: 显式选择入口
|
||||
- **WHEN** 用户分别选择四个入口
|
||||
- **THEN** 系统按上述映射加载三个资产,Flat 的 Thickness 为 0,另外三个入口的 Thickness 为 1
|
||||
|
||||
### Requirement: 三个节点组直接输出最终几何
|
||||
三个 Cutout 节点组 SHALL 可直接作为 Geometry Nodes 修改器使用,并承担各自的清理、塑形、平滑与轴向输出。发布资产 MUST 移除旧 Shape 总切换器及旧 Surface、Balloon、Depth Surface 子组。
|
||||
|
||||
#### Scenario: 检查新建修改器与发布资产
|
||||
- **WHEN** 新建任一 Cutout 并检查其修改器与资产
|
||||
- **THEN** 修改器直接引用对应节点组,不存在跨四种形态的 Shape 输入;Cutout 资产集合恰为三个指定节点组
|
||||
|
||||
#### Scenario: 输出轴向
|
||||
- **WHEN** 对同一输入分别使用 -Z 与 +X 的 Inward Axis
|
||||
- **THEN** 几何与对象矩阵配对转换,保持相同世界空间位置及正确朝向
|
||||
|
||||
### Requirement: 普通与深度 Cutout 具有双厚度方式
|
||||
O Image Cutout 与 O Image Depth Cutout SHALL 提供 Balloon、Uniform 两种 Thickness Mode,默认 Balloon。Balloon 厚度 SHALL 表示倍率,Uniform 厚度 SHALL 表示距离,输入语义与单位必须明确区分。
|
||||
|
||||
#### Scenario: 普通平面与体积转换
|
||||
- **WHEN** O Image Cutout 的 Balloon Thickness 从 0 调整到 1
|
||||
- **THEN** 相同基础网格由单层平面变为当前 Balloon 的正背面体积,无需重算 AI 或重建对象
|
||||
|
||||
#### Scenario: 等厚板片
|
||||
- **WHEN** O Image Cutout 选择 Uniform 并设置非零厚度
|
||||
- **THEN** 输出当前 Surface 的等厚板片形态;厚度为零时输出单层平面
|
||||
|
||||
#### Scenario: 厚度单位
|
||||
- **WHEN** 用户检查或切换两种 Thickness Mode
|
||||
- **THEN** Balloon 的输入明确为倍率,Uniform 的输入明确为距离,不将一种单位的值隐式解释为另一种单位
|
||||
|
||||
### Requirement: Depth Balloon 默认双面
|
||||
O Image Depth Balloon SHALL 保留原 Depth Balloon 的参考平面塑形行为,并默认开启 Double Sided。
|
||||
|
||||
#### Scenario: 默认与单面输出
|
||||
- **WHEN** 用户创建 Depth Balloon,再关闭 Double Sided
|
||||
- **THEN** 初始输出采用原算法的双面塑形,关闭后采用原算法的单面塑形,其余参数语义保持一致
|
||||
|
||||
### Requirement: 公共网格属性与前置清理
|
||||
所有入口 SHALL 准备 o_balloon;三个节点组 SHALL 在塑形前复用按原平面岛总面积清理小区域的 Cleanup 规则,并在输出保留 UVMap、o_balloon 与用户属性。
|
||||
|
||||
#### Scenario: Flat 后续增厚
|
||||
- **WHEN** 用户将 Flat 的 Thickness 调为正值
|
||||
- **THEN** 已有 o_balloon 可直接参与塑形,UV 与材质映射保持有效
|
||||
|
||||
#### Scenario: 小岛清理
|
||||
- **WHEN** 输入包含总面积低于 Cleanup 阈值的独立平面岛
|
||||
- **THEN** 三个节点组均在塑形前删除该岛,保留大于阈值的岛
|
||||
@@ -0,0 +1,45 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 平滑背面保留空间位置
|
||||
O Image Depth Cutout 的 Balloon 模式 SHALL 以投影正面减 o_balloon 估计中心位置,固定轮廓与切口并平滑内部中心场,再用该中心场与 Balloon 轮廓构造背面。关闭边缘与整体平滑时,正面 MUST 保持原深度表面位置。
|
||||
|
||||
#### Scenario: 带噪声的已知体积
|
||||
- **WHEN** 输入正面由线性变化的中心深度、Balloon 轮廓和内部高频噪声构成,Thickness 为 1,额外几何平滑关闭
|
||||
- **THEN** 背面接近中心深度减 Balloon 轮廓,背面噪声 RMS 小于正面噪声的 1%,正面顶点位置误差小于 0.00001 个局部单位
|
||||
|
||||
#### Scenario: 前后距离保留
|
||||
- **WHEN** 输入有宽厚主体和处于不同深度的细长结构
|
||||
- **THEN** 背面形成按轮廓变化的厚度,各部分保留局部前后位置,不统一回到同一个参考平面
|
||||
|
||||
### Requirement: 两种厚度方式保留深度表面
|
||||
深度 Cutout SHALL 在 Balloon 模式使用平滑背面,在 Uniform 模式保留原 Depth Surface 的等厚行为;两种方式的零厚度 SHALL 输出单层深度表面。
|
||||
|
||||
#### Scenario: 零厚度
|
||||
- **WHEN** 两种厚度方式分别设为零
|
||||
- **THEN** 输出相同投影与 Split 结果的单层深度表面,不生成重叠背面或零面积侧壁
|
||||
|
||||
#### Scenario: 等厚方式
|
||||
- **WHEN** 选择 Uniform 并设为正厚度
|
||||
- **THEN** 正背面保持原 Depth Surface 的沿内向轴等厚关系
|
||||
|
||||
### Requirement: Split 独立于显示深度幅度
|
||||
Split SHALL 使用原始相邻面采样 Z 差经 Uniform Scale 标定后与变形前跨度比较,Cleanup MUST 位于 Split 前;Depth Scale SHALL 仅控制投影呈现幅度。
|
||||
|
||||
#### Scenario: Depth Scale 不改变切边
|
||||
- **WHEN** 固定输入和 Split,将 Depth Scale 依次设为 0、0.25、1、2、4
|
||||
- **THEN** 零厚度输出的切边拓扑保持一致,深度位移随 Depth Scale 变化
|
||||
|
||||
#### Scenario: 保留分离产生的小片
|
||||
- **WHEN** 原平面岛面积通过 Cleanup,但 Split 后的部分小片低于该面积阈值
|
||||
- **THEN** 这些分离小片仍被保留并参与后续厚度构造
|
||||
|
||||
### Requirement: 厚度网格闭合且轮廓无固定厚边
|
||||
正厚度网格 SHALL 在原轮廓合并正背面,并独立封闭 Split 切口;SHALL 保留原型中的深凹比例厚度下限、边缘平滑和整体 Smooth,且不提供 Rim Thickness。
|
||||
|
||||
#### Scenario: 五张实图验收
|
||||
- **WHEN** 使用噬菌体、蜘蛛、幼虫、心脏、棕榈树缓存输入,分别求值无平滑、边缘与整体平滑、平滑加 Split
|
||||
- **THEN** 15 个正厚度组合均为有限坐标、无非流形边、无法线连接错误和零面积面,输出保留 UVMap 与 o_balloon 并移除专用暂存属性
|
||||
|
||||
#### Scenario: 边缘与整体控制
|
||||
- **WHEN** 调整 Edge Smooth、Smooth 和 Smooth Iterations
|
||||
- **THEN** 相应几何平滑生效,Smooth Iterations 为零时整体平滑不改变位置,原轮廓不产生固定厚度的边框
|
||||
Reference in New Issue
Block a user