feat: Add MoGe-2 surface generation and export functionality

- Introduced new enum items for depth plane and surface models with caching.
- Added MOGE2_MESH_JOB to operators for converting images to surfaces.
- Implemented surface mesh building and exporting in RunJob operator.
- Enhanced UI to include export format options for MoGe-2.
- Created validation tools for MoGe-2 surface assets and depth planes.
- Updated geometry nodes to support new surface generation features.
- Refactored existing tests to accommodate new functionality and ensure stability.
This commit is contained in:
2026-08-13 22:07:36 +08:00
parent a6370d678d
commit caeb6d706c
17 changed files with 902 additions and 251 deletions

View File

@@ -20,6 +20,13 @@ from snapform.image_mesh import load_geometry_node_group
def main():
bpy.ops.wm.read_factory_settings(use_empty=True)
group = load_depth_plane_node_group()
geometry_textures = [
node
for node in group.nodes
if node.bl_idname == "GeometryNodeImageTexture"
]
assert geometry_textures
assert all(node.extension == "EXTEND" for node in geometry_textures)
background_depth = next(
item
for item in group.interface.items_tree
@@ -212,6 +219,11 @@ def main():
node.bl_idname in forbidden_outer_nodes
for node in material.node_tree.nodes
)
assert all(
node.extension == "EXTEND"
for node in material.node_tree.nodes
if node.bl_idname == "ShaderNodeTexImage"
)
surface_material = create_material("Surface", foreground, 1.0)
surface_group = bpy.data.node_groups[SURFACE_MATERIAL_NODE_GROUP_NAME]
surface_group_nodes = [
@@ -251,6 +263,11 @@ def main():
node.bl_idname in forbidden_outer_nodes
for node in surface_material.node_tree.nodes
)
assert all(
node.extension == "EXTEND"
for node in surface_material.node_tree.nodes
if node.bl_idname == "ShaderNodeTexImage"
)
modifier = add_depth_plane_processing(
obj,
depth,