ComfyUI Node Runs on cloud

Three Group

How you get more than one object into a scene

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
Three Group
  • object_1
  • object_2
  • object_3
  • object_4
  • object_5
  • object_6
  • object_7
  • object_8
  • group
nameGroup
visibletrue

Every scene needs a place to hold its stuff, and Three Scene only takes one object on its root socket. So where does the second mesh go? Through Three Group. It gathers up to eight objects under one parent, and that parent is what you wire into the scene - or into another group. It's the node that turns "a box" into "a scene," and it's in almost every Three workflow the moment you add a second object.

Think of it as a folder in the scene graph, and the folder is itself an object. Add a floor, a product, a light and a camera rig as object_1 through object_8 (slots fill in any order), and the group output behaves like a single THREE_OBJECT you can move, hide, or animate as one unit. Moving the group moves everything in it - that's how you pose a whole set of meshes together instead of nudging them one by one. Nested groups extend the count: a group with eight slots can hold another group with eight of its own, so "up to eight" is a soft limit in practice.

The two widgets are about bookkeeping. name is a label carried into the scene graph - it's how custom code finds objects by name, so name a group set or props if anything downstream needs to locate it. visible hides or shows the whole group and everything inside it at once, which is the cheap way to drop a whole prop set out of a frame.

The way groups make animation practical is worth knowing. Three Animate Transform, Three Custom Update and the rest take a THREE_OBJECT and wrap it - so you animate the group to spin the whole product-and-pedestal assembly as one, and animate individual meshes separately for the parts that move on their own. Grouping is also where the Three Grid Helper usually lives, so you can hide the guide grid in one click when you switch from framing to final.

Because it's just a THREE_OBJECT output, a group is also how the other terminal nodes stay fed: it plugs into Three Scene's root, into another group's slot, or into an animator that wants the whole assembly. If a workflow of yours keeps refusing a second wire into the scene, this is the node you were reaching for.

Installing it

Part of WAS Node Suite v3 - ComfyUI Manager search WAS Node Suite v3, or:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git

Restart; needs ComfyUI 0.14.0+ / Python 3.10+. Nothing installs or downloads. If the Three menu's missing, set features.threejs: true in <ComfyUI user dir>/was-node-suite/config.yaml.

If it looks wrong

An empty scene after adding a group means you wired the group to the scene but never dropped any objects into the group's slots - check the group node, not the scene. And if hiding one object hides the whole world, you've put everything in one group and flipped visible; split into nested groups for finer control.

CategoryWAS Suite/Three

Inputs (10)

NameTypeDefaultDescription
nameSTRINGGroupLabel carried into the scene graph, such as 'set' or 'props'. Custom code finds a group by it.
visibleBOOLEANtrue`true` draws the group and everything in it; `false` hides all of it at once.
object_1optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.
object_2optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.
object_3optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.
object_4optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.
object_5optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.
object_6optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.
object_7optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.
object_8optTHREE_OBJECTA mesh, light, helper or another group to gather. Slots may be filled in any order.

Outputs (1)

NameTypeDescription
groupTHREE_OBJECTThe parent holding everything wired in, for Three Scene or another group.