Load Mesh (Path)
The loader that takes a path as a plain string
- mesh
- texture
Most GeometryPack loaders hand you a dropdown of files found in input/3d. Load Mesh (Path) is the one that takes a raw string instead. That sounds like a downgrade until you realize the point: the path is a string input, which means another node can build it. You can point it at wherever a previous step wrote its output, or feed it a path computed at runtime - the kind of thing a fixed dropdown can never do.
It's part of ComfyUI-GeometryPack ("ComfyUI libigl"), Andrea Pozzetti's mesh-processing pack for ComfyUI. Everything in the pack passes TRIMESH objects around, and this node is the doorway for meshes that aren't sitting in the standard folders.
How it works
The single input, file_path, is a multiline string. Give it one path and you get one mesh. Give it several paths separated by newlines (or commas if there are no newlines) and you get a list. Path resolution checks, in order: the absolute path as given, then relative to the ComfyUI output folder, then input/3d, then input. That output-folder-first ordering is the clever bit - it's built for loading meshes that an earlier node just generated, which is exactly the loop you'll find yourself in once you start chaining geometry operations.
Under the hood it uses the pack's shared mesh_io loader, which supports .obj, .ply, .stl, .off, .gltf, .glb, .fbx, .dae, .3ds, and .vtp. The node watches file modification times, so if the file on disk changes it re-executes rather than serving you a stale mesh - a nice touch for iterative workflows.
Inputs and outputs
file_path- multiline string; one path, or several newline/comma-separated. Empty input returns nothing rather than erroring.
Outputs:
mesh- aTRIMESHlist (a single mesh is a list of one, so downstream batch nodes work uniformly).texture- anIMAGElist, one per mesh. Textured GLB/GLTF/OBJ+MTL assets get their base color pulled out; meshes without a texture get a small black placeholder so the list stays aligned.
If all you need is a single file from input/3d, use the plain Load Mesh node with its dropdown. Reach for this one when the path is dynamic, comes from another node, or when you want to batch a handful of specific files without shuffling them into a folder.
Installing and gotchas
Same story as the rest of the pack: install via ComfyUI Manager by searching "GeometryPack", or clone it into custom_nodes and run:
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. The pack uses the experimental comfy-env package and downloads the pixi package manager on first launch, so the first boot after install is slow while it assembles an isolated environment with the heavy 3D dependencies (Blender's bpy, CGAL, libigl, VTK). Don't panic at the wall of download text.
Common trips:
- Path typo → cryptic "file not found" - the error lists every place it searched, so read it. Nine times out of ten the path was relative to a folder it doesn't check.
- Windows-style backslashes - paste forward slashes; they work fine and avoid escaping nonsense.
- A mesh that loads as a point cloud - some files have no faces; that's still a valid
TRIMESHhere, just be aware face-only nodes (UV unwrap, remesh) will reject it.
The pack is fast-moving WIP per the author, so if a workflow that used to work stops after an update, reinstall clean before debugging your graph.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | Path to mesh file(s). Supports multiple paths separated by newlines or commas. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| mesh | TRIMESH | — |
| texture | IMAGE | — |