Three Perspective Camera
Point the camera, tell it where to look
- track
- camera
If your scene is going to look like a photograph rather than a blueprint, this is the camera you reach for. WASThreePerspectiveCamera is the default human-eye view for the WAS Node Suite Three family: distant things smaller, lines converging, the world the way a lens sees it. It's the camera you'll have in 90% of your workflows, at least until you want orthographic for something schematic.
How it works
A perspective camera is defined by three numbers - field of view, near and far - plus two points in space: where the camera sits and what it looks at. That position/target pair is the whole game. position places the lens; target is the point it stares at, which is also the point orbit control turns around when you drag in the viewer.
The defaults are set up so that the default starting values work as a starting point: position_z of 5 frames a unit cube comfortably, fov of 50 reads natural. The tooltips spell out the range: 20 is a long lens, 90 is wide, and a position of 3, 2, 5 looks slightly down and off to the side.
The inputs that matter
- fov - vertical field of view in degrees. 50 natural, 20 long-lens, 90 wide-angle.
- position_x / y / z - where the camera sits, in scene units.
- target_x / y / z - where it looks. 0, 0, 0 is the world origin; target_y 1.6 is about head height.
- near / far - clipping range. 0.1 near suits a scene a few units across; raising it sharpens depth precision at the cost of cutting close geometry.
The optional track input is worth knowing about: wire a Three Track in and the camera aims at or follows an object instead of a fixed point, with the target values overridden. Great for keeping a moving subject centered without re-wiring the camera every frame.
Framing workflow
Here's the practical loop the Three pack is built around. Your camera position and target are starting values - drag in the Three Viewer to orbit, and you move the camera from there. The Reset Camera control in the viewer puts it back to the node's values. So the rhythm is: set a sane position/target in the node, then fine-tune interactively in the viewer, and if you've wandered too far, reset and try again. What the camera sees when you settle is what Three Render draws, because both the scene and the camera feed into Three App.
The trap
Depth precision. The far plane clips anything beyond it, but the real trap is the near plane - a scene where the camera is very close to a large floor with near at 0.1 can show z-fighting shimmer on distant surfaces. The tooltip's advice is the right instinct: if a scene is tens of units deep, don't leave near at the default forever.
Install
WASThreePerspectiveCamera ships with WAS Node Suite v3. Install through 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. Requires ComfyUI 0.14.0+ and Python 3.10+. If the node's missing from Add Node, set features.threejs: true in <ComfyUI user dir>/was-node-suite/config.yaml and restart.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| fov | FLOAT | 50.00.1–179 | Vertical field of view in degrees. 50.0 reads naturally, 20.0 is a long lens, 90.0 wide. |
| near | FLOAT | 0.1000.000001–1000000 | Nearest distance drawn. 0.1 suits a scene a few units across; raising it sharpens depth precision. |
| far | FLOAT | 10000.0001–1000000000 | Furthest distance drawn. 1000.0 covers most scenes. Anything beyond it is clipped away. |
| position_x | FLOAT | 3.00-1000000–1000000 | Where the camera sits along X, in scene units. 3.0 stands it off to the right. |
| position_y | FLOAT | 2.00-1000000–1000000 | Where the camera sits along Y. 2.0 looks slightly down on a unit cube. |
| position_z | FLOAT | 5.00-1000000–1000000 | Where the camera sits along Z. 5.0 frames a unit cube comfortably. |
| target_x | FLOAT | 0.00-1000000–1000000 | X of the point the camera looks at, and orbits around. 0.0 is the world origin. |
| target_y | FLOAT | 0.00-1000000–1000000 | Y of the point the camera looks at. 0.0 is the origin, 1.6 about head height. |
| target_z | FLOAT | 0.00-1000000–1000000 | Z of the point the camera looks at, and orbits around. 0.0 is the world origin. |
| trackopt | THREE_TRACK | Aim or follow an object instead of a fixed point, from Three Track. Wired, it overrides the target below. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| camera | THREE_CAMERA | The camera, for the camera socket on Three App. |