Files
AnyImage/docs/internals/outputs.md
nan bdbde1a10d Refactor Cutout and Image Editing Logic
- Renamed "Base Plane Depth" to "Reference Depth" across validate_cutout.py for consistency.
- Introduced a new specification for Cutout mesh sampling to ensure source pixel spacing is preserved and limits are applied correctly.
- Unified naming conventions for image editing results to maintain consistency across Remove Background, Upscale, and Crop operations.
- Updated the handling of Refine Selection to ensure it retains the original bounds and does not apply unnecessary cropping.
- Enhanced material generation logic to connect image color directly to IOR Level, improving the rendering of dark areas.
- Established clear requirements for geometry depth controls and image result materials to ensure consistent behavior across different components.
- Removed outdated logic and ensured all changes are documented and tested for regression.
2026-09-03 01:02:10 +08:00

3.1 KiB
Raw Blame History

Job 产物

Server 在 Job 目录写入图片、JSON 或 Debug NPZ;Blender 根据 Job 返回值读取文件并创建 Image、Mesh、Material 与 Object。

正式 Job

| Job | 主要文件 | Blender 消费方式 | | | | | | remove-background | image.0001.png 起 | 替换 Image Empty 的颜色数据 | | upscale-image | upscale.0001.png 起 | 替换或新建高清颜色数据 | | refine-image-selection | image.png | Image Box / Lasso 读取完整 bounds 的 Refine Selection 结果 | | generate-depth-plane-geometry | image.0001.*、z-depth.exr、depth.json | 创建 Depth Plane | | generate-cutout-artifacts | 可选 Selection、Depth 与 Normal 文件 | 创建 Cutout Shape 与材质 |

Depth Job 保存可由 Blender 直接加载的模型空间 EXR;Blender 主线程负责轮廓提取、三角化、Depth 标定和数据创建。

Depth 与 Normal 文件

MoGe-2 的原始结果由模型适配器转换为单帧 GeometryFrame。它包含 Depth、Validity、Intrinsics,以及可选的 Normal 和 Points;geometry/prediction_artifacts.py 把同一 Frame 交给各 Writer,并按请求写出以下文件:

文件 内容
vector-depth.exr RGB 保存完整相机空间 XYZ,Alpha 保存 Validity
z-depth.exr RGB 重复保存完整相机 Z,Alpha 保存 Validity
depth.json 保存 image_size、3×3 intrinsics 与有效区域的 reference_depth
tangent-normal.png Tangent Space Normal Map
object-normal.png Object Space Normal Map

MoGe-2 的布尔 Mask 以 0/1 写入 Validity。Mask 外的有限 Depth/XYZ 仍保留在 RGB,使 Geometry Nodes 的线性采样维持连续;输入 Alpha、正深度和有限性只参与 depth.json 的参考样本筛选。任一待写 Field 包含 NaN/Inf 时不生成 EXR。

Blender 通过 common/depth.py 加载 EXR,设为 Non-Color 并 Pack。Depth 与 Normal 数据块分别由 depth_data_name() 和 normal_data_name() 命名。Geometry Nodes 采样已加载的 EXR。

Cutout Selection 产物

Blender 先把 SelectionPath 栅格化为 SelectionMask,再把局部 RGBA 作为 Server 输入。MoGe-2 输入统一按 RGB × Alpha 合成到黑底;完全透明像素下的隐藏 RGB 不影响预测。Server 不接收 Path 或 Mask 对象协议:

  • 开启 Refine Selection 时,selection.png 以输入 bounds 的完整尺寸保存 Source Alpha × BEN2 Alpha RGBA;
  • 需要 Vector Depth 时请求 vector-depth.exr 与 depth.json;
  • 需要 Z Depth 时请求 z-depth.exr 与 depth.json;
  • Normal Map 按空间请求 tangent-normal.png 或 object-normal.png。

Cutout 的 Color、Normal 与 Depth 使用同一图片 Alpha 内容范围;Blender 再将该 Alpha 与 SelectionMask 相乘构建 Shape。Surface 与 Balloon 的本地路径直接组合源 Alpha 和 SelectionMask。

Debug 产物

| Job | 文件 | | | | | debug-da3 | prediction.npz | | debug-moge2 | prediction*.npz | | debug-ben2 | foreground*.png | | debug-upscale | prediction*.png |

Debug Job 保存模型适配层的直接输出。