Add new node asset scripts for geometry and shader operations
- Implemented `build_mesh_plane.py` to create a geometry node group for mesh planes with customizable parameters. - Created `build_shadeless.py` for a shader node group that displays color without scene lighting while preserving shadows and reflections. - Added `validate.py` to validate the integrity of the newly created node groups and their inputs. - Introduced `validate_cutout.py` to ensure the functionality of cutout node groups and their dependencies. - Developed `validate_mesh_plane.py` to test the mesh plane creation and its modifier settings.
This commit is contained in:
72
docs/internals/outputs.md
Normal file
72
docs/internals/outputs.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Job 产物
|
||||
|
||||
Job 目录是 Server 与 Blender Operator 的交换边界。Server 写入普通图片、JSON 或 NPZ;Blender 只根据 Job 返回值读取需要的文件,并创建最终数据块。
|
||||
|
||||
## 产物流向
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Input["媒体输入"] --> Job["Server Job"]
|
||||
Job --> Color["PNG 颜色 / Alpha"]
|
||||
Job --> Field["NPZ 深度场"]
|
||||
Job --> Meta["JSON bounds"]
|
||||
Color --> Import["Blender response()"]
|
||||
Field --> Import
|
||||
Meta --> Import
|
||||
Import --> Data["Image / Mesh / Material"]
|
||||
```
|
||||
|
||||
## 正式 Job
|
||||
|
||||
| Job | 主要文件 | 消费方 |
|
||||
| --- | --- | --- |
|
||||
| `remove-background` | `image.0001.png` 起 | 替换 Image Empty 的颜色数据 |
|
||||
| `upscale-image` | `upscale.0001.png` 起 | 创建 `_upscale.png` Image 并记录原图引用 |
|
||||
| `refine-image-mask` | `selection-input.png`、`image.png`、`bounds.json` | Image Box / Lasso 读取 Alpha 与原图坐标 |
|
||||
| `prepare-geometry-data`:Depth Plane | `image.0001.*`、`field.npz` | 创建颜色图、深度图、材质和 Plane |
|
||||
| `prepare-geometry-data`:Cutout | `image.0001.png`、`selection.png`、`analysis.png`、`bounds.json`,以及按形状生成的 `field.npz` / `normal.png` | Blender 主线程构建局部网格与贴图 |
|
||||
|
||||
`prepare-geometry-data` 不输出 Blender 网格。它只准备颜色、选区和模型数组;轮廓提取、约束三角化、Geometry Nodes Modifier 与法线烘焙都在 Blender 响应阶段完成。
|
||||
|
||||
## 深度场
|
||||
|
||||
`field.npz` 是 Depth Plane、Depth Balloon 与 Depth Surface 共用的模型中间结果:
|
||||
|
||||
| 字段 | 含义 |
|
||||
| --- | --- |
|
||||
| `points` | 每个模型像素的相机空间 XYZ |
|
||||
| `depth` | 相机深度 |
|
||||
| `intrinsics` | 像素坐标下的 3×3 相机内参 |
|
||||
| `valid` | 模型与数值检查后的有效区域 |
|
||||
| `calibration_valid` | 用于结果定位或深度基准的区域;Cutout 时与选择相交 |
|
||||
| `image_size` | 深度场宽高 |
|
||||
| `reference_depth` | 校准区域中的参考深度 |
|
||||
|
||||
Server 保留模型空间数据,不提前换算 Blender 单位。Depth Plane 在导入时根据 Image Empty 平面范围和相机内参锚定点场;Cutout 深度形状则计算 `Uniform Scale` 和局部坐标,再把相机点写入 Packed 浮点 Image 供 Geometry Nodes 采样。
|
||||
|
||||
## Cutout 三类图片
|
||||
|
||||
Cutout 把“显示内容”“几何范围”和“模型分析”分开:
|
||||
|
||||
- `image.0001.png` 保存裁切矩形中的源颜色与原 Alpha,用作材质。
|
||||
- `selection.png` 保存最终选择 Alpha,用于轮廓与网格。
|
||||
- `analysis.png` 只保留选择内的有效 RGBA,供深度或法线模型分析。
|
||||
|
||||
`bounds.json` 把裁切矩形映射回源图像素坐标。这样 Server 可以只处理局部数据,Blender 仍能恢复局部平面范围、UV 和世界位置。
|
||||
|
||||
## Debug 产物
|
||||
|
||||
Debug Job 保留模型适配层的直接输出,不执行正式功能的 Blender 导入:
|
||||
|
||||
| Job | 文件 |
|
||||
| --- | --- |
|
||||
| `debug-da3` | `prediction.npz` |
|
||||
| `debug-moge2` | `prediction*.npz` |
|
||||
| `debug-ben2` | `foreground*.png` |
|
||||
| `debug-upscale` | `prediction*.png` |
|
||||
|
||||
这些文件用于验证模型、Device 和适配层。正式 Job 会继续派生选择、Alpha、深度场或可导入图片,因此两者的文件结构有意不同。
|
||||
|
||||
## 单图与序列
|
||||
|
||||
正式颜色序列从 `image.0001.*` 开始,Upscale 使用独立的 `upscale.0001.png` 前缀。Remove Background 与 Upscale 的动画结果继续引用 Job 目录;单图结果通常在 Blender 导入后 Pack 到 `.blend`。不要清理仍被工程引用的序列目录。
|
||||
Reference in New Issue
Block a user