Nodes/ComfyUI-MeshTools/MeshTools Load Mesh
ComfyUI Node

MeshTools Load Mesh

Every 3D pipeline starts with a door — this is it

By agenticvibes·Created 5 months ago·Updated 5 months ago· 0
MeshTools Load Mesh
    • trimesh
    mesh_path

    MeshTools Load is the front door of the ComfyUI-MeshTools pack. You hand it a path to a GLB or OBJ on disk and it hands you back a TRIMESH object you can push into every other node in this pack - Decimate, Remesh, Postprocess, UV Unwrap, Export. Nothing generates, nothing renders. It's plumbing, and that's exactly the point.

    The pack's own README frames it as "generic mesh manipulation nodes... not tied to any specific generation pipeline," and that's the honest pitch. If you're coming from the heavy 3D packs - ComfyUI-3D-Pack or the Hunyuan3D wrapper - this is the opposite end of the spectrum: no CUDA extensions, no model downloads, nothing to build. It's a CPU-only mesh toolchain that plugs into whatever produced your mesh, be it Hunyuan3D, TRELLIS, TripoSR, or Blender.

    How it works

    The mechanism is embarrassingly simple, which is a compliment. The node calls trimesh.load() with force="mesh", which tells the trimesh library to return a single mesh object instead of a scene. Two things worth knowing:

    • The mesh_path input is resolved against ComfyUI's input/ directory if it isn't an absolute path. So you can drop myasset.glb into ComfyUI/input/ and type just myasset.glb, or paste a full path to anywhere on disk.
    • force="mesh" means a GLB that contains several sub-meshes gets concatenated into one mesh. For processing that's usually what you want; if you need to keep parts separate, you'll want to split upstream.

    The inputs and outputs that matter

    There's one input and one output, so this is a short list:

    • mesh_path (STRING) - path to the GLB/OBJ (or PLY/STL, trimesh handles more than the README promises) file.
    • trimesh (TRIMESH) - the mesh object that flows into the other MeshTools nodes.

    Note the socket type: TRIMESH. It will not wire into ComfyUI's built-in Load3D (that's an image socket with a viewport widget) or into anything that expects an IMAGE. If you want to see the mesh while you work, run a Load3D side-by-side from the same file - the two nodes do different jobs and coexist fine.

    Installing

    The whole pack installs as one unit:

    cd ComfyUI/custom_nodes
    git clone https://github.com/agenticvibes/ComfyUI-MeshTools
    cd ComfyUI-MeshTools
    pip install -r requirements.txt
    

    Or skip all that and search "ComfyUI-MeshTools" in ComfyUI Manager, then restart. Either way there are no model files to download - the requirements are just trimesh, meshlib, xatlas, pymeshlab, and pynanoinstantmeshes. Nothing GPU-flavored, nothing that needs Visual Studio to build. On Windows, make sure you're installing into the same Python ComfyUI uses (the python_embeds environment, or your venv), not your system Python.

    Common issues

    • "No such file or directory" - the path isn't resolving. Remember the input-directory fallback: a bare filename goes to ComfyUI/input/. Absolute paths work too, just make sure you didn't leave a trailing slash or typo.
    • trimesh socket won't connect - you're trying to feed a regular node. This pack speaks its own TRIMESH type to its own nodes. There's no universal 3D socket in ComfyUI yet, so mesh nodes from different packs don't talk to each other. That's a platform problem, not you.

    For a loader there's not much more to say. The honest failure mode is "wrong path," and the honest fix is using the input directory. Wire the output into Postprocess or Decimate and the real work starts.

    CategoryMeshTools

    Inputs (1)

    NameTypeDefaultDescription
    mesh_pathSTRINGPath to GLB/OBJ mesh file to load.

    Outputs (1)

    NameTypeDescription
    trimeshTRIMESH