3D_LoadMeshModel
The boring node every other Paint3D node depends on
- train_config
- MESHMODEL
If you've ever loaded a big custom workflow and wondered why the tiny "load" node at the start matters - this is that node. 3D_LoadMeshModel is the entry point of the whole Paint3D pack: it takes the obj path sitting in your TRAINCONFIG, loads the mesh into memory, and hands every subsequent stage the one object they all share. Nothing downstream runs without it. It's not glamorous, but it's the thing that makes the pack feel like one coherent tool instead of a pile of disconnected nodes.
What it does
Under the hood it builds a TexturedMeshModel - a mesh object with a renderer attached, straight from the Paint3D research code this pack vendored in. It reads the .obj referenced by train_config (set back in 3D_TrainConfig), initializes the texture buffer, and refreshes it. That single MESHMODEL then flows into 3D_GenerateDepthImage, 3D_Projection, the inpaint stages, the preview video, and the save node. Because it's one object mutated in place, the texture state carries through the whole graph - that's how the earlier passes' output becomes the starting texture for later passes.
Inputs and output
Just one input: train_config (TRAINCONFIG) - the config object from 3D_TrainConfig. The mesh file path isn't typed in here; it's read out of the config. One output: MESHMODEL. There's no UI to it beyond the wire.
The mesh itself needs to be one this pipeline can actually chew: a UV-unwrapped obj (the pack's own sample, Suzanne_monkey.obj, is trimesh-generated with a material). If your mesh has no UV layout, texture projection and the UV-map passes won't have anything to paste onto.
Installing
Same story as every node in this pack - Manager search "ComfyUI-Paint3D-Nodes" or:
cd ComfyUI/custom_nodes
git clone https://github.com/N3rd00d/ComfyUI-Paint3D-Nodes
pip install -r requirements.txt
pip install kaolin==0.15.0 -f https://nvidia-kaolin.s3.us-east-2.amazonaws.com/torch-2.1.0_cu121.html
The heavy lift is kaolin (NVIDIA's 3D library), which needs a matching torch. If the wheel won't install against your current torch, the README's fix is to pin torch==2.1.0 + cu121 and reinstall. Then restart ComfyUI.
Gotchas
Most "it doesn't load" failures here are actually path problems in 3D_TrainConfig, not this node - if it can't find the obj, the error surfaces here but the cause is upstream. Also, because the mesh carries texture state, you can't just swap meshes by editing this node; you have to change mesh_file_path in the config and re-run from the top. If you're coming from the broader ComfyUI ecosystem expecting a loader that gives you a file picker - that's not this node. It reads whatever the config told it to read, and it expects that path to be stable.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| train_config | TRAINCONFIG | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MESHMODEL | MESHMODEL | — |