Nodes/Melite Poser Nodes/🎬 Render GLB Views (Blender EEVEE_NEXT ×8 angles)
ComfyUI Node

🎬 Render GLB Views (Blender EEVEE_NEXT ×8 angles)

Eight EEVEE angles, wired straight into your edit nodes

By JayDataEngineer·Created 2 months ago·Updated 4 days ago· 1
🎬 Render GLB Views (Blender EEVEE_NEXT ×8 angles)
    • front_mesh
    • front_right_mesh
    • right_mesh
    • back_right_mesh
    • back_mesh
    • back_left_mesh
    • left_mesh
    • front_left_mesh
    ◄glb_path—►
    â—„resolution768â–º
    â—„samples64â–º
    â—„framing1.20â–º
    â—„focal_length50â–º
    â—„transparentfalseâ–º

    A lot of late-2026 character pipelines look like this: generate a mesh, render it from several angles, hand each angle to an image-edit model as a reference, and composite the results back onto the model. The fiddly part is always the same - getting clean, consistent, well-lit renders out of the mesh without a disk round-trip and a pile of LoadImage placeholders.

    Render GLB Views does the boring version of that properly: eight fixed orbit angles, EEVEE_NEXT, straight out as eight IMAGE tensors. No files to herding, no HTTP, no manual camera setup.

    How it works

    It writes the GLB to a temp directory and runs Blender headless as a subprocess - blender --background --python with a generated script - rather than importing bpy into ComfyUI's Python environment. That's a deliberate call: importing Blender's Python bindings into a running ComfyUI process is a great way to break your environment.

    The angles are fixed and named to match the pack's own render_glb_views family one-for-one: front, front_right, right, back_right, back, back_left, left, front_left at azimuths of 0/45/90/135/180/225/270/315, all at 5° elevation. Those names map onto the eight output sockets in that order.

    Lighting is a three-point rig on a grey studio background, and the camera uses a Track-To constraint rather than hand-computed Euler angles - the source calls that "no Euler-sign guesswork", which anyone who's written camera maths by hand will recognise as a hard-won decision.

    There's also a materials fix in the Blender script that's worth knowing about even if you never open it. glTF exports from SOMAX/TRELLIS often pack the metallic-roughness map as a WebP that Blender 4.2 can't load from packed data - "unknown file format". The importer still links it up, which drives Metallic and Roughness to 1.0, and you get a dark mirror-metal object that reflects only the world background and hides the base colour entirely. The script unlinks those sockets and hard-sets sane values (metallic 0, roughness 0.55) before rendering, then force-reloads base-colour images in sRGB. If you've ever rendered a GLB in Blender and gotten a black blob, that's what happened.

    Inputs and outputs

    • glb_path - the GLB to render: input/, output/, or absolute.
    • resolution (default 768, 64–2048) - square, sized to match Qwen-Image-Edit's input.
    • samples (default 64, 1–4096) - EEVEE_NEXT TAA samples. More is cleaner and slower; 64 is a fine default, bump for final passes.
    • framing (default 1.2, 1.0–3.0) - camera margin multiplier. 1.0 is an exact fit, 1.2 gives 20% headroom so nothing clips.
    • focal_length (default 50mm, 10–400).
    • transparent (default off) - transparent film, for compositing.

    Eight IMAGE outputs, one per angle. It's an output node, and it also writes the PNGs into output/ for inspection. Blender is slow relative to everything else in this pack, so 8 views at 2048 with 512 samples is a coffee break, not a click.

    Install

    cd /path/to/ComfyUI/custom_nodes
    git clone https://github.com/JayDataEngineer/melite-poser-nodes.git
    

    Restart, or install melite-poser-nodes from ComfyUI Manager. The pack's requirements.txt covers py-soma-x[anny], trimesh, xatlas - none of which this node uses. What it does need is a Blender binary, and the resolver is strict on purpose: BLENDER_BIN if it points at a real file, then blender on PATH, then a portable copy under the ray repo's scratch directory, and if none of those exist it raises a FileNotFoundError with all three options spelled out. The source comment says the old behaviour was to default to a bare "blender" and die at subprocess spawn with a worse message; that's why it's loud now.

    ComfyUI-3D-Pack documents Blender 4.2.5 LTS with the BLENDER_EEVEE_NEXT engine, and the materials fix is written against 4.2's glTF importer behaviour - so treat 4.2.x as the supported version rather than "any modern Blender".

    Where people get burned

    No Blender, no renders - and no graceful degradation. Set BLENDER_BIN to your install path before you queue:

    export BLENDER_BIN=/path/to/blender-4.2.5-linux-x64/blender
    

    Eight tensors is eight tensors. All eight outputs are computed and written whether you consume one of them or all of them. If your graph only uses the front view, you've still paid for the other seven renders.

    Fixed angles, no custom views. The eight azimuths are hard-coded to match the pack's own family, so you can't ask for 120° instead of 135°. For arbitrary angles this is the wrong node - but for the rotation-edit workflow it's designed for, the fixed grid is the point.

    Very large meshes are slow, and it's Blender's fault, not the node's. Generated assets with 200k faces and 4K textures will make EEVEE crawl. Run cleanup first; that's what CleanMesh is for.

    CategoryTechNoir/Mesh

    Inputs (6)

    NameTypeDefaultDescription
    glb_pathSTRINGGLB to render (filename in input/ or output/, or absolute path).
    resolutionINT76864–2048Square render resolution (matches Qwen-Image-Edit input).
    samplesINT641–4096EEVEE_NEXT TAA samples (higher = cleaner).
    framingFLOAT1.201–3Camera margin multiplier (1.0=exact fit, 1.2=20% headroom).
    focal_lengthINT5010–400—
    transparentBOOLEANfalse—

    Outputs (8)

    NameTypeDescription
    front_meshIMAGE—
    front_right_meshIMAGE—
    right_meshIMAGE—
    back_right_meshIMAGE—
    back_meshIMAGE—
    back_left_meshIMAGE—
    left_meshIMAGE—
    front_left_meshIMAGE—