Nodes/ComfyUI_RH_Pixal3D/RunningHub Pixal3D Save GLB
ComfyUI Node

RunningHub Pixal3D Save GLB

Triangle budget, texture size, and where your GLB lands

By RH-RunningHub·Created 3 months ago·Updated 3 months ago· 29
RunningHub Pixal3D Save GLB
  • asset
  • glb_path
decimation_target200000
texture_size2048
remeshtrue
filename_prefix3d/Pixal3D

The last node in a Pixal3D workflow, and the one people skip past - which is a mistake, because this is where the output actually gets shaped. It takes the PIXAL3D_ASSET from the Image to 3D node and writes a textured .glb into ComfyUI's output folder, with three settings that decide whether your mesh is a 10 MB prop or a 300 MB monster.

What happens when you run it

Internally it's a thin wrapper around TRELLIS.2's o_voxel post-processing. The raw mesh from Pixal3D gets decimated to a triangle budget, UV-unwrapped onto a texture atlas of a set size, optionally remeshed, then exported with the texture embedded as WebP. A fixed coordinate transform is applied on the way out so the model sits in a typical engine orientation. It uses ComfyUI's standard save machinery, which means the file lands under ComfyUI/output/ with an auto-incrementing counter.

The settings that matter

  • decimation_target - the mesh face budget, default 200,000. Lower it (say 50k) for a small prop; raise it toward a million for maximum detail. This is your main quality-versus-size trade-off, and it's the closest thing to an answer to the "garbage topology" complaint leveled at every image-to-3D model - the mesh is a decimated mesh either way.
  • texture_size - the texture atlas resolution, default 2048. Go 4096+ for assets that get viewed up close; 256–512 for thumbnails or background filler. Bigger is slower to bake and heavier on disk.
  • remesh - on by default. Remeshing makes the surface watertight and cleans up the worst of the machine topology, which matters if you're 3D printing. It costs time; turn it off if you want the fastest export and don't care about a clean surface.
  • filename_prefix - the path under ComfyUI/output/, default 3d/Pixal3D, so you'll get something like output/3d/Pixal3D_00001_.glb.

Output

glb_path (STRING) - the relative path of the saved file, handy if you want to pass it along or log it. The node also lists the result in ComfyUI's UI as a "3d" output.

Install

Same deal as the rest of the pack - no extra dependencies beyond it:

cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI_RH_Pixal3D.git
cd ComfyUI_RH_Pixal3D
pip install -r requirements.txt

The real install weight is upstream. The exporter needs the full model stack (Pixal3D, MoGe, DINOv3, BiRefNet, NAF) plus the CUDA extension wheels - NATTEN with libnatten, flash_attn, flex_gemm, o_voxel, nvdiffrast, and nvdiffrec_render. Get the loader to return a pipe and this node will just work.

Common issues

  • "Where did my file go?" - ComfyUI/output/3d/, or under output/<your prefix>/ if you changed it.
  • Huge files or long exports - a big decimation_target plus a 4096/8192 texture_size is the usual culprit. Drop one.
  • The asset still looks rough - that's the model's topology, not the export. Remeshing helps a little; expecting rig-ready geometry from any image-to-3D pipeline is asking for disappointment. For static props, prints, and renders it's genuinely useful - that's the realistic job this node does well.

The example workflow in the pack runs LoadImage → Load Model → Image to 3D → this node end to end, so you can have a GLB on disk minutes after a successful first generation.

CategoryRunningHub/Pixal3D

Inputs (5)

NameTypeDefaultDescription
assetPIXAL3D_ASSET
decimation_targetINT2000001000–2000000
texture_sizeINT2048256–8192
remeshBOOLEANtrue
filename_prefixSTRING3d/Pixal3D

Outputs (1)

NameTypeDescription
glb_pathSTRING