ComfyUI Node
Atlas Export Relief Mesh (OBJ) π»
A ComfyUI node in Atlas/10 Β· Export with 21 inputs and 4 outputs.
Atlas Export Relief Mesh (OBJ) π»
- solve
- image
- project
- obj_path
- glb_path
- preview_solve
- report
βoutput_diratlas_exportsβΊ
βgrid_long_edge128βΊ
βdepth_edge_rel0.50βΊ
βdepth_modeldepth-anything/Depth-Anything-V2-Metric-Outdoor-Large-hfβΊ
βdeviceautoβΊ
βformatbothβΊ
βuse_solve_meshtrueβΊ
βmax_edge_factor12βΊ
βnormal_edge_deg0βΊ
βfill_interior_holesfalseβΊ
βmax_hole_edges64βΊ
βfill_depth_near_m0.0βΊ
βfill_depth_far_m0.0βΊ
βretopo_methodoffβΊ
βretopo_target_vertex_count2000βΊ
βretopo_smooth_iterations0βΊ
βretopo_crease_angle30βΊ
βretopo_pure_quadfalseβΊ
CategoryAtlas/10 Β· Export
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| solve | ATLAS_SOLVE | β | |
| image | IMAGE | β | |
| output_dir | STRING | atlas_exports | β |
| grid_long_edgeopt | INT | 12816β4096 | Mesh density: grid columns along the longest image edge. |
| depth_edge_relopt | FLOAT | 0.500.05β5 | Relative depth jump that tears the mesh (silhouette holes). |
| depth_modelopt | COMBO | depth-anything/Depth-Anything-V2-Metric-Outdoor-Large-hf | 10 options: depth-anything/Depth-Anything-V2-Metric-Outdoor-Large-hf, depth-anything/Depth-Anything-V2-Metric-Indoor-Large-hf, depth-anything/DA3METRIC-LARGE, depth-anything/DA3MONO-LARGE, depth-anything/DA3NESTED-GIANT-LARGE-1.1, Ruicheng/moge-2-vitl-normal, +4 |
| deviceopt | COMBO | auto | 4 options: auto, cuda, mps, cpu |
| formatopt | COMBO | both | 3 options: both, obj, glb |
| use_solve_meshopt | BOOLEAN | true | Export the relief mesh ALREADY on the solve (from AtlasDeriveReliefMesh / AtlasInput) so ALL its edge tuning β max_edge_factor, normal_edge_deg, the band near-clip, sky_heuristic β carries into the OBJ/GLB exactly, with no widget to re-set. Turn OFF to re-derive from depth at this node's own grid/thresholds below (e.g. to export a HIGHER-resolution mesh than the viewport). Auto-falls-back to re-derive when the solve carries no relief mesh. |
| max_edge_factoropt | FLOAT | 122β200 | Re-derive only (use_solve_mesh off): world-space edge tear threshold. Raise to 40-80 on deep/interior scenes to stop combs. |
| normal_edge_degopt | FLOAT | 00β180 | Re-derive only: 0 = off; tears on surface-normal bend (real creases) while leaving smooth grazing surfaces intact. |
| fill_interior_holesopt | BOOLEAN | false | EXPORT-ONLY (the live viewport projection mesh is never touched). Fan-fill small interior tear holes in the OBJ/GLB so it retopologizes and booleans cleanly in a DCC. Fills ONLY interior enclosed boundary loops β never the outer silhouette/frame boundary β by re-using each hole's existing boundary vertices, so projection-baked UVs stay valid. Off by default: a torn silhouette is the DMP-correct look. |
| max_hole_edgesopt | INT | 643β4096 | A boundary loop is filled only if its edge count is below this. The outer frame is ~the grid perimeter (e.g. ~512 at grid 128), interior tears are ~4-30, so 64 separates them by construction. |
| fill_depth_near_mopt | FLOAT | 0.00β10000 | Band-box spatial scope: only fill loops whose EVERY boundary vertex's forward depth (recovered-camera view space, same axis as AtlasBoundedBand's cutoff) lies within [near, far] metres. Transcribe off a bounded band's near and cutoff_m. 0 = off (edge-count-only mode; the single largest loop is always left open). |
| fill_depth_far_mopt | FLOAT | 0.00β100000 | Band-box far bound (the cutoff). 0 = off (see fill_depth_near_m). |
| retopo_methodopt | COMBO | off | EXPORT-ONLY retopology pass on the OBJ/GLB (the live viewport projection mesh is never touched). off = no change (default, so every saved workflow keeps working). quad = pyinstantmeshes orientation-field quad remesh (cleanest DCC handoff; needs the pyinstantmeshes package). decimate = quadric decimation via fast-simplification (fewer faces, same topology class). smooth = trimesh Taubin relax (topology-preserving, UVs kept). quad/decimate change the vertex count so projection-baked UVs are REGENERATED from the recovered camera (pure numpy) and the retopologized mesh stays textured. Runs AFTER any interior hole-fill. |
| retopo_target_vertex_countopt | INT | 20004β2000000 | Target vertex count for quad / target face count for decimate (decimate targets ~2x this in faces). Ignored by smooth. |
| retopo_smooth_iterationsopt | INT | 00β100 | quad: Instant Meshes post-smooth iterations. smooth: Taubin relax iterations (the actual smoothing strength). decimate: ignored. |
| retopo_crease_angleopt | FLOAT | 300β180 | quad only: crease angle (deg) below which adjacent faces are treated as one smooth surface in the orientation field. |
| retopo_pure_quadopt | BOOLEAN | false | quad only: force a pure-quad output (no triangles). False allows quad-dominant (triangles where the field can't place a quad). |
| projectopt | ATLAS_PROJECT | Optional delivery project from AtlasProject β routes this export into the project tree's geo/ lane and supersedes output_dir. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| obj_path | STRING | β |
| glb_path | STRING | β |
| preview_solve | ATLAS_SOLVE | β |
| report | STRING | β |