TouchDesigner Beginner Article 3

SOPs: Surface Operators

Build and manipulate procedural 3D geometry with Surface Operators, from primitive shapes to displaced meshes.

⏱ 22 min sops geometry 3d procedural rendering

Surface Operators — SOPs — handle 3D geometry in TouchDesigner. They create, deform, combine, and manipulate points, edges, and polygons. If TOPs are for 2D image work and CHOPs are for numerical control signals, SOPs are for the actual shapes you want to render in 3D space. The SOP workflow centres on building a procedural geometry pipeline that flows from primitive creation through deformation and into the rendering system.

What SOPs Produce

A SOP outputs a geometry object: a collection of points in 3D space connected by edges or polygons, potentially carrying per-point attributes. This geometry isn’t directly visible — you need to place it inside a Geo COMP, assign a material (MAT), and render it with a Render TOP to see anything on screen. That pipeline is the core of all 3D work in TouchDesigner.

Primitive Generator SOPs

Box SOP creates a rectangular box. Set Size X/Y/Z to control its dimensions. The Divisions parameters add subdivisions to each face, giving the geometry more points to deform later.

Sphere SOP generates a sphere. The Type parameter offers Primitive (a single NURBS surface), Polygon (triangulated mesh), or Rows and Columns (quad mesh). For displacement and noise work, use Rows and Columns so you get a uniform point distribution. Set Rows to 50 and Columns to 50 for enough resolution to show detailed deformation.

Grid SOP creates a flat plane subdivided into a grid of polygons. Set the Size X and Y for the plane’s world-space dimensions, and Rows and Columns for the number of subdivisions. A 100×100 Grid SOP gives you 10,000 points — plenty for interesting noise displacement.

Circle SOP generates a circle as a polygon or NURBS curve. Set Type to Polygon and Divisions to control the number of sides. At 3 divisions you get a triangle; at 64 you get something indistinguishable from a smooth circle.

Line SOP creates a straight line segment with a configurable number of points along it. Useful as a path for Copy SOP operations.

Procedural Deformation SOPs

Noise SOP displaces the points of its input geometry along their normals (or along a specified axis) using a procedural noise function. This is the SOP-layer equivalent of the Noise TOP. Connect a Grid SOP into a Noise SOP and set the Amplitude to 0.3 — the flat grid becomes a rolling landscape. The Period parameter controls the spatial frequency of the bumps. Animate the Offset parameter over time to make the terrain undulate.

Transform SOP applies translation, rotation, and scale to geometry in object space. It is distinct from the Geo COMP’s own transform: the Transform SOP bakes the transform into the point positions, while the Geo COMP’s transform moves the whole object in world space.

Copy SOP duplicates its input geometry multiple times. Point a second input at a set of template points (from another SOP), and each template point becomes a location where a copy of the source geometry is placed. This is the fundamental tool for particle-like arrangements — scatter a Box SOP across 500 points from a Grid SOP, and you have 500 boxes filling the grid plane.

Merge SOP combines multiple geometry inputs into a single piece of geometry. Use it to bring together results from different SOP chains before sending everything into one Geo COMP.

Point Attributes

Every point in a SOP can carry named attributes. The three standard ones you will see constantly are:

  • N (normal): A vector pointing away from the surface at that point. Used for lighting calculations and for directional displacement in the Noise SOP.
  • Cd (colour): An RGB value per point. Phong MAT and PBR MAT can read per-point colour and blend it with the material colour.
  • uv (texture coordinate): A 2D coordinate used to map a texture from a TOP onto the surface. The Sphere and Grid SOPs generate UV coordinates automatically. You can also generate them with the Texture SOP.

Setting Up the Render Pipeline

To render 3D geometry, you need at least four elements in your network:

  1. Geo COMP: A component that contains your SOP network inside it. Double-click a Geo COMP to enter it and place your SOPs there. The Geo COMP also has a Material parameter where you assign a MAT.
  2. Camera COMP: Defines the viewpoint. Translate Z to –5 to pull the camera back from the origin. Set the Projection parameter to Perspective for a standard 3D view.
  3. Light COMP: Illuminates the scene. A basic Point Light placed at (2, 3, –3) in world space gives good default lighting. The ambient colour controls the baseline brightness in shadow areas.
  4. Render TOP: Brings everything together. Set its Camera parameter to point at your Camera COMP. Add your Geo COMPs to the Render parameter list. Set the background colour in the Render TOP’s Background Colour parameter. The output is a regular TOP texture you can pipe into further TOP processing or directly to a Window COMP.

The Render TOP also controls antialiasing (MSAA samples), depth of field, and motion blur from its Parameters pages.

The Noise SOP in Practice

Here is the full example network this article builds toward. Inside a Geo COMP:

  1. Place a Grid SOP. Set Size to 4 / 4 and Rows to 80, Columns to 80. You now have a high-resolution flat plane.
  2. Connect the Grid SOP to a Noise SOP. Set Amplitude to 0.5, Period to 0.6. On the Transform page, set Translate Z to absTime.seconds * 0.15 — this makes the noise field scroll through the geometry over time, creating an animated rolling surface.
  3. Assign a Phong MAT to the Geo COMP. Set its Diffuse colour to a dark blue and Specular to white with Shininess 40.

Outside the Geo COMP, in your main network:

  1. Place a Camera COMP. Set Translate to (0, 2, –6) and Rotate X to –20 degrees to look slightly down at the plane.
  2. Place a Light COMP with type Directional, aimed roughly at the origin.
  3. Place a Render TOP. Assign the Camera COMP and Geo COMP. Set the resolution to 1280×720.
  4. Connect the Render TOP to a Level TOP to boost contrast, then to a Null TOP named OUT.

The result is an animated, undulating terrain mesh rendered with specular highlights, produced entirely procedurally with no external assets. Change the Noise SOP’s Amplitude to op('audio_bass')['bass'] * 2 later when you add audio — and the surface will respond to music.

Understanding the SOP → MAT → Geo COMP → Render TOP pipeline is the foundation for all 3D work in TouchDesigner. Every complex 3D system, from particle fields to instanced architecture, is built on exactly this structure.