Nodes/RDAWG 3D Pack (CUDA 12.8 + PyTorch 2.9.0)/🔷 Load 3D Model (RDAWG+Open3D)
ComfyUI Node

🔷 Load 3D Model (RDAWG+Open3D)

Load a real 3D file into ComfyUI — not an AI model, an .obj

By rdawgemfl·Created 11 months ago·Updated 11 months ago· 0
🔷 Load 3D Model (RDAWG+Open3D)
    • mesh
    • info
    file_path
    load_texturetrue
    normalizetrue
    deviceauto

    Most "Load Model" nodes in ComfyUI expect a checkpoint or a LoRA. This one expects an .obj. That's the first thing to get straight: RDAWG3DLoadModel reads 3D geometry files (OBJ, STL, PLY, GLTF) and turns them into a mesh that the rest of the RDAWG 3D Pack can process. It's the front door of the whole pack, and the author is unusually explicit about it - the README devotes a whole section to "3D Models vs AI Models" because people keep dragging in .safetensors and getting nowhere.

    It's an obscure pack (basically zero community footprint yet), so let me be honest about the deal: this is a small geometry toolbox, not a TripoSR-style image-to-3D generator. What you get is a reliable, GPU-flavored way to get a real mesh into your graph, transform it, analyze it, and render it back out as an image that normal ComfyUI nodes can use.

    How it works

    The node calls Open3D's read_triangle_mesh() on your file path, then copies the vertices, faces, and normals into torch tensors that ride along with the Open3D mesh object. If you leave normalize on (it's on by default), it centers the mesh on the origin and scales it into a unit sphere - meaning whatever you load comes out roughly the same size as everything else. That's genuinely useful when you're mixing objects in one scene, and it's why the transform nodes downstream behave predictably.

    The info output is your friend here: it returns a plain string with vertex/face counts and the device the mesh landed on. Wire it to a Text node (or just a preview) and you can sanity-check what actually loaded.

    The inputs that matter

    • file_path - the one you actually set. An absolute or ComfyUI-relative path to your .obj, .stl, .ply, or .gltf. Don't point it at a model folder; it wants a file.
    • normalize - keep it on unless you have a reason not to.
    • device - auto is right; it picks CUDA when available and falls back to CPU.
    • load_texture - in the schema, but the current code reads whatever's in the file regardless, so don't overthink it.

    Outputs: mesh (the MESH object everything else in the pack consumes) and info (STRING, the load report).

    Install and dependencies

    Install the pack through ComfyUI Manager (search "RDAWG 3D Pack (CUDA 12.8 + PyTorch 2.9.0)") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/rdawgemfl/rdawg_3D_pack
    cd rdawg_3D_pack
    python install.py
    

    The catch: Open3D 0.19.0+ is a hard requirement. The pack refuses to import without it, so if ComfyUI throws at startup, that's your culprit. On Windows, python download_open3d.py grabs a matching wheel; Python 3.11 is the author's recommended version because it has the best Open3D wheel coverage. The installer also tries to pin torch 2.9.0+cu128, which is worth being careful about - if your ComfyUI already works, don't let a fresh install clobber its PyTorch.

    Where people get burned

    • Missing Open3D → pack won't load at all. pip install open3d>=0.19.0 fixes it.
    • Wrong file type → you gave it a checkpoint path and it can't find the file. Use the built-in test objects (python create_test_models.py in the pack folder generates test_cube.obj, test_sphere.obj, test_pyramid.obj) to confirm the pipeline before hunting for models.
    • The mesh looks wrong downstream → check normalize. A non-normalized scanned model can be centimeters or kilometers, and every analysis node downstream will report nonsense until you fix the scale.
    CategoryRDAWG 3D/Loaders

    Inputs (4)

    NameTypeDefaultDescription
    file_pathSTRING
    load_textureBOOLEANtrue
    normalizeBOOLEANtrue
    deviceCOMBOauto3 options: auto, cpu, cuda

    Outputs (2)

    NameTypeDescription
    meshMESH
    infoSTRING