@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,087 lines • 52.2 kB
JSON
{
"id": "fillet",
"name": "Fillet",
"displayName": "Fillet",
"category": "SOP",
"subcategory": "Generators",
"version": "",
"lastUpdated": "2025-08-08T00:37:43.710Z",
"sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Fillet_SOP.htm",
"url": "",
"description": "The Fillet SOP is used to create smooth bridging geometry between two curves / polygons or two surfaces / meshes.",
"summary": "The Fillet SOP is used to create smooth bridging geometry between two curves / polygons or two surfaces / meshes.",
"details": "",
"usage": "",
"tips": [],
"warnings": [],
"parameters": [
{
"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": "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 Fillet is used to create smooth bridging geometry between two curves / polygons or two surfaces / meshes.\t\nFilleting creates a new primitive between each input pair and never affects the original shapes. This is in contrast to the Join and Stitch SOPs. The Join SOP converts and possibly changes the connected ends of primitives, and stitching changes the original shapes but does not change the number of resulting primitives.\t\t\nPlease refer to the Align SOP for a discussion of \"left\" and \"right\" primitives as well as the option of an auxiliary input.\t\t\nNote: Trim curves are not taken into account by a fillet. To do this, use the Join .\nfilletSOP_Class\n\nContents\n \n \n \n \n \n \n\n\n\n\n\n group - Which primitives to fillet. If blank, it fillets the entire input. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\n fillet - - Can optionally fillet subgroups of N primitives or every nth primitive in a cyclical manner.\t\nExample: Assume there are six primitives numbered for 0 - 5, and N = 2. Then: \t\t\n\nGroups will fillet 0-1 2-3 4-5\nSkipping will fillet 0-2-6 and 1-3-5.\n all - group - skip -\n\t\t\n inc - Determines the number of primitives to be either grouped or skipped.\n\n\n\t\t\n loop - Connects the beginning of the first primitive to the end of the last primitive filleted, or, if only one primitive exists, it creates a fillet between its ends.\n\n\n\t\t\n dir - - This menu determines the parametric direction of the filleting operation, which can be in U or in V, and is meaningful only when the inputs are surfaces. The U direction is associated with columns; the V direction refers to rows.\n\n ujoin - vjoin -\n\t\t\n fillettype - - Select which type of fillet to use in this menu.\n\n freeform - Allows full specifications of the fillet. convex - May negate scale values to ensure convex fillets. circular - Attempts to build a fillet as close to a radial arc as the shape and orientation of the inputs permit. You do not need to specify a radius - it is automatically determined to ensure a smooth connection between the inputs. As the two inputs come into proximity of each other, the fillet radius decreases. The tangent scales are ignored (as in the Bridge SOP); only the sign of the tangent is taken into account in order to save you from needing to flip the normals of either input.\n\t\t\n primtype - - Select what type of primitive will be created by the fillet in this menu.\n\n input - Builds a fillet of the matching type between pairs of primitives. If the pair of primitives are different types, then the most general type is used (i.e. NURBS over Bzier, Bzier over polygons).\n polygon - Builds a polygonal fillet between pairs of primitives.\n nurbs - Builds a NURBS fillet between pairs of primitives at the given order.\n bezier - Builds a Bzier fillet between pairs of primitives at the given order.\n\t\t\n order - Order at which to build the spline fillets.\n\n\n\t\t\n leftuv - - Parametric point on each left primitive at which to begin the fillet.\n\nleftuv1 -leftuv2 -\n\t\t\n rightuv - - Parametric point on each right primitive at which to begin the fillet.\n\nrightuv1 -rightuv2 -\n\t\t\n lrwidth - - The first value represents the proportion of the left primitive that the left end of the fillet spans. The second value represents the proportion of the right primitive that the right end of the fillet spans.\n\nlrwidth1 -lrwidth2 -\n\t\t\n lrscale - - Use to control the direction and scale of the first and last segments of the fillet.\n\nlrscale1 -lrscale2 -\n\t\t\n lroffset - - Controls the position of the first and last segments of the fillet.\n\nlroffset1 -lroffset2 -\n\t\t\n seamless - If selected, then the inputs are modified in such a way that the isoparms appear continuous from one primitive, through the fillet to the other primitive. Also, the primitives are promoted to the same type and order. This will minimize if not eliminate any artifacts introduced in rendering at the cost of more refined geometry.\n\n\n\t\t\n cut - If selected, the primitives are trimmed at the point the fillet begins.\n\n\n\n\n\n -\n -\n\nExtra Information for the Fillet 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\\n2022.241402021.100002018.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\nA surface type in SOPs that includes polygon, curve (NURBS and Bezier), patch (NURBS and Bezier) and other basic shapes like sphere, tube and metaball. Points and Primitives are part of the Geometry Detail, which is a part of a SOP.\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\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=Fillet_SOP&oldid=24190\"\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-08T00:37:43.704Z",
"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": "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 Fillet is used to create smooth bridging geometry between two curves / polygons or two surfaces / meshes.\t\nFilleting creates a new primitive between each input pair and never affects the original shapes. This is in contrast to the Join and Stitch SOPs. The Join SOP converts and possibly changes the connected ends of primitives, and stitching changes the original shapes but does not change the number of resulting primitives.\t\t\nPlease refer to the Align SOP for a discussion of \"left\" and \"right\" primitives as well as the option of an auxiliary input.\t\t\nNote: Trim curves are not taken into account by a fillet. To do this, use the Join .\nfilletSOP_Class\n\nContents\n \n \n \n \n \n \n\n\n\n\n\n group - Which primitives to fillet. If blank, it fillets the entire input. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\n fillet - - Can optionally fillet subgroups of N primitives or every nth primitive in a cyclical manner.\t\nExample: Assume there are six primitives numbered for 0 - 5, and N = 2. Then: \t\t\n\nGroups will fillet 0-1 2-3 4-5\nSkipping will fillet 0-2-6 and 1-3-5.\n all - group - skip -\n\t\t\n inc - Determines the number of primitives to be either grouped or skipped.\n\n\n\t\t\n loop - Connects the beginning of the first primitive to the end of the last primitive filleted, or, if only one primitive exists, it creates a fillet between its ends.\n\n\n\t\t\n dir - - This menu determines the parametric direction of the filleting operation, which can be in U or in V, and is meaningful only when the inputs are surfaces. The U direction is associated with columns; the V direction refers to rows.\n\n ujoin - vjoin -\n\t\t\n fillettype - - Select which type of fillet to use in this menu.\n\n freeform - Allows full specifications of the fillet. convex - May negate scale values to ensure convex fillets. circular - Attempts to build a fillet as close to a radial arc as the shape and orientation of the inputs permit. You do not need to specify a radius - it is automatically determined to ensure a smooth connection between the inputs. As the two inputs come into proximity of each other, the fillet radius decreases. The tangent scales are ignored (as in the Bridge SOP); only the sign of the tangent is taken into account in order to save you from needing to flip the normals of either input.\n\t\t\n primtype - - Select what type of primitive will be created by the fillet in this menu.\n\n input - Builds a fillet of the matching type between pairs of primitives. If the pair of primitives are different types, then the most general type is used (i.e. NURBS over Bzier, Bzier over polygons).\n polygon - Builds a polygonal fillet between pairs of primitives.\n nurbs - Builds a NURBS fillet between pairs of primitives at the given order.\n bezier - Builds a Bzier fillet between pairs of primitives at the given order.\n\t\t\n order - Order at which to build the spline fillets.\n\n\n\t\t\n leftuv - - Parametric point on each left primitive at which to begin the fillet.\n\nleftuv1 -leftuv2 -\n\t\t\n rightuv - - Parametric point on each right primitive at which to begin the fillet.\n\nrightuv1 -rightuv2 -\n\t\t\n lrwidth - - The first value represents the proportion of the left primitive that the left end of the fillet spans. The second value represents the proportion of the right primitive that the right end of the fillet spans.\n\nlrwidth1 -lrwidth2 -\n\t\t\n lrscale - - Use to control the direction and scale of the first and last segments of the fillet.\n\nlrscale1 -lrscale2 -\n\t\t\n lroffset - - Controls the position of the first and last segments of the fillet.\n\nlroffset1 -lroffset2 -\n\t\t\n seamless - If selected, then the inputs are modified in such a way that the isoparms appear continuous from one primitive, through the fillet to the other primitive. Also, the primitives are promoted to the same type and order. This will minimize if not eliminate any artifacts introduced in rendering at the cost of more refined geometry.\n\n\n\t\t\n cut - If selected, the primitives are trimmed at the point the fillet begins.\n\n\n\n\n\n -\n -\n\nExtra Information for the Fillet 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\\n2022.241402021.100002018.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\nA surface type in SOPs that includes polygon, curve (NURBS and Bezier), patch (NURBS and Bezier) and other basic shapes like sphere, tube and metaball. Points and Primitives are part of the Geometry Detail, which is a part of a SOP.\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\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=Fillet_SOP&oldid=24190\"\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-08T00:37:43.707Z",
"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": "The Fillet is used to create smooth bridging geometry between two curves / polygons or two surfaces / meshes.\t\nFilleting creates a new primitive between each input pair and never affects the original shapes. This is in contrast to the Join and Stitch SOPs. The Join SOP converts and possibly changes the connected ends of primitives, and stitching changes the original shapes but does not change the number of resulting primitives.\t\t\nPlease refer to the Align SOP for a discussion of \"left\" and \"right\" primitives as well as the option of an auxiliary input.\t\t\nNote: Trim curves are not taken into account by a fillet. To do this, use the Join .\nfilletSOP_Class\n\nContents\n \n \n \n \n \n \n\n\n\n\n\n group - Which primitives to fillet. If blank, it fillets the entire input. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\n fillet - - Can optionally fillet subgroups of N primitives or every nth primitive in a cyclical manner.\t\nExample: Assume there are six primitives numbered for 0 - 5, and N = 2. Then: \t\t\n\nGroups will fillet 0-1 2-3 4-5\nSkipping will fillet 0-2-6 and 1-3-5.\n all - group - skip -\n\t\t\n inc - Determines the number of primitives to be either grouped or skipped.\n\n\n\t\t\n loop - Connects the beginning of the first primitive to the end of the last primitive filleted, or, if only one primitive exists, it creates a fillet between its ends.\n\n\n\t\t\n dir - - This menu determines the parametric direction of the filleting operation, which can be in U or in V, and is meaningful only when the inputs are surfaces. The U direction is associated with columns; the V direction refers to rows.\n\n ujoin - vjoin -\n\t\t\n fillettype - - Select which type of fillet to use in this menu.\n\n freeform - Allows full specifications of the fillet. convex - May negate scale values to ensure convex fillets. circular - Attempts to build a fillet as close to a radial arc as the shape and orientation of the inputs permit. You do not need to specify a radius - it is automatically determined to ensure a smooth connection between the inputs. As the two inputs come into proximity of each other, the fillet radius decreases. The tangent scales are ignored (as in the Bridge SOP); only the sign of the tangent is taken into account in order to save you from needing to flip the normals of either input.\n\t\t\n primtype - - Select what type of primitive will be created by the fillet in this menu.\n\n input - Builds a fillet of the matching type between pairs of primitives. If the pair of primitives are different types, then the most general type is used (i.e. NURBS over Bzier, Bzier over polygons).\n polygon - Builds a polygonal fillet between pairs of primitives.\n nurbs - Builds a NURBS fillet between pairs of primitives at the given order.\n bezier - Builds a Bzier fillet between pairs of primitives at the given order.\n\t\t\n order - Order at which to build the spline fillets.\n\n\n\t\t\n leftuv - - Parametric point on each left primitive at which to begin the fillet.\n\nleftuv1 -leftuv2 -\n\t\t\n rightuv - - Parametric point on each right primitive at which to begin the fillet.\n\nrightuv1 -rightuv2 -\n\t\t\n lrwidth - - The first value represents the proportion of the left primitive that the left end of the fillet spans. The second value represents the proportion of the right primitive that the right end of the fillet spans.\n\nlrwidth1 -lrwidth2 -\n\t\t\n lrscale - - Use to control the direction and scale of the first and last segments of the fillet.\n\nlrscale1 -lrscale2 -\n\t\t\n lroffset - - Controls the position of the first and last segments of the fillet.\n\nlroffset1 -lroffset2 -\n\t\t\n seamless - If selected, then the inputs are modified in such a way that the isoparms appear continuous from one primitive, through the fillet to the other primitive. Also, the primitives are promoted to the same type and order. This will minimize if not eliminate any artifacts introduced in rendering at the cost of more refined geometry.\n\n\n\t\t\n cut - If selected, the primitives are trimmed at the point the fillet begins.\n\n\n\n\n\n -\n -\n\nExtra Information for the Fillet 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\\n2022.241402021.100002018.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\nA surface type in SOPs that includes polygon, curve (NURBS and Bezier), patch (NURBS and Bezier) and other basic shapes like sphere, tube and metaball. Points and Primitives are part of the Geometry Detail, which is a part of a SOP.\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\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=Fillet_SOP&oldid=24190\"",
"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-08T00:37:43.708Z",
"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 - Which primitives to fillet. If blank, it fillets the entire input. Accepts patterns, as described in Pattern Matching.",
"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-08T00:37:43.708Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Fillet",
"label": "Fillet",
"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": "fillet - - Can optionally fillet subgroups of N primitives or every nth primitive in a cyclical manner.\t\nExample: Assume there are six primitives numbered for 0 - 5, and N = 2. Then: \t\t\n\nGroups will fillet 0-1 2-3 4-5\nSkipping will fillet 0-2-6 and 1-3-5.\n all - group - skip -",
"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-08T00:37:43.708Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "All Primitives",
"label": "All Primitives",
"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 - group - skip -",
"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-08T00:37:43.708Z",
"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 - Determines the number of primitives to be either grouped or skipped.",
"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-08T00:37:43.708Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Wrap Last to First",
"label": "Wrap Last to First",
"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": "loop - Connects the beginning of the first primitive to the end of the last primitive filleted, or, if only one primitive exists, it creates a fillet between its ends.",
"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-08T00:37:43.708Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Direction",
"label": "Direction",
"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": "dir - - This menu determines the parametric direction of the filleting operation, which can be in U or in V, and is meaningful only when the inputs are surfaces. The U direction is associated with columns; the V direction refers to rows.\n\n ujoin - vjoin -",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "in U",
"label": "in U",
"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": "ujoin - vjoin -",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Fillet Type",
"label": "Fillet Type",
"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": "fillettype - - Select which type of fillet to use in this menu.\n\n freeform - Allows full specifications of the fillet. convex - May negate scale values to ensure convex fillets. circular - Attempts to build a fillet as close to a radial arc as the shape and orientation of the inputs permit. You do not need to specify a radius - it is automatically determined to ensure a smooth connection between the inputs. As the two inputs come into proximity of each other, the fillet radius decreases. The tangent scales are ignored (as in the Bridge SOP); only the sign of the tangent is taken into account in order to save you from needing to flip the normals of either 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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Freeform",
"label": "Freeform",
"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": "freeform - Allows full specifications of the fillet. convex - May negate scale values to ensure convex fillets. circular - Attempts to build a fillet as close to a radial arc as the shape and orientation of the inputs permit. You do not need to specify a radius - it is automatically determined to ensure a smooth connection between the inputs. As the two inputs come into proximity of each other, the fillet radius decreases. The tangent scales are ignored (as in the Bridge SOP); only the sign of the tangent is taken into account in order to save you from needing to flip the normals of either 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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Primitive Type",
"label": "Primitive Type",
"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": "primtype - - Select what type of primitive will be created by the fillet in this menu.\n\n input - Builds a fillet of the matching type between pairs of primitives. If the pair of primitives are different types, then the most general type is used (i.e. NURBS over Bzier, Bzier over polygons).\n polygon - Builds a polygonal fillet between pairs of primitives.\n nurbs - Builds a NURBS fillet between pairs of primitives at the given order.\n bezier - Builds a Bzier fillet between pairs of primitives at the given 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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Input Geometry Type",
"label": "Input Geometry Type",
"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": "input - Builds a fillet of the matching type between pairs of primitives. If the pair of primitives are different types, then the most general type is used (i.e. NURBS over Bzier, Bzier over polygons).\n polygon - Builds a polygonal fillet between pairs of primitives.\n nurbs - Builds a NURBS fillet between pairs of primitives at the given order.\n bezier - Builds a Bzier fillet between pairs of primitives at the given 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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Order",
"label": "Order",
"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": "order - Order at which to build the spline fillets.",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Left UV",
"label": "Left UV",
"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": "leftuv - - Parametric point on each left primitive at which to begin the fillet.\n\nleftuv1 -leftuv2 -",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Right UV",
"label": "Right UV",
"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": "rightuv - - Parametric point on each right primitive at which to begin the fillet.\n\nrightuv1 -rightuv2 -",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "LR Width",
"label": "LR Width",
"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": "lrwidth - - The first value represents the proportion of the left primitive that the left end of the fillet spans. The second value represents the proportion of the right primitive that the right end of the fillet spans.\n\nlrwidth1 -lrwidth2 -",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "LR Scale",
"label": "LR Scale",
"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": "lrscale - - Use to control the direction and scale of the first and last segments of the fillet.\n\nlrscale1 -lrscale2 -",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "LR Offset",
"label": "LR Offset",
"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": "lroffset - - Controls the position of the first and last segments of the fillet.\n\nlroffset1 -lroffset2 -",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Match Input to Fillets",
"label": "Match Input to Fillets",
"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": "seamless - If selected, then the inputs are modified in such a way that the isoparms appear continuous from one primitive, through the fillet to the other primitive. Also, the primitives are promoted to the same type and order. This will minimize if not eliminate any artifacts introduced in rendering at the cost of more refined 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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Cut Primitives",
"label": "Cut Primitives",
"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": "cut - If selected, the primitives are trimmed at the point the fillet begins.",
"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-08T00:37:43.709Z",
"rawData": {},
"sourceElement": null
}
],
"parameterGroups": {},
"codeExamples": [],
"pythonExamples": [],
"expressions": [],
"commonInputs": [],
"commonOutputs": [],
"relatedOperators": [],
"workflowPatterns": [],
"images": [],
"videos": [],
"assets": [],
"keywords": [
"fillet",
"used",
"create",
"smooth",
"bridging",
"geometry",
"between",
"curves",
"polygons",
"surfaces"
],
"tags": [
"SOP",
"TouchDesigner",
"Fillet"
],
"searchWeight": 1,
"contentHash": "",
"processingDate": "2025-08-08T00:37:43.710Z",
"processingVersion": "1.0.0",
"isValid": true,
"validationErrors": []
}