Nodes/WAS Node Suite v3/Three Transform Object
ComfyUI Node Runs on cloud

Three Transform Object

Put the same mesh in three places at once

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
Three Transform Object
  • object
  • object
position_x0.00
position_y0.00
position_z0.00
rotation_x0.0
rotation_y0.0
rotation_z0.0
scale_x1.00
scale_y1.00
scale_z1.00
nameTransform
visibletrue

The boring node that un-bores everything around it. In WAS Node Suite's Three.js group, nothing gets drawn just by existing - you build geometry, wrap it in a material and a mesh, and then you still have to say where it goes. Three Transform Object is where you say it: position, rotation and scale in nine floats. It's the most-used node in the group for a simple reason - every scene needs a floor, and floors don't place themselves.

Why it's shaped like this

This is one of the 43 "Three" nodes in the pack's fresh 2026 v3 rewrite (WAS Node Suite, 457 nodes total - the author's been at this since 2023). The whole Three system works by passing descriptors along wires, not live meshes, and Transform Object is the position-and-orientation layer of that graph. Build one nice mesh, then fan out copies of it to build a room, scatter props, or lay a ground plane.

How it works

The object you wire in is not altered. Look at the source and it's literally wrapping your object in a Three.js Group - a parent that carries the position, rotation and scale while your mesh stays untouched underneath. That's why one mesh can sit in several spots at once, from as many transform nodes, with no duplication and no risk of ruining the original. Rotation is in degrees (converted to radians internally), applied X, then Y, then Z. And despite the word "object" in the name, the result is still just a descriptor - it doesn't appear anywhere until something collects it into the scene.

The inputs that matter

  • object - whatever you placed, usually a mesh or a smaller group. It comes out the other side wrapped, not changed.
  • position_y - the one you'll set first. 0.5 lifts a unit cube so it sits on the ground; negative sinks it. position_x and position_z slide it around (positive Z moves toward the camera).
  • rotation_x - turn a plane by -90 on X and an upright card lays flat as a floor. That tooltip is a tiny hidden tutorial.
  • scale_y - flatten a column to a low wall (0.5 halves its height) or stretch it skyward. Negative values mirror the object rather than just shrinking it.
  • name - a label that travels into the scene graph. If you're doing custom updates or scripts that look objects up by name (think "pedestal" or "handle"), this is how they find it.
  • visible - false hides the object and everything under it, which beats deleting a wire when you want to stage something before you show it.

The output, object, is your placed object, destined for a Three Group or straight into the root socket on Three Scene.

Installation

Standard WAS Node Suite install - you get all 457 nodes at once. ComfyUI Manager, search WAS Node Suite, install, restart. Or by hand:

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

Restart after. Requires ComfyUI 0.14.0+ and Python 3.10+. The Three group needs no downloads: three.js is bundled in the repo and the browser pulls it from your local server when a scene runs.

Where people get burned

  • Degrees, not radians. If you're used to scripting Three.js or Blender's math, a 1.57 here will look like nothing happened. Type 90, not 1.57.
  • Order matters. Rotation applies X then Y then Z. Stack two big rotations and the result is order-dependent in the way Euler angles always are - if it looks wrong, that's not a bug in the node.
  • Transforms nest. Each transform wraps the previous output in another group. Chain three and you have a parent-child-grandchild hierarchy, which is fine and occasionally exactly what you want - just know the scale of an outer transform multiplies everything inside it.
  • Nothing in the render? A placed object that never gets wired into a Group/Scene is a placed object that exists in no scene. Check the wire all the way to the root socket.
  • Whole group missing from the menu? The 43 Three nodes sit behind features.threejs in <user dir>/was-node-suite/config.yaml. It ships on; an old config may have it off.

The scene graph needs a Group to collect meshes and a Scene to hold it all - then Three App and Three Viewer let you actually look at what you placed.

CategoryWAS Suite/Three

Inputs (12)

NameTypeDefaultDescription
objectTHREE_OBJECTThe object to place. It is wrapped rather than changed.
position_xFLOAT0.00-100000–100000Move along X in scene units. 0.0 leaves it at the origin.
position_yFLOAT0.00-100000–100000Move along Y in scene units. 0.5 lifts a unit cube to sit on the ground.
position_zFLOAT0.00-100000–100000Move along Z in scene units. 0.0 leaves it put; positive moves toward the camera.
rotation_xFLOAT0.0-36000–36000Turn around X in degrees. -90.0 lays an upright plane flat as a floor.
rotation_yFLOAT0.0-36000–36000Turn around Y in degrees. 45.0 swings the object to face the corner.
rotation_zFLOAT0.0-36000–36000Turn around Z in degrees. 180.0 stands the object on its head.
scale_xFLOAT1.00-10000–10000Stretch along X. 1.0 leaves it, 2.0 doubles it, -1.0 mirrors it.
scale_yFLOAT1.00-10000–10000Stretch along Y. 1.0 leaves it, 0.5 halves its height.
scale_zFLOAT1.00-10000–10000Stretch along Z. 1.0 leaves it, 0.1 flattens it to a slab.
nameSTRINGTransformLabel carried into the scene graph, such as 'pedestal'. Custom code finds it by name.
visibleBOOLEANtrue`true` draws the object and anything under it; `false` hides all of it.

Outputs (1)

NameTypeDescription
objectTHREE_OBJECTThe placed object, for Three Group or the root socket on Three Scene.