Refine SOP
Summary[edit]
The Refine SOP allows you to increase the number of CVs in any NURBS, Bzier, or polygonal surface or face without changing its shape. It is also used to decrease the number of CVs within a given tolerance (i.e. a simple but fast method of data reduction).
The Difference Between Refinement and Unrefinement
Refinement and unrefinement work both on faces (polygons, Bzier curves and NURBS curves) and surfaces (primitive meshes, Bzier surfaces and NURBS surfaces). To unrefine a face or a surface you need to specify a parametric interval (not just a single value as in refinement). This allows you to unrefine primitives within arbitrary intervals, either locally or globally. For example, to unrefine the whole primitive choose 0 and 1 as the two parametric boundaries; [0,0.5] will unrefine only the first parametric half of the primitive.
The interval boundaries are given by the First/Second U/V fields. Since refinement does not need an interval, the Second U/V fields are disabled by default.
The Tolerance control is only available for unrefinement, and not for refinement. Refinement does not need tolerances because it generates a curve or a surface that is mathematically identical to the original. Unrefinement, however, may tend to smooth out (or "melt") the original in a given area. In short, unrefinement is lossy; refinement isn't.
Contents
Parameters  Page
Group group
 If there are input groups, specifying a group name in this field will cause this SOP to act only upon the group specified. Accepts patterns, as described in Pattern Matching.
First U firstu
 This specifies a starting / ending location to complete the operation. Select this and a parametric U location between 0 and 1.
First U domainu1

Second U secondu
 This specifies a starting / ending location to complete the operation. Select this and a parametric U location between 0 and 1.
Second U domainu2

U Divisions divsu
 If refining or subdividing, this option specifies the number of refines to be performed between First U and Second U.
First V firstv
 This specifies a starting / ending location to complete the operation. Select this and a parametric V location between 0 and 1.
First V domainv1

Second V secondv
 This specifies a starting / ending location to complete the operation. Select this and a parametric V location between 0 and 1.
Second V domainv2

V Divisions divsv
 If refining or subdividing, this option specifies the number of refines to be performed between First V and Second V.
Parameters  Refine Page
If enabled, will refine the primitive at the locations specified above. If the primitive is a NURBS, then a knot is inserted multiple times as described below.
NURB Count U refineu
 Number of knots to insert at each location in the U / V basis when refining NURBS.
NURB Count V refinev
 Number of knots to insert at each location in the U / V basis when refining NURBS.
Spacing refinespace
 ⊞ 
 Uniform Domain Lengths
domain
 Refine at equal basis intervals if refining a spline.
 Uniform Arc Lengths
arc
 Each refinement is done at the centre of the maximum knot span (splines) or edge length (polygons).
Note: Uniform Domain Lengths should be selected if the domain ranges are animating, otherwise the inserted points will be undeterminable as different maximum lengths are encountered.
Parameters  Unrefine Page
If enabled, will remove CVs from any NURBS curve or surface, polygon or mesh (points/ rows removed) between First U and Second U, and First V and Second V.
NURB Count U unrefineu
 Number of knots to remove at each location in the U / V basis if refining NURBS.
NURB Count V unrefinev
 Number of knots to remove at each location in the U / V basis if refining NURBS.
Tolerance U tolu
 Only remove knots that do change the curve, polygon, or surface by more than this distance.
Tolerance V tolv
 Only remove knots that do change the curve, polygon, or surface by more than this distance.
Parameters  Subdivide Page
Subdivide refines a primitive such that the subdivision causes a sharp discontinuity if ever displaced. In essence subdivide is equivalent to refine for polygons and Bziers, since any refinement causes a potential discontinuity. In the case of a NURBS it is equivalent to a maximum refinement (i.e. count = primitive basis order  1).
Spacing subdivspace
 ⊞  Subdivide refines a primitive such that the subdivision causes a sharp discontinuity if ever displaced. In essence subdivide is equivalent to refine for polygons and Bziers, since any refinement causes a potential discontinuity. In the case of a NURBS it is equivalent to a maximum refinement (i.e. count = primitive basis order  1).
 Uniform Domain Lengths
domain
 Refine at equal basis intervals if refining a spline.
 Uniform Arc Lengths
arc
 Each refinement is done at the centre of the maximum knot span (splines) or edge length (polygons).
Note: Uniform Domain Lengths should be selected if the domain ranges are animating, otherwise the inserted points will be undeterminable as different maximum lengths are encountered.
Operator Inputs
 Input 0 
TouchDesigner Build:
SOPs 

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