- Geometry
- Render
Camera
Purpose
Section titled “Purpose”A render is drawn from one camera. Camera is a native TouchDesigner Camera COMP with an extra Voro page, so you keep every TD control you already use. The Voro page adds what TD has no control for: marking a shot change for renderers that keep history, driving the pose from a wire, framing the camera from the subject’s size and returning to a stored pose.
You don’t need Camera to render. Any Scene or renderer Camera parameter also accepts a plain TD Camera COMP.
Place Camera from the Geometry view of the Voro menu, under Render. Set its pose the TD way, with Translate and Rotate, Look At, a parent or a path. Set Field of View, Near and Far on the COMP as usual.
To render through it, select it in the Camera parameter on Scene’s Collection page. A renderer also has its own Camera parameter on its Scene page. When the renderer’s Scene Mode is Local or Scene + Local and you set that parameter, it wins over the Scene’s camera. Path Trace, Realtime Trace and Surface Renderer all collect the camera this way.
To frame a subject, first make sure a Scene has selected this Camera, then pulse Frame Scene. Camera measures the geometry that Scene collected, pulls back until the subject fits with Frame Margin to spare, and writes the result into its own Translate and Rotate. After that it is an ordinary TD camera you can nudge, keyframe and undo. A Camera that no Scene has selected has nothing to measure, and its Status line says so.
Inputs and outputs
Section titled “Inputs and outputs”In TouchDesigner, Camera shows one input, state. Connect a row of numbers there to let other Voro logic own the pose. The row’s width decides what it drives:
- 3 channels drive Position.
- 6 channels drive Position and Target.
- 7 channels drive Position, Target and Field of View.
- 48 channels are a whole camera, taken as is.
While a wire drives the camera, Camera writes the driven pose into its own Translate and Rotate as expressions. The COMP’s parameters show the real pose, and TD viewports and Render TOPs agree with the render. Remove the wire and your own typed values come back. An expression you wrote yourself on one of those parameters is left alone.
The camera output carries this Camera’s resolved viewpoint as a 48-channel row. Wire it into another Camera’s state to hand a pose from a rig or a switcher to the camera that renders.
The scene input and output and the camera0 to camera7 inputs are for Lab and .voro graphs, where cameras are wired instead of selected by name.
Controls
Section titled “Controls”The generated table below lists the whole module, including controls that only Lab and .voro graphs use. In TouchDesigner the Voro page holds these:
- Cut. Bump it and every renderer with history treats the next frame as a new shot, so a jump in the camera does not smear across frames.
- Frame Scene and Frame Margin. Solve the framing once from the subject’s size. Frame Margin is how much room to leave around it.
- Go Home, Home Position and Home Target. Go Home returns the camera to the stored pose. TD’s own preset button resets only the Pre-Xform page, so it does something else.
- Status. Read only. It names what drives the camera and which Scenes or renderers have selected it. The driver is the native pose, a
statewire or a Frame Scene pulse.
Aim, Position, Target, Direction, Up, the Lens page, Select and Reset are not on the TD page. Native TD parameters cover them: Look At, Translate, Field of View, Near and Far. To pick between several cameras in TD, point the Scene’s Camera parameter at a different camera.
Motion blur and depth of field are not camera controls. They sit on the renderer’s Lens page as Shutter and Aperture Radius.
With no camera selected, nothing falls back to a default camera. A renderer whose own Camera parameter and Scene’s Camera are both empty reports “no effective Camera selected” and draws nothing. Select a camera before you look for other causes of a missing picture.
Renderers accept perspective cameras only. An orthographic camera stops the render with an error.
Frame Scene measures each object’s bounding box, not its points. Debris flung far from the subject pulls the camera back with it. Instanced objects are framed by their base transform only, and Camera reports that in its status.
The Lab’s camera guide, lab/AUTHORING_GUIDE/CAMERA.md in the Voro package, covers the camera record and framing from Python.
Inputs
-
scenescene -
staterow -
camera0..7scene
Outputs
-
scenescene required -
camerarow required
Parameters
Section titled “Parameters”Camera
op('camera').par.Positionx - Default:
0- Range:
- -1000000 to 1000000
op('camera').par.Positiony - Default:
1.5- Range:
- -1000000 to 1000000
op('camera').par.Positionz - Default:
6- Range:
- -1000000 to 1000000
op('camera').par.Targetx - Default:
0- Range:
- -1000000 to 1000000
op('camera').par.Targety - Default:
1- Range:
- -1000000 to 1000000
op('camera').par.Targetz - Default:
0- Range:
- -1000000 to 1000000
op('camera').par.Directionx - Default:
0.6- Range:
- -1 to 1
op('camera').par.Directiony - Default:
0.35- Range:
- -1 to 1
op('camera').par.Directionz - Default:
0.72- Range:
- -1 to 1
op('camera').par.Upx - Default:
0- Range:
- -1 to 1
op('camera').par.Upy - Default:
1- Range:
- -1 to 1
op('camera').par.Upz - Default:
0- Range:
- -1 to 1
op('camera').par.Framemargin - Default:
1.15- Range:
- 1 to 4
op('camera').par.Cut - Default:
0- Range:
- 0 to 4096
op('camera').par.Select - Default:
0- Range:
- 0 to 7
Lens
op('camera').par.Fov - Default:
45- Range:
- 1 to 179
op('camera').par.Near - Default:
0.01- Range:
- 0.0001 to 1000000
op('camera').par.Far - Default:
10000- Range:
- 0.001 to 1000000000
Home
op('camera').par.Homepositionx - Default:
0- Range:
- -1000000 to 1000000
op('camera').par.Homepositiony - Default:
1.5- Range:
- -1000000 to 1000000
op('camera').par.Homepositionz - Default:
6- Range:
- -1000000 to 1000000
op('camera').par.Hometargetx - Default:
0- Range:
- -1000000 to 1000000
op('camera').par.Hometargety - Default:
1- Range:
- -1000000 to 1000000
op('camera').par.Hometargetz - Default:
0- Range:
- -1000000 to 1000000
op('camera').par.Reset - Default:
Off- Options:
- Off, On