ComfyUI Extension: ComfyUI-WepeNerd
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Custom node pack featuring an interactive visual resolution picker and resolution suggestion tool with real-time dimension readout and divisor snapping. (Description by CC)
Looking for a different extension?
Custom Nodes (0)
README
ComfyUI-WepeNerd
Custom node pack for ComfyUI by WepeNerd.
Installation
Via ComfyUI Manager
Search for WepeNerd in ComfyUI Manager and click Install.
Manual
cd ComfyUI/custom_nodes
git clone https://github.com/WepeNerd/ComfyUI-WepeNerd.git
Install dependencies:
cd ComfyUI-WepeNerd
pip install -r requirements.txt
Restart ComfyUI. Nodes appear under the WepeNerd/Resolution and WepeNerd/3D categories.
Nodes
Load OBJ
Category: WepeNerd/3D
Loads a Wavefront .obj model from a local path and produces a reusable obj_model connection for 3D placement. It also outputs a clay preview image and preview mask, so you can inspect the model before placing it over a background.
Use the choose .obj to upload button or drag and drop an .obj file onto the node. Uploaded OBJ files are saved under ComfyUI/input/3d/, and the node fills the path widget automatically.
| Output | Type | Description |
|---|---|---|
| obj_model | WN_OBJ3D | Connect this to 3D Product Placement |
| preview | IMAGE | Clay preview render on a neutral background |
| preview_mask | MASK | Alpha mask for the preview render |
3D Product Placement
Category: WepeNerd/3D
An interactive 3D object placement node for creating guide composites. Connect a normal ComfyUI Load Image node as the background, connect Load OBJ (WepeNerd) as the object, position the object visually in a JavaScript viewport, and output a composited image with the untextured clay model over the background.
The node is designed for product/object placement guides, not final photoreal rendering.
The queued composite uses a hidden browser viewport capture when available, so the output should match what you see in the node. If the capture is unavailable, the node falls back to the server-side renderer.
Features:
- Use a connected
IMAGEinput as the background and final output size - Use a connected
Load OBJ (WepeNerd)node as the 3D model - Preview the model as a grey untextured clay object
- Rotate, move, and scale the object interactively
- Adjust basic directional lighting
- Toggle a wireframe overlay for placement guides
- Output a composited
IMAGEand an objectMASK - Store placement values as normal widgets so workflows save and reload
| Action | Result | |---|---| | Left drag | Rotate object | | Shift + drag | Move object X/Y | | Mouse wheel | Scale object | | Right drag / Alt + drag | Adjust light direction | | Double-click | Reset placement |
| Input | Description |
|---|---|
| background_image | Connected IMAGE used as the scene/background. Determines final output dimensions |
| obj_model | Connected WN_OBJ3D from Load OBJ (WepeNerd) |
| x_offset / y_offset / z_offset | Object position controls |
| scale | Object scale |
| rotate_x / rotate_y / rotate_z | Object rotation in degrees |
| camera_zoom | Orthographic camera zoom |
| light_yaw / light_pitch | Directional light position |
| light_intensity | Light strength |
| wireframe_overlay | Draw a dark wireframe over the clay object in the viewport and composite |
| opacity | Opacity of the clay object in the final composite |
| Output | Type | Description |
|---|---|---|
| composite | IMAGE | Background image with clay object composited over it |
| object_mask | MASK | Alpha mask of the rendered 3D object |
Security note: This first version is intended for local ComfyUI use. If you run ComfyUI with --listen or expose it to a network, restrict the OBJ preview route to safe folders before using absolute model paths. Good future-safe locations are ComfyUI/input/3d/ and ComfyUI/models/3d/.
Drag Resolution
An interactive visual resolution picker. Drag a box to set your output dimensions. Values snap to the chosen divisor grid in real time.
Features:
- Drag side handles to change one axis at a time, updating the aspect ratio as the pixel size changes
- Drag corner handles to scale the resolution while preserving the current aspect ratio
- Choose an aspect ratio preset (16:9, 4:3, 1:1, 9:16, and more) to reshape the box before dragging
- Use the width/height input arrows to step by the current divisor value
- Real-time dimension readout with ratio label on the box
- Divisor snapping (32, 16, 8, 64) keeps every output cleanly divisible
- Grid overlay shows divisor increments
| Input | Description |
|---|---|
| width / height | Resolution (also set by dragging the box); arrow buttons step by the selected divisor |
| aspect_ratio | Preset ratio to apply, or Free for the current/custom ratio |
| divisor | Snap grid: 32 (default), 16, 8, or 64 |
| Output | Type | Description |
|---|---|---|
| width | INT | Final width (divisible by divisor) |
| height | INT | Final height (divisible by divisor) |
| aspect_ratio | STRING | Simplified ratio string (e.g. "16:9") |
| info | STRING | Human-readable summary |
Workflow Compatibility
Node IDs, widget names, output names, and the WepeNerd/Resolution category are unchanged. Existing workflows should continue to load. The frontend extension now lives in ./js/, matching the exported WEB_DIRECTORY.
After updating, restart ComfyUI, hard refresh the browser, create a Drag Resolution node, drag side and corner handles, and check the browser dev console for JavaScript errors.
Resolution Suggest
Takes a source width/height and proportionally resizes to a target, snapped to a divisor grid. Useful for preparing dimensions for models that need specific multiples.
| Input | Description |
|---|---|
| width / height | Source resolution |
| target | Target size in pixels, or percentage for Scale Factor mode |
| resize_mode | Longest Side, Shortest Side, Width, Height, or Scale Factor |
| divisor | Snap grid: 32, 16, 8, or 64 |
| snap_mode | round, floor, or ceil |
| Output | Type | Description |
|---|---|---|
| width | INT | Resized width |
| height | INT | Resized height |
| original_width | INT | Pass-through of input width |
| original_height | INT | Pass-through of input height |
| scale_factor | FLOAT | Actual scale applied |
| aspect_ratio | STRING | Simplified ratio string |
| info | STRING | Human-readable summary |
License
MIT — see LICENSE.
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.