@bottobot/td-mcp
Version:
TouchDesigner Documentation MCP Server v2.3 - Pure MCP server for VS Code/Codium with comprehensive operator documentation for 629 operators + 7 tutorials across all categories (TOP, CHOP, SOP, DAT, MAT, COMP, POP). Features experimental POP operators wit
1,181 lines • 63 kB
JSON
{
"id": "add_sop",
"name": "Add SOP",
"displayName": "Add SOP",
"category": "SOP",
"subcategory": "Generators",
"version": "",
"lastUpdated": "2025-08-07T07:49:56.158Z",
"sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Add_SOP.htm",
"url": "",
"description": "The Add SOP can both create new Points and Polygons on its own, or it can be used to add Points and Polygons to an existing input.",
"summary": "The Add SOP can both create new Points and Polygons on its own, or it can be used to add Points and Polygons to an existing input.",
"details": "",
"usage": "",
"tips": [],
"warnings": [],
"parameters": [
{
"id": null,
"name": "Points DAT",
"label": "Points DAT",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "From Derivative\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tJump to navigation\n\t\tJump to search\n\t\t\nThe Add can both create new Points and Polygons on its own, or it can be used to add Points and Polygons to an existing input.\t\t\t\nIf an input is specified, this adds points and polygons to it as specified below. If no input is specified, then it generates the points and polygons below as a new entity. It can read points and vertices from DATs. See also DAT to SOP.\naddSOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n pointdat - to a Table DAT containing point data. By default, x, y, z, and w can be defined in the first 4 columns of the table using un-named columns. \t\t\nIf the Named parameter below is turned on, the following attributes can be defined in the Points using named columns:\t\t\t\t\n\nP(0) P(1) P(2) P(3)\nN(0) N(1) N(2)\nCd(0) Cd(1) Cd(2) Cd(3)\nuv(0) uv(1) uv(2)Any other columns are added as single-float attributes.\t\t\t\t\nNOTE: Turn off Compute Normals on the parameter page when supplying N(0) N(1) N(2) in the Points .\n\n\n\n namedattribs - Allows extra attributes to be defined in the above.\n\n\n\n keep - Use this option to remove any unused points. When checked, existing geometry in the input are discarded, but the polygons created by this are kept, as well as any points in the input.\n\n\n\n addpts - When On you can add individual points with position and weight of your choosing by using the parameters below.\n\n\n\n point - Sequence of points to add\n\n\n\n point0pos - - The three input fields represent the X, Y and Z coordinates of the point. These values can be constants (numbers) or variables. Below are three examples:\t\t\n \n\n \n\n\n \n\n\n point0posx - point0posy - point0posz -\n\n point0weight - The spline weight of the point. If the point is later used to create a spline (nurbs or Bezier) primitive, the weight will influence the shape of the primitive and may cause that primitive to become rational. Polygons and metaballs are not affected by this weight.\n\n\n\n\n\n\n method - - Specify to create polygons from the points by using a Group method or Pattern Method.\n\n group - Create as many polygons as determined by the group field and by the grouping / skipping rules. pattern - Specify the points to use to create polygons using the parameters Table or 0 below.\n\n group - Subset of points to be connected.\n\n\n\n add - - Optionally join subgroups of points.\n\n all - Adds all points just as if you added them manually in the Points page. group - Adds only the number of points specified. skip - Adds points, buts skips every Nth one. sep - Creates separate polygons for each group specified in the Group parameter. For example, if you have a Group creating a group called group1 and using the Create Boundary Groups option, you can connect this to an Add and enter group1__* in the Group parameter. If Each Group Separately is chosen, polygons will be created for each boundary on the surface.Tip: The Each Group Separately option is useful when pasting surfaces. Boundary groups can be created for the boundaries of two adjacent surfaces, and then the PolyLoft (using the Points option) can be used to stitch these surfaces together.\n\n\n\n inc - Increment / skip amount to use for adding points.\n\n\n\n closedall - Closes the generated polygons.\n\n\n\n polydat - to a containing polygon data. Accepts rows of polygons specified by point number in the first column. The second column indicates if the polygons are closed (1) or open (0).\n\n\n\n poly - Sequence of polygon patterns\n\n\n\n poly0pattern - Create a fixed number of polygons by specifying a point pattern for each polygon. Enter connection lists here to add polygons. These consist of a list of point numbers to define the order in which the points are to be connected. The form is: {from}-{to}[:{every}][,{of}].\nExamples of Valid Connection Lists:\n\n1 2 3 4 - Makes a polygon by connecting point numbers 1,2,3,4.\n1 3-15 16 8 - All points from 3-15 are included.\n1-234 820-410 235-409 - Points from 1-820 are included, in the specified order.\n0-15:2 - Every other point from 0 to 15 is included.\n0-15:2,3 - Every 2 of 3 points are included (i.e. 0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15).\n!4 - Every point except 4 is included.\n!100-200 - Every point <100 and >200 is included.\n* - Include all points.\n9-0 - The first ten points are included in reverse order.\n!9-0 - All but the first ten points are included in reverse order.\n\n\n poly0closed - To create a closed polygon, check the Closed button.\n\n\n\n\n\n\n remove - Keep only the connected points, and discard unused points.\n\n\n\n normals - Creates normals on the geometry.\n\n\n\n\n\nUsed in conjunction with a point expression, the Add can be useful for extracting a specific point from another . For example, to extract the X, Y and Z value of the fifth point, from a Grid in geo1:\n\n\n\n\n\nPoints added in this way are appended to the end of the point list if a Source is specified. Middle-mouse click on the node to find out how many points there are. For example, if you have added two points and there are 347 points (from 0 to 346), you have added the last two point numbers: 345 and 346.\n\n\n -\n\nExtra Information for the Add can be accessed via an Info CHOP.\n\n\n\n - Number of points in this . - Number of primitives in this . - Number of particles in this . - Time spent in another thread updating geometry data on the from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time. - Time spent in another thread updating meta surface geometry data (such as metaballs or nurbs) on the from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\nwikieditorwikieditorwikieditor2022.241402021.100002020.200002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nA Operator Family that reads, creates and modifies 3D points, polygons, lines, particles, surfaces, spheres and meatballs. Particles and point clouds are now done primarily on the GPU using TOPs.\n\n\n\nAn Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a python Script or GLSL Shader, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nInformation associated with SOP geometry. Points and primitives (polygons, NURBS, etc.) can have any number of attributes - position (P) is standard, and built-in optional attributes are normals (N), texture coordinates (uv), color (Cd), etc.\n\n\n\nA form of DATs (Data Operators) that is structured as rows and columns of text strings.\n\n\n\nA polygon is a type of Primitive that is formed from a set of Vertices in 3D that are implicitly connected together to form a multi-edge shape.\n\n\n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\nThe 3D data held in SOPs and passed for rendering by the Geometry COMP.\n\n\n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nThe Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Add_SOP&oldid=32293\"\n\t\tCategory: SOPs",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.152Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Points DAT",
"label": "Points DAT",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "From Derivative\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tJump to navigation\n\t\tJump to search\n\t\t\nThe Add can both create new Points and Polygons on its own, or it can be used to add Points and Polygons to an existing input.\t\t\t\nIf an input is specified, this adds points and polygons to it as specified below. If no input is specified, then it generates the points and polygons below as a new entity. It can read points and vertices from DATs. See also DAT to SOP.\naddSOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n pointdat - to a Table DAT containing point data. By default, x, y, z, and w can be defined in the first 4 columns of the table using un-named columns. \t\t\nIf the Named parameter below is turned on, the following attributes can be defined in the Points using named columns:\t\t\t\t\n\nP(0) P(1) P(2) P(3)\nN(0) N(1) N(2)\nCd(0) Cd(1) Cd(2) Cd(3)\nuv(0) uv(1) uv(2)Any other columns are added as single-float attributes.\t\t\t\t\nNOTE: Turn off Compute Normals on the parameter page when supplying N(0) N(1) N(2) in the Points .\n\n\n\n namedattribs - Allows extra attributes to be defined in the above.\n\n\n\n keep - Use this option to remove any unused points. When checked, existing geometry in the input are discarded, but the polygons created by this are kept, as well as any points in the input.\n\n\n\n addpts - When On you can add individual points with position and weight of your choosing by using the parameters below.\n\n\n\n point - Sequence of points to add\n\n\n\n point0pos - - The three input fields represent the X, Y and Z coordinates of the point. These values can be constants (numbers) or variables. Below are three examples:\t\t\n \n\n \n\n\n \n\n\n point0posx - point0posy - point0posz -\n\n point0weight - The spline weight of the point. If the point is later used to create a spline (nurbs or Bezier) primitive, the weight will influence the shape of the primitive and may cause that primitive to become rational. Polygons and metaballs are not affected by this weight.\n\n\n\n\n\n\n method - - Specify to create polygons from the points by using a Group method or Pattern Method.\n\n group - Create as many polygons as determined by the group field and by the grouping / skipping rules. pattern - Specify the points to use to create polygons using the parameters Table or 0 below.\n\n group - Subset of points to be connected.\n\n\n\n add - - Optionally join subgroups of points.\n\n all - Adds all points just as if you added them manually in the Points page. group - Adds only the number of points specified. skip - Adds points, buts skips every Nth one. sep - Creates separate polygons for each group specified in the Group parameter. For example, if you have a Group creating a group called group1 and using the Create Boundary Groups option, you can connect this to an Add and enter group1__* in the Group parameter. If Each Group Separately is chosen, polygons will be created for each boundary on the surface.Tip: The Each Group Separately option is useful when pasting surfaces. Boundary groups can be created for the boundaries of two adjacent surfaces, and then the PolyLoft (using the Points option) can be used to stitch these surfaces together.\n\n\n\n inc - Increment / skip amount to use for adding points.\n\n\n\n closedall - Closes the generated polygons.\n\n\n\n polydat - to a containing polygon data. Accepts rows of polygons specified by point number in the first column. The second column indicates if the polygons are closed (1) or open (0).\n\n\n\n poly - Sequence of polygon patterns\n\n\n\n poly0pattern - Create a fixed number of polygons by specifying a point pattern for each polygon. Enter connection lists here to add polygons. These consist of a list of point numbers to define the order in which the points are to be connected. The form is: {from}-{to}[:{every}][,{of}].\nExamples of Valid Connection Lists:\n\n1 2 3 4 - Makes a polygon by connecting point numbers 1,2,3,4.\n1 3-15 16 8 - All points from 3-15 are included.\n1-234 820-410 235-409 - Points from 1-820 are included, in the specified order.\n0-15:2 - Every other point from 0 to 15 is included.\n0-15:2,3 - Every 2 of 3 points are included (i.e. 0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15).\n!4 - Every point except 4 is included.\n!100-200 - Every point <100 and >200 is included.\n* - Include all points.\n9-0 - The first ten points are included in reverse order.\n!9-0 - All but the first ten points are included in reverse order.\n\n\n poly0closed - To create a closed polygon, check the Closed button.\n\n\n\n\n\n\n remove - Keep only the connected points, and discard unused points.\n\n\n\n normals - Creates normals on the geometry.\n\n\n\n\n\nUsed in conjunction with a point expression, the Add can be useful for extracting a specific point from another . For example, to extract the X, Y and Z value of the fifth point, from a Grid in geo1:\n\n\n\n\n\nPoints added in this way are appended to the end of the point list if a Source is specified. Middle-mouse click on the node to find out how many points there are. For example, if you have added two points and there are 347 points (from 0 to 346), you have added the last two point numbers: 345 and 346.\n\n\n -\n\nExtra Information for the Add can be accessed via an Info CHOP.\n\n\n\n - Number of points in this . - Number of primitives in this . - Number of particles in this . - Time spent in another thread updating geometry data on the from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time. - Time spent in another thread updating meta surface geometry data (such as metaballs or nurbs) on the from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\nwikieditorwikieditorwikieditor2022.241402021.100002020.200002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nA Operator Family that reads, creates and modifies 3D points, polygons, lines, particles, surfaces, spheres and meatballs. Particles and point clouds are now done primarily on the GPU using TOPs.\n\n\n\nAn Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a python Script or GLSL Shader, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nInformation associated with SOP geometry. Points and primitives (polygons, NURBS, etc.) can have any number of attributes - position (P) is standard, and built-in optional attributes are normals (N), texture coordinates (uv), color (Cd), etc.\n\n\n\nA form of DATs (Data Operators) that is structured as rows and columns of text strings.\n\n\n\nA polygon is a type of Primitive that is formed from a set of Vertices in 3D that are implicitly connected together to form a multi-edge shape.\n\n\n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\nThe 3D data held in SOPs and passed for rendering by the Geometry COMP.\n\n\n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nThe Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Add_SOP&oldid=32293\"\n\t\tCategory: SOPs",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.154Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Points DAT",
"label": "Points DAT",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "The Add can both create new Points and Polygons on its own, or it can be used to add Points and Polygons to an existing input.\t\t\t\nIf an input is specified, this adds points and polygons to it as specified below. If no input is specified, then it generates the points and polygons below as a new entity. It can read points and vertices from DATs. See also DAT to SOP.\naddSOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n pointdat - to a Table DAT containing point data. By default, x, y, z, and w can be defined in the first 4 columns of the table using un-named columns. \t\t\nIf the Named parameter below is turned on, the following attributes can be defined in the Points using named columns:\t\t\t\t\n\nP(0) P(1) P(2) P(3)\nN(0) N(1) N(2)\nCd(0) Cd(1) Cd(2) Cd(3)\nuv(0) uv(1) uv(2)Any other columns are added as single-float attributes.\t\t\t\t\nNOTE: Turn off Compute Normals on the parameter page when supplying N(0) N(1) N(2) in the Points .\n\n\n\n namedattribs - Allows extra attributes to be defined in the above.\n\n\n\n keep - Use this option to remove any unused points. When checked, existing geometry in the input are discarded, but the polygons created by this are kept, as well as any points in the input.\n\n\n\n addpts - When On you can add individual points with position and weight of your choosing by using the parameters below.\n\n\n\n point - Sequence of points to add\n\n\n\n point0pos - - The three input fields represent the X, Y and Z coordinates of the point. These values can be constants (numbers) or variables. Below are three examples:\t\t\n \n\n \n\n\n \n\n\n point0posx - point0posy - point0posz -\n\n point0weight - The spline weight of the point. If the point is later used to create a spline (nurbs or Bezier) primitive, the weight will influence the shape of the primitive and may cause that primitive to become rational. Polygons and metaballs are not affected by this weight.\n\n\n\n\n\n\n method - - Specify to create polygons from the points by using a Group method or Pattern Method.\n\n group - Create as many polygons as determined by the group field and by the grouping / skipping rules. pattern - Specify the points to use to create polygons using the parameters Table or 0 below.\n\n group - Subset of points to be connected.\n\n\n\n add - - Optionally join subgroups of points.\n\n all - Adds all points just as if you added them manually in the Points page. group - Adds only the number of points specified. skip - Adds points, buts skips every Nth one. sep - Creates separate polygons for each group specified in the Group parameter. For example, if you have a Group creating a group called group1 and using the Create Boundary Groups option, you can connect this to an Add and enter group1__* in the Group parameter. If Each Group Separately is chosen, polygons will be created for each boundary on the surface.Tip: The Each Group Separately option is useful when pasting surfaces. Boundary groups can be created for the boundaries of two adjacent surfaces, and then the PolyLoft (using the Points option) can be used to stitch these surfaces together.\n\n\n\n inc - Increment / skip amount to use for adding points.\n\n\n\n closedall - Closes the generated polygons.\n\n\n\n polydat - to a containing polygon data. Accepts rows of polygons specified by point number in the first column. The second column indicates if the polygons are closed (1) or open (0).\n\n\n\n poly - Sequence of polygon patterns\n\n\n\n poly0pattern - Create a fixed number of polygons by specifying a point pattern for each polygon. Enter connection lists here to add polygons. These consist of a list of point numbers to define the order in which the points are to be connected. The form is: {from}-{to}[:{every}][,{of}].\nExamples of Valid Connection Lists:\n\n1 2 3 4 - Makes a polygon by connecting point numbers 1,2,3,4.\n1 3-15 16 8 - All points from 3-15 are included.\n1-234 820-410 235-409 - Points from 1-820 are included, in the specified order.\n0-15:2 - Every other point from 0 to 15 is included.\n0-15:2,3 - Every 2 of 3 points are included (i.e. 0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15).\n!4 - Every point except 4 is included.\n!100-200 - Every point <100 and >200 is included.\n* - Include all points.\n9-0 - The first ten points are included in reverse order.\n!9-0 - All but the first ten points are included in reverse order.\n\n\n poly0closed - To create a closed polygon, check the Closed button.\n\n\n\n\n\n\n remove - Keep only the connected points, and discard unused points.\n\n\n\n normals - Creates normals on the geometry.\n\n\n\n\n\nUsed in conjunction with a point expression, the Add can be useful for extracting a specific point from another . For example, to extract the X, Y and Z value of the fifth point, from a Grid in geo1:\n\n\n\n\n\nPoints added in this way are appended to the end of the point list if a Source is specified. Middle-mouse click on the node to find out how many points there are. For example, if you have added two points and there are 347 points (from 0 to 346), you have added the last two point numbers: 345 and 346.\n\n\n -\n\nExtra Information for the Add can be accessed via an Info CHOP.\n\n\n\n - Number of points in this . - Number of primitives in this . - Number of particles in this . - Time spent in another thread updating geometry data on the from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time. - Time spent in another thread updating meta surface geometry data (such as metaballs or nurbs) on the from the 's CPU data. As it is part of another thread, this time is not part of the usual frame time.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\nwikieditorwikieditorwikieditor2022.241402021.100002020.200002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nA Operator Family that reads, creates and modifies 3D points, polygons, lines, particles, surfaces, spheres and meatballs. Particles and point clouds are now done primarily on the GPU using TOPs.\n\n\n\nAn Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a python Script or GLSL Shader, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nInformation associated with SOP geometry. Points and primitives (polygons, NURBS, etc.) can have any number of attributes - position (P) is standard, and built-in optional attributes are normals (N), texture coordinates (uv), color (Cd), etc.\n\n\n\nA form of DATs (Data Operators) that is structured as rows and columns of text strings.\n\n\n\nA polygon is a type of Primitive that is formed from a set of Vertices in 3D that are implicitly connected together to form a multi-edge shape.\n\n\n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\nThe 3D data held in SOPs and passed for rendering by the Geometry COMP.\n\n\n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nThe Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Add_SOP&oldid=32293\"",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Points DAT",
"label": "Points DAT",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "pointdat - to a Table DAT containing point data. By default, x, y, z, and w can be defined in the first 4 columns of the table using un-named columns. \t\t\nIf the Named parameter below is turned on, the following attributes can be defined in the Points using named columns:\t\t\t\t\n\nP(0) P(1) P(2) P(3)\nN(0) N(1) N(2)\nCd(0) Cd(1) Cd(2) Cd(3)\nuv(0) uv(1) uv(2)Any other columns are added as single-float attributes.\t\t\t\t\nNOTE: Turn off Compute Normals on the parameter page when supplying N(0) N(1) N(2) in the Points .",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Named Attributes",
"label": "Named Attributes",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "namedattribs - Allows extra attributes to be defined in the above.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Delete Geometry, Keep Points",
"label": "Delete Geometry, Keep Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "keep - Use this option to remove any unused points. When checked, existing geometry in the input are discarded, but the polygons created by this are kept, as well as any points in the input.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Add Points",
"label": "Add Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "addpts - When On you can add individual points with position and weight of your choosing by using the parameters below.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Point",
"label": "Point",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "point - Sequence of points to add\n\n\n\n point0pos - - The three input fields represent the X, Y and Z coordinates of the point. These values can be constants (numbers) or variables. Below are three examples:\t\t\n \n\n \n\n\n \n\n\n point0posx - point0posy - point0posz -\n\n point0weight - The spline weight of the point. If the point is later used to create a spline (nurbs or Bezier) primitive, the weight will influence the shape of the primitive and may cause that primitive to become rational. Polygons and metaballs are not affected by this weight.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.156Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Position",
"label": "Position",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "point0pos - - The three input fields represent the X, Y and Z coordinates of the point. These values can be constants (numbers) or variables. Below are three examples:\t\t\n \n\n \n\n\n \n\n\n point0posx - point0posy - point0posz -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Position",
"label": "Position",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "point0posx - point0posy - point0posz -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Weight",
"label": "Weight",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "point0weight - The spline weight of the point. If the point is later used to create a spline (nurbs or Bezier) primitive, the weight will influence the shape of the primitive and may cause that primitive to become rational. Polygons and metaballs are not affected by this weight.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Method",
"label": "Method",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "method - - Specify to create polygons from the points by using a Group method or Pattern Method.\n\n group - Create as many polygons as determined by the group field and by the grouping / skipping rules. pattern - Specify the points to use to create polygons using the parameters Table or 0 below.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "By Group",
"label": "By Group",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "group - Create as many polygons as determined by the group field and by the grouping / skipping rules. pattern - Specify the points to use to create polygons using the parameters Table or 0 below.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Group",
"label": "Group",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "group - Subset of points to be connected.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Add",
"label": "Add",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "add - - Optionally join subgroups of points.\n\n all - Adds all points just as if you added them manually in the Points page. group - Adds only the number of points specified. skip - Adds points, buts skips every Nth one. sep - Creates separate polygons for each group specified in the Group parameter. For example, if you have a Group creating a group called group1 and using the Create Boundary Groups option, you can connect this to an Add and enter group1__* in the Group parameter. If Each Group Separately is chosen, polygons will be created for each boundary on the surface.Tip: The Each Group Separately option is useful when pasting surfaces. Boundary groups can be created for the boundaries of two adjacent surfaces, and then the PolyLoft (using the Points option) can be used to stitch these surfaces together.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "All Points",
"label": "All Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "all - Adds all points just as if you added them manually in the Points page. group - Adds only the number of points specified. skip - Adds points, buts skips every Nth one. sep - Creates separate polygons for each group specified in the Group parameter. For example, if you have a Group creating a group called group1 and using the Create Boundary Groups option, you can connect this to an Add and enter group1__* in the Group parameter. If Each Group Separately is chosen, polygons will be created for each boundary on the surface.Tip: The Each Group Separately option is useful when pasting surfaces. Boundary groups can be created for the boundaries of two adjacent surfaces, and then the PolyLoft (using the Points option) can be used to stitch these surfaces together.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "N",
"label": "N",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "inc - Increment / skip amount to use for adding points.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Closed",
"label": "Closed",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "closedall - Closes the generated polygons.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Polygons Table",
"label": "Polygons Table",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "polydat - to a containing polygon data. Accepts rows of polygons specified by point number in the first column. The second column indicates if the polygons are closed (1) or open (0).",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Polygon",
"label": "Polygon",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "poly - Sequence of polygon patterns\n\n\n\n poly0pattern - Create a fixed number of polygons by specifying a point pattern for each polygon. Enter connection lists here to add polygons. These consist of a list of point numbers to define the order in which the points are to be connected. The form is: {from}-{to}[:{every}][,{of}].\nExamples of Valid Connection Lists:\n\n1 2 3 4 - Makes a polygon by connecting point numbers 1,2,3,4.\n1 3-15 16 8 - All points from 3-15 are included.\n1-234 820-410 235-409 - Points from 1-820 are included, in the specified order.\n0-15:2 - Every other point from 0 to 15 is included.\n0-15:2,3 - Every 2 of 3 points are included (i.e. 0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15).\n!4 - Every point except 4 is included.\n!100-200 - Every point <100 and >200 is included.\n* - Include all points.\n9-0 - The first ten points are included in reverse order.\n!9-0 - All but the first ten points are included in reverse order.\n\n\n poly0closed - To create a closed polygon, check the Closed button.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.157Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Pattern",
"label": "Pattern",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "poly0pattern - Create a fixed number of polygons by specifying a point pattern for each polygon. Enter connection lists here to add polygons. These consist of a list of point numbers to define the order in which the points are to be connected. The form is: {from}-{to}[:{every}][,{of}].\nExamples of Valid Connection Lists:\n\n1 2 3 4 - Makes a polygon by connecting point numbers 1,2,3,4.\n1 3-15 16 8 - All points from 3-15 are included.\n1-234 820-410 235-409 - Points from 1-820 are included, in the specified order.\n0-15:2 - Every other point from 0 to 15 is included.\n0-15:2,3 - Every 2 of 3 points are included (i.e. 0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15).\n!4 - Every point except 4 is included.\n!100-200 - Every point <100 and >200 is included.\n* - Include all points.\n9-0 - The first ten points are included in reverse order.\n!9-0 - All but the first ten points are included in reverse order.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.158Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Closed",
"label": "Closed",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "poly0closed - To create a closed polygon, check the Closed button.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.158Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Remove Unused Points",
"label": "Remove Unused Points",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "remove - Keep only the connected points, and discard unused points.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.158Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Compute Normals",
"label": "Compute Normals",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "normals - Creates normals on the geometry.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:49:56.158Z",
"rawData": {},
"sourceElement": null
}
],
"parameterGroups": {},
"codeExamples": [],
"pythonExamples": [],
"expressions": [],
"commonInputs": [],
"commonOutputs": [],
"relatedOperators": [],
"workflowPatterns": [],
"images": [],
"videos": [],
"assets": [],
"keywords": [
"add",
"sop",
"both",
"create",
"points",
"polygons",
"own,",
"used",
"existing",
"input."
],
"tags": [
"SOP",
"TouchDesigner",
"Add SOP"
],
"searchWeight": 1,
"contentHash": "",
"processingDate": "2025-08-07T07:49:56.158Z",
"processingVersion": "1.0.0",
"isValid": true,
"validationErrors": []
}