Load Mesh Batch
Load a whole folder of meshes in one go
- meshes
The first time you build a mesh-processing pipeline, you load one file, tune it, and realize you actually need to run it on the other forty files you just exported. That's what Load Mesh Batch is for. It dumps every mesh in a folder into your graph as a list, and from then on everything downstream runs once per mesh - remesh it, fix its normals, unwrap it, save each one back out.
It's part of ComfyUI-GeometryPack ("ComfyUI libigl"), Andrea Pozzetti's collection of 3D geometry nodes. The author ships it as work-in-progress with fast releases, so treat big updates like any custom node update: test before trusting a saved workflow. The pack's currency is the TRIMESH type - a trimesh.Trimesh object under the hood - and this node outputs a list of them.
What it actually does
You give it a folder path, it scans for supported mesh files (.obj, .ply, .stl, .off, .gltf, .glb, .fbx, .dae, .3ds, .vtp), sorts them alphabetically, and loads each one. It skips files that fail to load rather than killing your whole run - you'll see a warning in the console for the ones that got dropped. The scan is top-level only, so no recursing into subfolders; the Glob loader is the one for that.
The path resolution is friendlier than it looks. folder_path (default "3d") is checked against the ComfyUI root first, then the input folder, then output, then treated as an absolute path. So 3d finds ComfyUI/input/3d, and output/remeshed finds meshes you generated in an earlier run.
The inputs that matter
Only three, and two of them are the batch controls:
folder_path- where to look. Drop meshes inComfyUI/input/3dand the default just works.start_index- skip the first N files (default0). Handy for resuming a partial batch without re-running everything.max_meshes- cap how many load;-1(default) means all of them. Set this while prototyping so a 400-mesh folder doesn't stall the graph.
The output is a single meshes list of TRIMESH. Wire it into any GeometryPack processing node, or into Preview Mesh Batch (VTK) to flip through the results, and Save Mesh Batch to write them all back to disk with their original names.
Installing
Via ComfyUI Manager, search "GeometryPack" and install. The README's fallback is the git route:
cd ComfyUI/custom_nodes
git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git
cd ComfyUI-GeometryPack
pip install -r requirements.txt --upgrade
python install.py
Then restart ComfyUI. Two things to know before you click install: this pack uses the experimental comfy-env package, which pulls in the pixi package manager and builds an isolated environment on first launch - the first startup after installing can take a while as it fetches heavy dependencies like Blender, CGAL, libigl, and VTK. That's also why the manual route is listed as the most reliable if Manager hiccups. The pack is GPL-3.0-or-later, which only matters if you redistribute modified copies.
Where people get burned
- "No mesh files found" - the folder resolves, but it's empty or holds a format outside the supported list. Check the extension.
start_indexout of range - if it's greater than or equal to the file count, the node raises instead of quietly returning nothing. That's by design; dial it back.- Long first run - the isolated env download, not your workflow, is the bottleneck. Give it one patient boot.
- This is a WIP pack with fast iteration; if a workflow stops working after an update, pin the version or reinstall clean rather than assuming you broke it.
It's not glamorous, but this is the node that turns "I have a folder of bad meshes" into "I have a folder of fixed meshes."
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| folder_path | STRING | 3d | — |
| start_index | INT | 00–100000 | — |
| max_meshes | INT | -1-1–100000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| meshes | TRIMESH | — |