Nodes/ComfyUI Web Viewer/3D MODEL Web Viewer @ vrch.ai
ComfyUI Node

3D MODEL Web Viewer @ vrch.ai

Pop out a 3D model in a browser window from your workflow

By VrchStudio·Created 2 years ago·Updated 18 days ago· 356
3D MODEL Web Viewer @ vrch.ai
    • MODEL_FILE
    • URL
    model_file
    channel1
    server127.0.0.1:8188
    sslfalse
    refresh_interval5000
    server_messages
    save_settingsfalse
    window_width1280
    window_height960
    show_urlfalse
    dev_modefalse
    extra_params
    url

    Most ComfyUI viewers show you a flat image. This one shows you a 3D model. VrchModelWebViewerNode opens a separate browser window that loads and displays a 3D model file (think glTF/GLB) served from your ComfyUI machine - which sounds gimmicky until you remember this pack's whole identity is real-time interactive art, and being able to look at a generated or processed model from any browser on the network is exactly the live-show workflow it's built for.

    What it does

    The one field you have to set is model_file - the 3D model file it should display. From there, the controls break into three groups:

    • Where it connects: server (default 127.0.0.1:8188, your ComfyUI address) and ssl for when you're serving over HTTPS. This is what the browser window fetches the model from, so on another device it needs to point at the machine actually running ComfyUI.
    • How it refreshes: refresh_interval (1–10000 ms, default 5000) controls how often the viewer polls for a new file. Drop it low for live updates, keep it high if you don't want your browser hammering the server.
    • The window: window_width and window_height (defaults 1280×960), plus save_settings to persist your window choices. show_url reveals the address, dev_mode gives you browser devtools, and extra_params / url let you pass extra query parameters or override the URL entirely.

    It outputs MODEL_FILE (the file it loaded) and URL (the address it opened), and it's an output node - it's the end of a branch, the display step. If you're feeding it from a pipeline that generates or transforms 3D assets, those two outputs let you hand the result onward or log where it's being served.

    Why a separate window?

    Because "any device with a browser" is the point. The pack's pitch is universal web accessibility - open the workflow on a big screen, a tablet, a client's phone - and this node is the 3D leg of that. Want to note the demo model on a phone without a GPU on it? That's what this is for. It's also why the README's troubleshooting section exists: serving from one machine into browsers on another is where the friction lives.

    Installing it

    Same pack install as every node in this set:

    cd ComfyUI/custom_nodes
    git clone https://github.com/VrchStudio/comfyui-web-viewer
    pip install -r comfyui-web-viewer/requirements.txt
    

    Or search ComfyUI Web Viewer in ComfyUI Manager and restart. No model downloads for the node itself - the 3D model files are yours.

    Troubleshooting

    Two problems come straight from the README and they're the ones you'll actually hit. First, if the viewer window opens blank in Chrome, add your ComfyUI server's IP to chrome://flags/#unsafely-treat-insecure-origin-as-secure - Chrome treats the http origin as insecure. Second, if you get a CORS error mentioning a host mismatch (like 127.0.0.1 != vrch.ai), start ComfyUI with --enable-cors-header. And if you want to reach the viewer from another device over HTTPS, the pack bundles a self-signed cert you can launch with python main.py --tls-keyfile ./custom_nodes/comfyui-web-viewer/https/key.pem --tls-certfile ./custom_nodes/comfyui-web-viewer/https/cert.pem --port 8189 --listen - fine for development, not for production.

    Categoryvrch.ai/viewer

    Inputs (13)

    NameTypeDefaultDescription
    model_fileSTRING
    channelCOMBO18 options: 1, 2, 3, 4, 5, 6, +2
    serverSTRING127.0.0.1:8188
    sslBOOLEANfalse
    refresh_intervalINT50001–10000
    server_messagesSTRING
    save_settingsBOOLEANfalse
    window_widthINT1280100–10240
    window_heightINT960100–10240
    show_urlBOOLEANfalse
    dev_modeBOOLEANfalse
    extra_paramsSTRING
    urlSTRING

    Outputs (2)

    NameTypeDescription
    MODEL_FILESTRING
    URLSTRING