Project SOP

From TouchDesigner Documentation
Revision as of 16:28, 24 January 2019 by Markus Heckmann (talk | contribs) (cleaning)
Jump to: navigation, search


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.


Parameters - Page

Face Group facegroup - The group of faces to be projected onto the spline surfaces. Accepts patterns, as described in Pattern Matching.  

Surface Group surfgroup - The group of surfaces to project faces onto. Accepts patterns, as described in Pattern Matching.  

Cycle Type cycle - -

Parameters - Along Vector Page

The face is projected along a 3D vector and its image on the surface is converted into a curve on the surface. One spatial curve may generate several profiles depending on its position relative to the surface, the shape of the surface, and the chosen projection side. If the projected face does not intersect the surface at all, no profile curve will be generated.

Axis axis - - The axis along which the four corners of the feature are projected onto the base. When adding the feature from the outside as a Vector paste.

Vector vector - - The X, Y, and Z components of the projection vector if none of the main axes is chosen in the Axis parameter above.

Side projside - -

Divisions per Span sdivs - The number of points to be computed on the spatial face between successive spans. A span is the line connecting two consecutive CVs on a polygon, or the arc between two breakpoints on a spline curve. The projection tends to become more accurate as the number of divisions increases.  

Ray Tolerance rtolerance - Controls the precision of the ray intersection with the surface. The ray is cast along the projection vector from every point of the 3-D curve.  

Fit Tolerance ftolerance - Controls the 2-D fitting precision and is typically less than 0.01.  

Max UV Gap (%) uvgap - This specifies what percentage of the size of the surface domain is acceptable for two separate profiles to be joined into a single curve.  

Order order - The spline order of the resulting profile curve. The type of curve (Bzier or NURBS) is inherited from the spatial curve. The order, however, is not inherited because the spline order provides useful control over the quality of the fit. If the spatial face is a polygon, the profile will be a NURBS curve.  

Preserve Sharp Corners csharp - Controls the precision with which sharp corners in the projection curve are interpolated. It should be on when the projection has areas of high changes in curvature.  

Super Accurate Projection accurate - Use a very accurate yet expensive algebraic pruning algorithm to determine the intersection of the vector with the surface.  

Parameters - Parametrically Page

The spatial size of the faces is mapped directly onto the domain of the spline surface. The resulting projection is sensitive to the parameterization of the surface and is likely to appear distorted. It is, however, the fastest of the two projection types and tends to behave well on surfaces with regular shapes and chord-length parameterizations.

U from ufrom - - Specifies which of the spatial coordinates - X, Y, or Z - must be mapped to the U parametric direction of the surface.

V from vfrom - - Specifies which of the spatial coordinates - X, Y, or Z - must be mapped to the V parametric direction of the surface.

Map Profile to Range: userange - This option is on by default. It causes the profile to be scaled and translated to fit within the surface's domain ranges described below. If this option is off, the profile's coordinates are mapped onto the surface domain without any transformation; consequently, the profile will not be visible if its points are not inside the domain of the target surface.

Typically, the projected face should not be mapped to the U/V range if it was previously extracted from the same surface using the Profile SOP with the Parametrically to XY option selected. The extraction and re-projection tandem can be very useful in achieving the modeling goals currently attainable only with 3D curves. Such tasks include the ability to edit the points of a profile, joining, stitching, or filleting profiles together, carving or refining profiles, etc. By extracting a profile parametrically to XY, Touch creates a 3D face that is identical to the 2D profile but has an additional (constant) Z component.

The resulting 3D curve can be modeled using all the 3D tools available. Finally, the modeled 3D face can be reapplied onto the surface parametrically, making sure that the range mapping option is off.  

U Range urange - - Indicates in percentages what part of the U surface domain is the mapping area. A full range of 0-1 will cause the profiles to be mapped to the entire domain in the U parametric direction. The range is not restricted to the 0-1 interval.

V Range vrange - - Indicates in percentages what part of the V surface domain is the mapping area. A full range of 0-1 will cause the profiles to be mapped to the entire domain in the V parametric direction. The range is not restricted to the 0-1 interval.

Mapping Type maptype - -


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.


Operator Inputs

  • Input 0 -
  • Input 1 -

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.