- Added a new cutout tool for selecting regions in images, allowing users to choose mesh shapes based on selected areas. - Introduced depth generation capabilities for rasterized images, including normal data extraction. - Created jobs for generating depth planes and region data, enhancing the AI data generation workflow. - Developed a selection refinement process for cutout regions, improving accuracy in generated outputs. - Established a new region module for handling rasterized image regions and their associated AI generation tasks. - Enhanced node graph builders for asset generation, facilitating smoother integration of new features.
3.8 KiB
Job 产物
Job 目录是 Server 与 Blender Operator 的交换边界。Server 写入普通图片、JSON 或 NPZ;Blender 只根据 Job 返回值读取需要的文件,并创建最终数据块。
产物流向
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 起 |
按共享引用情况替换当前 Image Empty 的颜色数据,并沿用原 Image 命名语义 |
refine-image-mask |
image.png、bounds.json |
Image Box / Lasso 读取细化 Alpha 与原图坐标 |
generate-depth-plane |
image.0001.*、image_geometry.npz |
创建颜色图、深度图、材质和 Plane |
generate-region-data |
可选的 region.png、region_bounds.json、image_geometry.npz、normal.png |
Blender 主线程构建 Cutout Shape 与贴图 |
两个几何 Job 都不输出 Blender 网格。generate-depth-plane 生成完整图片的颜色副本与深度场;generate-region-data 只生成请求的 AI 产物。轮廓提取、约束三角化以及 Mesh、Material 和 Geometry Nodes 创建都在 Blender 主线程完成。
深度场
image_geometry.npz 是 Depth Plane、Depth Balloon 与 Depth Surface 共用的模型中间结果。Blender 侧统一通过 operators/common/mesh_result.py 的 load_image_geometry() 读取为 ImageGeometry,功能模块不分别解释字段:
| 字段 | 含义 |
|---|---|
points |
每个模型像素的相机空间 XYZ |
depth |
相机深度 |
intrinsics |
像素坐标下的 3×3 相机内参 |
valid |
模型与数值检查后的有效区域 |
calibration_valid |
用于结果定位或深度基准的区域;Cutout 时与 Region 相交 |
image_size |
深度场宽高 |
reference_depth |
校准区域中的参考深度 |
Server 保留模型空间数据,不提前换算 Blender 单位。Depth Plane 在导入时根据 Image Empty 平面范围和相机内参锚定点场;Cutout 深度形状则计算 Uniform Scale 和局部坐标,再把相机点写入 Packed 浮点 Image 供 Geometry Nodes 采样。
Cutout Region 产物
Blender 侧先把 RegionPath 栅格化为 RegionMask,再将 Region 裁切为带有效 Alpha 的临时 RGBA 输入。Server 不接收路径或 Mask 协议,只按需产生 AI 数据:
- 启用 Refine 时,
region.png保存细化后的局部 RGBA,region_bounds.json保存它在输入裁切图中的范围; - Depth Shape 使用
image_geometry.npz; - Tangent 或 Object Normal 使用
normal.png。
Blender 将局部范围与原始 RegionMask.bounds 合成回源图坐标,并直接从源 Image 创建最终 Color Image。未启用 Refine、Depth 或 Normal 时不提交 Job。
Debug 产物
Debug Job 保留模型适配层的直接输出,不执行正式功能的 Blender 导入:
| Job | 文件 |
|---|---|
debug-da3 |
prediction.npz |
debug-moge2 |
prediction*.npz |
debug-ben2 |
foreground*.png |
debug-upscale |
prediction*.png |
这些文件用于验证模型、Device 和适配层。正式 Job 会继续派生 Region、Alpha、深度场或可导入图片,因此两者的文件结构有意不同。
单图与序列
正式颜色序列从 image.0001.* 开始,Upscale 使用独立的 upscale.0001.png 前缀。Remove Background 与 Upscale 的动画结果继续引用 Job 目录;单图结果通常在 Blender 导入后 Pack 到 .blend。不要清理仍被工程引用的序列目录。