Project SOP

From TouchDesigner Documentation
Jump to: navigation, search
  • Invalid title: ""


The Project SOP creates curves on surface (also known as trim or profile curves) by projecting a 3D face onto a spline surface, much like a light casts a 2D shadow onto a 3D surface. There are two projection methods: along a vector, or by mapping the face directly onto the parametric space of the surface.

You will usually need a Trim SOP, Bridge SOP, or Profile SOP after a Project SOP. For example, in the case of a Trim SOP we might have:


Use a Trim SOP to cut a hole in the projected surface (as shown above).

Use a Bridge SOP to skin the profile curve to another profile curve.

Use a Profile SOP to extract the curve on surface or remap its position.

If you end up with a profile curve that is not visible, it may still exist. Confirm a profile curve's existence by clicking on the SOP's info pop-up (using middle-mouse button).

Additional Operations for Profile Curves

To delete a projected curve, use a Delete SOP, and enter the profile number (e.g. 1.4 returns the fifth profile on the second primitive (counting starts at 0) ). You can visualise the number of the profiles by enabling the Profile Number icon in the Viewport Display options.

You can group the profile curves with a Group SOP. Do this by typing the profile numbers in the Pattern field. You can use all regular expressions.

You can apply parametric affine transformations to the profile by using a Primitive SOP. You can also use the Primitive SOP to open, close, reverse, and cycle the profile curves.

Note: When applying transformations to a profile in the Primitive SOP, you can only rotate about the Z axis because the projected curve is a planar curve that lives in the domain of the surface. Therefore it wouldn't make any sense to allow rotations in X or Y for profiles.


Template:ParMiniMenu Template:ParMiniMenu Template:ParMenu

Parameters - Page

Template:ParMenu Template:ParFloat Template:ParMenu Template:ParInteger Template:ParFloat Template:ParFloat Template:ParFloat Template:ParInteger Template:ParToggle Template:ParToggle

Parameters - Page

Template:ParMenu Template:ParMenu Template:ParToggle Template:ParFloat Template:ParFloat Template:ParMenu


NURBS Scalp Patch for Hair

The: Along Vector > Axis > Minimum Distance option is extremely useful, say in the following situation: You have a NURBS surface of a head, and you want to obtain a NURBS patch by projecting a hairline onto the head's surface. You could:

Template the NURBS head.

Enter a Model SOP.

Enable the Snap to Template option in the Model Editor (Snap options).

Draw a NURBS curve along the surface of the head where you want the hairline. Then, with the Project SOP, you select the Minimum Distance option, and you have a profile curve with which you can trim the surface of the head to obtain the patch.

Thus having obtained a NURBS patch for the scalp, you could use it as the base for hair.


  1. Place a Circle SOP - Type: NURBS, Radius: 0.3, 0.3; then place a Tube SOP - Type: NURBS.
  2. Connect them into a Project SOP - Circle to Input1; Tube to Input2.
  3. Append a Trim SOP to the Project SOP - it trims the surface according to the projection provided by the Project SOP. You need to append a Trim SOP to a Project SOP in order to realise this trimming action.
  4. Enable the template flags on the Circle and Tube SOPs; make the Project SOP the display SOP.


TouchDesigner Build:

Add • Alembic • Align • Arm • Attribute Create • Attribute • Basis • Blend • Bone Group • Boolean • Box • Bridge • Cache • Cap • Capture Region • Capture • Carve • CHOP to • Circle • Clay • Clip • Convert • Copy • CPlusPlus • Creep • Curveclay • Curvesect • DAT to • Deform • Delete • Divide • Extrude • Facet • File In • Fillet • Fit • Font • Force • Fractal • Grid • Group • Hole • Import Select • In • Introduction To SOPs id • Inverse Curve • Iso Surface • Join • Joint • Kinect • Lattice • Limit • Line • Line Thick • LOD • LSystem • Magnet • Material • Merge • Metaball • Model • Noise • Null • Object Merge • Oculus Rift • OpenVR • Out • Particle • Point • Polyloft • Polypatch • Polyreduce • Polyspline • Polystitch • Primitive • Profile • Project • Rails • Raster • Ray • Rectangle • Refine • Resample • Revolve • Script • Select • Sequence Blend • Skin • Sort • Sphere • Spring • Sprite • Stitch • Subdivide • Superquad • Surfsect • Sweep • Switch • Text • Texture • Torus • Trace • Trail • Transform • Trim • Tristrip • Tube • Twist • Vertex • Wireframe • ZED

An Operator Family that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.

A surface type in SOPs including polygon, curve (NURBS and Bezier), patch (NURBS and Bezier) and other shapes like sphere, tube, and metaball. Points and Primitives are part of the Geometry Detail, which is a part of a SOP.