Three Box Geometry
The unit cube your first 3D scene starts from
- geometry
Every 3D scene you've ever seen started somewhere silly, and in the WAS Three.js suite that somewhere is usually a box. Three Box Geometry makes a rectangular box sized in scene units, centred on its own origin - a 1×1×1 cube by default. It's the node you wire up first to check that your whole render pipeline works, before you get fancy. Get a unit cube showing up in Three Viewer with a light on it and you now know geometry, material, mesh, scene and renderer are all talking to each other.
It's the purest example of how the whole Three suite works, so it's worth saying plainly: this node doesn't build anything. It describes a box - width, height and depth in scene units - and hands that description down the wire. The actual geometry is constructed in your browser by the three.js bundled in the pack, and nothing is rendered on the server. That's why a pack with 43 3D nodes can ship with zero Python dependencies.
What you actually set:
width/height/depth- the size along X, Y and Z. All three at 1.0 is a unit cube. Make height 0.1 and it's a flat slab; make depth 0.1 and it's a thin panel. You'll spend most of your time here.width_segments/height_segments/depth_segments- how many divisions across each face. The default 1 leaves perfectly flat faces, which is right for a plain box. You only raise these when a shader or a displacement map needs actual vertices to move - a flat face with no subdivisions has nowhere for a shader to bend. For a normal box, don't touch them.
The geometry output feeds the geometry socket on Three Mesh, paired with a material from Three Basic Material, Three Standard Material or friends. One geometry can feed several meshes and the browser builds each shape once, so a hundred identical boxes sharing a material cost one geometry and one material - that sharing is built into the descriptor system.
Where it sits in a workflow
The chain you'll build a hundred times: Three Box Geometry → Three Mesh (with a material) → Three Group → Three Scene → Three App → Three Viewer. Once that cube renders, change the material, add a second box, drop in a Three Area Light, and you're halfway to a real scene. This is genuinely the node to start any new Three workflow with, because it's the fewest moving parts that still exercises the whole graph.
Installing it
It's part of WAS Node Suite v3 - install the pack and the whole Three category appears. ComfyUI Manager: search WAS Node Suite v3, or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Restart after; needs ComfyUI 0.14.0+ and Python 3.10+. No pip packages, no model downloads - three.js is bundled with the pack. If the menu's missing, set features.threejs: true in <ComfyUI user dir>/was-node-suite/config.yaml and restart.
If it looks wrong
A box that's invisible is almost never a geometry problem - it's the material (Basic Material needs no light, Standard Material needs one) or the camera looking away from it. And if a shader or displacement is doing nothing to your box, that's the segment counts: leave them at 1 and there are no vertices to move.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| width | FLOAT | 1.000.0001–100000 | Size along X in scene units. 1.0 is a unit cube, 2.0 twice as wide. |
| height | FLOAT | 1.000.0001–100000 | Size along Y in scene units. 1.0 is a unit cube, 0.1 a flat slab. |
| depth | FLOAT | 1.000.0001–100000 | Size along Z in scene units. 1.0 is a unit cube, 0.1 a thin panel. |
| width_segments | INT | 11–1024 | How many divisions across X. 1 leaves flat faces, 32 gives a shader room to bend them. |
| height_segments | INT | 11–1024 | How many divisions across Y. 1 leaves flat faces, 32 gives a shader room to bend them. |
| depth_segments | INT | 11–1024 | How many divisions across Z. 1 leaves flat faces, 32 gives a shader room to bend them. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| geometry | THREE_GEOMETRY | The box shape, for the geometry socket on Three Mesh. |