Nodes/atlas-camera/Atlas Export Relief Mesh (OBJ) πŸ—»
ComfyUI Node

Atlas Export Relief Mesh (OBJ) πŸ—»

A ComfyUI node in Atlas/10 Β· Export with 21 inputs and 4 outputs.

By mikejamesvfxΒ·Created 2 months agoΒ·Updated about 23 hours agoΒ· 1
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)

NameTypeDefaultDescription
solveATLAS_SOLVEβ€”
imageIMAGEβ€”
output_dirSTRINGatlas_exportsβ€”
grid_long_edgeoptINT12816–4096Mesh density: grid columns along the longest image edge.
depth_edge_reloptFLOAT0.500.05–5Relative depth jump that tears the mesh (silhouette holes).
depth_modeloptCOMBOdepth-anything/Depth-Anything-V2-Metric-Outdoor-Large-hf10 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
deviceoptCOMBOauto4 options: auto, cuda, mps, cpu
formatoptCOMBOboth3 options: both, obj, glb
use_solve_meshoptBOOLEANtrueExport 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_factoroptFLOAT122–200Re-derive only (use_solve_mesh off): world-space edge tear threshold. Raise to 40-80 on deep/interior scenes to stop combs.
normal_edge_degoptFLOAT00–180Re-derive only: 0 = off; tears on surface-normal bend (real creases) while leaving smooth grazing surfaces intact.
fill_interior_holesoptBOOLEANfalseEXPORT-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_edgesoptINT643–4096A 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_moptFLOAT0.00–10000Band-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_moptFLOAT0.00–100000Band-box far bound (the cutoff). 0 = off (see fill_depth_near_m).
retopo_methodoptCOMBOoffEXPORT-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_countoptINT20004–2000000Target vertex count for quad / target face count for decimate (decimate targets ~2x this in faces). Ignored by smooth.
retopo_smooth_iterationsoptINT00–100quad: Instant Meshes post-smooth iterations. smooth: Taubin relax iterations (the actual smoothing strength). decimate: ignored.
retopo_crease_angleoptFLOAT300–180quad only: crease angle (deg) below which adjacent faces are treated as one smooth surface in the orientation field.
retopo_pure_quadoptBOOLEANfalsequad only: force a pure-quad output (no triangles). False allows quad-dominant (triangles where the field can't place a quad).
projectoptATLAS_PROJECTOptional delivery project from AtlasProject β€” routes this export into the project tree's geo/ lane and supersedes output_dir.

Outputs (4)

NameTypeDescription
obj_pathSTRINGβ€”
glb_pathSTRINGβ€”
preview_solveATLAS_SOLVEβ€”
reportSTRINGβ€”