feat: Add surface generation and media handling

- Implemented surface generation functionality in `surface.py`, including geometry estimation and texture writing.
- Introduced media input handling in `input.py`, supporting image and video frame extraction.
- Added model management for geometry adapters in `models/__init__.py`.
- Created BEN2 and DA3 model inference logic in `ben2.py` and `da3.py`, respectively.
- Developed ONNX model inference utilities for BEN2 and DA3 in `onnx_ben2.py` and `onnx_da3.py`.
- Added support for MoGe-2 model inference in `moge2.py` with necessary ONNX utilities.
- Implemented output handling for depth and surface data in `depth.py` and `surface.py`.
- Created debug output utilities for DA3 and MoGe-2 predictions in `debug_da3.py` and `debug_moge2.py`.
- Enhanced ONNX runtime session management in `onnx_runtime.py`.
- Updated `__init__.py` files to include new modules and functions for better organization.
This commit is contained in:
2026-08-18 23:27:10 +08:00
parent 9dfa49602c
commit 835225d264
62 changed files with 2126 additions and 2318 deletions

View File

@@ -381,6 +381,15 @@ def build_group(
)
geometry_input_socket.structure_type = "SINGLE"
remesh_iterations = new_socket(
interface,
"Iterations",
"INPUT",
"NodeSocketInt",
)
remesh_iterations.default_value = 2
remesh_iterations.min_value = 0
remesh_iterations.max_value = 8
resolution = new_socket(
interface,
"Resolution",
@@ -390,15 +399,6 @@ def build_group(
resolution.default_value = 0.1
resolution.min_value = 0.000001
resolution.subtype = "DISTANCE"
remesh_iterations = new_socket(
interface,
"Relax Iterations",
"INPUT",
"NodeSocketInt",
)
remesh_iterations.default_value = 2
remesh_iterations.min_value = 1
remesh_iterations.max_value = 8
smooth_amount = new_socket(
interface,
"Smooth",
@@ -485,7 +485,7 @@ def build_group(
remesh_input = new_group_input(
nodes,
(-100.0, -500.0),
{"Resolution", "Relax Iterations", "Smooth"},
{"Resolution", "Iterations", "Smooth"},
)
topology_input = new_group_input(nodes, (350.0, -700.0), {"Fix Topology"})
island_input = new_group_input(nodes, (3400.0, 100.0), {"Resolution"})
@@ -497,7 +497,7 @@ def build_group(
if include_confidence:
confidence_attribute = nodes.new("GeometryNodeInputNamedAttribute")
confidence_attribute.data_type = "FLOAT"
confidence_attribute.inputs["Name"].default_value = "o_face_confidence"
confidence_attribute.inputs["Name"].default_value = "o_confidence"
confidence_attribute.location = (-1800.0, 600.0)
confidence_scale = nodes.new("ShaderNodeMath")
confidence_scale.operation = "MULTIPLY"
@@ -595,7 +595,7 @@ def build_group(
group,
culled_geometry,
remesh_input.outputs["Resolution"],
remesh_input.outputs["Relax Iterations"],
remesh_input.outputs["Iterations"],
topology_input.outputs["Fix Topology"],
remesh_input.outputs["Smooth"],
(-300.0, 100.0),