- Introduced `test_cutout.py` to validate cutout pie menu behavior, image lasso options, and mesh detail calculations. - Added `test_mesh.py` to ensure correct tangent normal rasterization, plane source topology, and depth surface evaluations. - Created `test_mesh_blender.py` to verify material node groups, tangent baking, and local cutout building from Blender images. - Implemented tests for handling alpha regions and ensuring geometry nodes maintain expected behavior.
3.3 KiB
Surface
Surface 从单张图片生成带透视关系的相机空间网格。它比 Depth Plane 更接近真实空间结构,适合需要匹配相机或继续编辑拓扑的场景。操作方法见Surface 使用指南。
数据流
flowchart LR
Image["单张 Image Empty"] --> Model["DA3 / MoGe-2"]
Model --> Builder["Surface Builder"]
Builder --> Mesh["mesh.npz"]
Mesh --> Blender["Blender 导入"]
Blender --> Nodes["Geometry Nodes 后处理"]
Nodes --> Result["Surface + Material"]
Blender --> Camera["可选匹配相机"]
模型提供深度、相机和有效区域,Surface Builder 将其转换为统一的相机空间网格。Blender 导入网格后,用 Geometry Nodes 完成清理、重拓扑、平滑和 UV 重投影。
模型数据
| 来源 | 用于建网格的数据 | 材质附加数据 |
|---|---|---|
| DA3 | Depth、confidence、intrinsics | 原图颜色 |
| MoGe-2 | Metric depth、mask、intrinsics | 原图颜色与 normal |
两种模型共享同一 Surface Builder 和网格文件格式。启用 Remove Background 时,输入 Alpha 与 BEN2 Alpha 相乘后的结果会在建网格阶段移除背景三角面;这是几何裁剪,转换后关闭材质 Mask 不会恢复已删除的面。
源网格
mesh.npz 保存:
- camera-space
vertices与faces - 原图坐标对应的
uv intrinsics与image_size- 用于整体尺度的
reference_depth - Geometry Nodes 使用的深度、Mask、置信度或连续性属性
源网格保持模型空间信息,视觉清理集中在 Geometry Nodes 中完成。这样可以调整参数、比较结果,也可以 Apply 修改器后继续普通建模。
Geometry Nodes
DA3 使用 O DA3 Surface,MoGe-2 使用 O MoGe2 Surface。两者采用相同的处理顺序:
- 根据有效区域、深度连续性和可用置信度剔除不可靠面
- 合并和修复拓扑
- 清理小岛并平滑表面
- 从源网格重新投影 UV
常用控制包括 Iterations、Resolution、Smooth、Depth Continuity、Confidence 和 Mask。节点资产由扩展复用,多个 Surface 不会各自复制一套节点图。
空间与相机
网格在 camera space 中生成,再通过源 Image Empty 的 Transform 放入场景。导入过程会匹配图片可见尺寸、宽高比、Offset 与主点位置。
启用 Create Matching Camera 时,AnyImage 根据模型 intrinsics 创建相机并使用相同坐标变换,使网格与相机视图保持一致。模型估计的焦距和主点决定透视关系;reference_depth 决定整体尺度。
材质与文件
颜色统一写为 image.0001.*,导入时沿用源 Image 名称,由 Blender 自动解决同名冲突。MoGe-2 还会输出 normal.png,作为 object-space normal 接入统一的 O Image Layer;材质会自动打开 Object Space,未提供 normal 的图片材质使用 [0.5, 0.5, 1.0, 1.0] 中性默认值。材质名称以源 Image datablock 为基名。
单图结果可以 Pack 到 .blend。模型原始结果与 mesh.npz 保留在 Job 目录中,便于调试和重新检查。
适用范围
Surface 面向单张图片。它生成可编辑的透视网格,但遮挡区域仍来自单视图估计,无法恢复图片中不可见的真实几何。视频和序列帧应使用 Depth Plane。