@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
946 lines • 58.2 kB
JSON
{
"id": "bridge",
"name": "Bridge",
"displayName": "Bridge",
"category": "SOP",
"subcategory": "Generators",
"version": "",
"lastUpdated": "2025-08-08T00:37:40.074Z",
"sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Bridge_SOP.htm",
"url": "",
"description": "The Bridge SOP is useful for skinning trimmed surfaces, holes, creating highly controllable joins between arms and body, branches or tube intersections.",
"summary": "The Bridge SOP is useful for skinning trimmed surfaces, holes, creating highly controllable joins between arms and body, branches or tube intersections.",
"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 Bridge is useful for skinning trimmed surfaces, holes, creating highly controllable joins between arms and body, branches or tube intersections.\t\t\nThe Bridge is similar to the Skin but with much greater control over the resulting surface. Given a set of profiles (i.e. curves on surface) and/or spatial faces, the Bridge builds a NURBS skin with specified tangent and curvature characteristics. The precision of the resulting surface is highly dependent on the number of required cross-sections and on the quality of the profile extraction. High precisions will generate a very dense surface with, potentially, many multiple knots.\t\t\t\nIn general, the higher the order of the curve, the better the fit the Bridge will be able to provide. However, it is generally better to stick to cubics (order 4) curves, as the software is optimized for cubics.\t\t\t\nBecause the Bridge can join both a set of spatial curves and trim curves, it can be used much like the Skin and/or the Fillet . However, bridging trimmed surfaces is more expensive than bridging carved surfaces.\t\t\t\nYou will usually need a Trim, Bridge, or Profile after a Project .\t\t\t\n\nUse a Trim to cut a hole in the projected surface\nUse a Bridge SOPto skin the profile curve to another profile curve.\nUse a Profile to extract the curve on surface or remap it's position.Note: To texture-map the resulting skin, use an Orthographic projection rather than a Spline-based projection. This results in better continuity across the surfaces.\nbridgeSOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n group - The edit field allows you to enter profile groups for profiles and/or faces to bridge. This is optional if you have regular geometric curves or surfaces, however, you must enter something here in order for Bridge to work with profile curves. For example *.0 will Bridge the 0th (first) profiles of all incoming primitives.\t\t\nNote: Always specify the curves on surface if you want the Bridge bridge curves on surfaces; otherwise it will attempt to bridge free-floating curves.\n\n\n\t\t\t\n bridge - - Allows bridging of subgroups of N primitives or patterns of primitives.\n\n all - group - skip -\n\t\t\t\n inc - Determines the pattern of primitives to bridge using this .\n\n\n\t\t\t\n order - Sets the spline order for both profile extraction and skinning operations.\n\n\n\n\n\n isodivs - The minimum number of cross-sections in the resulting skin. If you create a high-density surface, TouchDesigner's level of detail may display the surface less smoothly than it actually is. You can increase the level of detail by adjusting the viewdisplay options (e.g. viewdisplay -l 1.5 SOPmain.persp1 ) for the Viewport.\t\nProduction Tip: If, in generating a smooth surface, you create an extremely complex surface, some of the complexity can be removed without damaging the appearance of the surface by appending a Refine , and using its Unrefine option. In the Refine , set the First U parameter to zero and, in the Unrefine option's parameters, set the U value close to the order of the surface created in the Bridge .\n\n\n\t\t\n frenet - - Specifies the type of normal to use for computing direction:\n\n frenet - The Frenet Frame of the face. This option uses a local coordinate system on the curve to compute the direction. normal - The Normal of the face.\n\t\t\n circular - Tells TouchDesigner to try to generate a round fillet rather than a free-form fillet. Only the sign (positive or negative) of the tangent scales is used; the scale magnitude is ignored when building a circular fillet.\t\nThe radius of the fillet is computed automatically and adjusted according to the distance between the rails (curves and/or profiles) and their tangents.\n\n\n\t\t\n rotatet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nrotatet1 - Applies to the first face in the input.rotatet2 - Applies to all intermediate faces.rotatet3 - Applies to the last face in the input.\n\t\t\n scalet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nscalet1 - Applies to the first face in the input.scalet2 - Applies to all intermediate faces.scalet3 - Applies to the last face in the input.\n\t\t\n curvature - Takes curvature into consideration as well.\n\n\n\t\t\n scalec - - Further scaling of the curvature.\t\nNote: If the resulting skin bulges too greatly, you can achieve a smooth resulting transition between surfaces by disabling the & parameters, and manually tweaking the Tangent Scales and the Curvature Scales. In general, avoid tweaking the Rotations of the Tangents unless you wish to deform the resulting surface.\t\t\t\nIf the bridge bulges on one side but not the other, try increasing the in the bridge.\n\n\nscalec1 -scalec2 -scalec3 -\n\n\n\nThis page's parameters are similar to those found in the Fit and Project SOPs.\n\n sdivs - Number of 2-D points evaluated in each span.\n\n\n\t\t\n tolerance - Precision of 2-D fitting algorithm.\n\n\n\t\t\n csharp - Enables or disables fitting of sharp turns. If cracks appear in the resulting skin, is usually a good solution; however, it may add additional knots which can create undesirable \"ripples\" in some cases.\t\nIf this option is disabled, fewer isoparms are generated and the surface may not follow the contours of the profile curves perfectly unless the profile curves were built using the Preserve Sharp Corners option.\n\n\n\n\n\nPlace a Circle . Type: NURBS; Radius = 0.2, 0.2\nPlace a Grid . Type: NURBS.\nFeed both the Circle and Grid SOPs into a Project . Make it the display . You notice the projected circle on the grid - our trim curve.\nAppend a Trim and make it the display . Turn on Gouraud shading for the Viewport - you now see the trimmed holes in the surface of the grid.\nAppend a Copy . Number of Copies: 2; Translation Z: 1.0; Rotation X: 30. Make it the display . Now we have two grids with trimmed holes in them.\nAppend a Bridge , and make it the display . Scale Tangents: 0, 0, 0; Use Curvature: On; Preserve Curvature Magnitudes: Off; Scale Curvatures: 3, 3, 3 . Nothing happens. Why?\nWe need to specify which profile curves to skin. Turn on Profile Numbers in the Viewport options (click M at the bottom-right of Viewport, and enable the icon). We can see the profile numbers of the two trim curves are 0.0 and 1.0 - meaning the 0th profile of the 0th primitive and the 0th profile of the 1st primitive). The strange numbering is because primitive numbers start at 0 instead of 1.\nIn the Bridge 's Group field enter: .0 - this means to include the 0th (first) curve from all (the * wildcard character) primitives in the skin. You now see the resulting bridge between the two trim curves. The skin bulges outwards.\nWe can control the bulge by playing with the Scale Curvatures and the Tangent Magnitudes. Set the Scale Curvatures to: -3, -3, -3 . Now we have an inward-bulging tube connecting the two holes.\nExperiment with moving the location and size of the holes (change the Translation and Radius in the Circle ). The Bridge dynamically updates the geometry connecting the two surfaces. Setting the Scale Curvature to: 0, 0, 0 produces a straight-through connection between the two holes.\n\n -\n\nExtra Information for the Bridge 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\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=Bridge_SOP&oldid=24173\"\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:40.068Z",
"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 Bridge is useful for skinning trimmed surfaces, holes, creating highly controllable joins between arms and body, branches or tube intersections.\t\t\nThe Bridge is similar to the Skin but with much greater control over the resulting surface. Given a set of profiles (i.e. curves on surface) and/or spatial faces, the Bridge builds a NURBS skin with specified tangent and curvature characteristics. The precision of the resulting surface is highly dependent on the number of required cross-sections and on the quality of the profile extraction. High precisions will generate a very dense surface with, potentially, many multiple knots.\t\t\t\nIn general, the higher the order of the curve, the better the fit the Bridge will be able to provide. However, it is generally better to stick to cubics (order 4) curves, as the software is optimized for cubics.\t\t\t\nBecause the Bridge can join both a set of spatial curves and trim curves, it can be used much like the Skin and/or the Fillet . However, bridging trimmed surfaces is more expensive than bridging carved surfaces.\t\t\t\nYou will usually need a Trim, Bridge, or Profile after a Project .\t\t\t\n\nUse a Trim to cut a hole in the projected surface\nUse a Bridge SOPto skin the profile curve to another profile curve.\nUse a Profile to extract the curve on surface or remap it's position.Note: To texture-map the resulting skin, use an Orthographic projection rather than a Spline-based projection. This results in better continuity across the surfaces.\nbridgeSOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n group - The edit field allows you to enter profile groups for profiles and/or faces to bridge. This is optional if you have regular geometric curves or surfaces, however, you must enter something here in order for Bridge to work with profile curves. For example *.0 will Bridge the 0th (first) profiles of all incoming primitives.\t\t\nNote: Always specify the curves on surface if you want the Bridge bridge curves on surfaces; otherwise it will attempt to bridge free-floating curves.\n\n\n\t\t\t\n bridge - - Allows bridging of subgroups of N primitives or patterns of primitives.\n\n all - group - skip -\n\t\t\t\n inc - Determines the pattern of primitives to bridge using this .\n\n\n\t\t\t\n order - Sets the spline order for both profile extraction and skinning operations.\n\n\n\n\n\n isodivs - The minimum number of cross-sections in the resulting skin. If you create a high-density surface, TouchDesigner's level of detail may display the surface less smoothly than it actually is. You can increase the level of detail by adjusting the viewdisplay options (e.g. viewdisplay -l 1.5 SOPmain.persp1 ) for the Viewport.\t\nProduction Tip: If, in generating a smooth surface, you create an extremely complex surface, some of the complexity can be removed without damaging the appearance of the surface by appending a Refine , and using its Unrefine option. In the Refine , set the First U parameter to zero and, in the Unrefine option's parameters, set the U value close to the order of the surface created in the Bridge .\n\n\n\t\t\n frenet - - Specifies the type of normal to use for computing direction:\n\n frenet - The Frenet Frame of the face. This option uses a local coordinate system on the curve to compute the direction. normal - The Normal of the face.\n\t\t\n circular - Tells TouchDesigner to try to generate a round fillet rather than a free-form fillet. Only the sign (positive or negative) of the tangent scales is used; the scale magnitude is ignored when building a circular fillet.\t\nThe radius of the fillet is computed automatically and adjusted according to the distance between the rails (curves and/or profiles) and their tangents.\n\n\n\t\t\n rotatet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nrotatet1 - Applies to the first face in the input.rotatet2 - Applies to all intermediate faces.rotatet3 - Applies to the last face in the input.\n\t\t\n scalet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nscalet1 - Applies to the first face in the input.scalet2 - Applies to all intermediate faces.scalet3 - Applies to the last face in the input.\n\t\t\n curvature - Takes curvature into consideration as well.\n\n\n\t\t\n scalec - - Further scaling of the curvature.\t\nNote: If the resulting skin bulges too greatly, you can achieve a smooth resulting transition between surfaces by disabling the & parameters, and manually tweaking the Tangent Scales and the Curvature Scales. In general, avoid tweaking the Rotations of the Tangents unless you wish to deform the resulting surface.\t\t\t\nIf the bridge bulges on one side but not the other, try increasing the in the bridge.\n\n\nscalec1 -scalec2 -scalec3 -\n\n\n\nThis page's parameters are similar to those found in the Fit and Project SOPs.\n\n sdivs - Number of 2-D points evaluated in each span.\n\n\n\t\t\n tolerance - Precision of 2-D fitting algorithm.\n\n\n\t\t\n csharp - Enables or disables fitting of sharp turns. If cracks appear in the resulting skin, is usually a good solution; however, it may add additional knots which can create undesirable \"ripples\" in some cases.\t\nIf this option is disabled, fewer isoparms are generated and the surface may not follow the contours of the profile curves perfectly unless the profile curves were built using the Preserve Sharp Corners option.\n\n\n\n\n\nPlace a Circle . Type: NURBS; Radius = 0.2, 0.2\nPlace a Grid . Type: NURBS.\nFeed both the Circle and Grid SOPs into a Project . Make it the display . You notice the projected circle on the grid - our trim curve.\nAppend a Trim and make it the display . Turn on Gouraud shading for the Viewport - you now see the trimmed holes in the surface of the grid.\nAppend a Copy . Number of Copies: 2; Translation Z: 1.0; Rotation X: 30. Make it the display . Now we have two grids with trimmed holes in them.\nAppend a Bridge , and make it the display . Scale Tangents: 0, 0, 0; Use Curvature: On; Preserve Curvature Magnitudes: Off; Scale Curvatures: 3, 3, 3 . Nothing happens. Why?\nWe need to specify which profile curves to skin. Turn on Profile Numbers in the Viewport options (click M at the bottom-right of Viewport, and enable the icon). We can see the profile numbers of the two trim curves are 0.0 and 1.0 - meaning the 0th profile of the 0th primitive and the 0th profile of the 1st primitive). The strange numbering is because primitive numbers start at 0 instead of 1.\nIn the Bridge 's Group field enter: .0 - this means to include the 0th (first) curve from all (the * wildcard character) primitives in the skin. You now see the resulting bridge between the two trim curves. The skin bulges outwards.\nWe can control the bulge by playing with the Scale Curvatures and the Tangent Magnitudes. Set the Scale Curvatures to: -3, -3, -3 . Now we have an inward-bulging tube connecting the two holes.\nExperiment with moving the location and size of the holes (change the Translation and Radius in the Circle ). The Bridge dynamically updates the geometry connecting the two surfaces. Setting the Scale Curvature to: 0, 0, 0 produces a straight-through connection between the two holes.\n\n -\n\nExtra Information for the Bridge 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\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=Bridge_SOP&oldid=24173\"\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:40.070Z",
"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 Bridge is useful for skinning trimmed surfaces, holes, creating highly controllable joins between arms and body, branches or tube intersections.\t\t\nThe Bridge is similar to the Skin but with much greater control over the resulting surface. Given a set of profiles (i.e. curves on surface) and/or spatial faces, the Bridge builds a NURBS skin with specified tangent and curvature characteristics. The precision of the resulting surface is highly dependent on the number of required cross-sections and on the quality of the profile extraction. High precisions will generate a very dense surface with, potentially, many multiple knots.\t\t\t\nIn general, the higher the order of the curve, the better the fit the Bridge will be able to provide. However, it is generally better to stick to cubics (order 4) curves, as the software is optimized for cubics.\t\t\t\nBecause the Bridge can join both a set of spatial curves and trim curves, it can be used much like the Skin and/or the Fillet . However, bridging trimmed surfaces is more expensive than bridging carved surfaces.\t\t\t\nYou will usually need a Trim, Bridge, or Profile after a Project .\t\t\t\n\nUse a Trim to cut a hole in the projected surface\nUse a Bridge SOPto skin the profile curve to another profile curve.\nUse a Profile to extract the curve on surface or remap it's position.Note: To texture-map the resulting skin, use an Orthographic projection rather than a Spline-based projection. This results in better continuity across the surfaces.\nbridgeSOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n group - The edit field allows you to enter profile groups for profiles and/or faces to bridge. This is optional if you have regular geometric curves or surfaces, however, you must enter something here in order for Bridge to work with profile curves. For example *.0 will Bridge the 0th (first) profiles of all incoming primitives.\t\t\nNote: Always specify the curves on surface if you want the Bridge bridge curves on surfaces; otherwise it will attempt to bridge free-floating curves.\n\n\n\t\t\t\n bridge - - Allows bridging of subgroups of N primitives or patterns of primitives.\n\n all - group - skip -\n\t\t\t\n inc - Determines the pattern of primitives to bridge using this .\n\n\n\t\t\t\n order - Sets the spline order for both profile extraction and skinning operations.\n\n\n\n\n\n isodivs - The minimum number of cross-sections in the resulting skin. If you create a high-density surface, TouchDesigner's level of detail may display the surface less smoothly than it actually is. You can increase the level of detail by adjusting the viewdisplay options (e.g. viewdisplay -l 1.5 SOPmain.persp1 ) for the Viewport.\t\nProduction Tip: If, in generating a smooth surface, you create an extremely complex surface, some of the complexity can be removed without damaging the appearance of the surface by appending a Refine , and using its Unrefine option. In the Refine , set the First U parameter to zero and, in the Unrefine option's parameters, set the U value close to the order of the surface created in the Bridge .\n\n\n\t\t\n frenet - - Specifies the type of normal to use for computing direction:\n\n frenet - The Frenet Frame of the face. This option uses a local coordinate system on the curve to compute the direction. normal - The Normal of the face.\n\t\t\n circular - Tells TouchDesigner to try to generate a round fillet rather than a free-form fillet. Only the sign (positive or negative) of the tangent scales is used; the scale magnitude is ignored when building a circular fillet.\t\nThe radius of the fillet is computed automatically and adjusted according to the distance between the rails (curves and/or profiles) and their tangents.\n\n\n\t\t\n rotatet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nrotatet1 - Applies to the first face in the input.rotatet2 - Applies to all intermediate faces.rotatet3 - Applies to the last face in the input.\n\t\t\n scalet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nscalet1 - Applies to the first face in the input.scalet2 - Applies to all intermediate faces.scalet3 - Applies to the last face in the input.\n\t\t\n curvature - Takes curvature into consideration as well.\n\n\n\t\t\n scalec - - Further scaling of the curvature.\t\nNote: If the resulting skin bulges too greatly, you can achieve a smooth resulting transition between surfaces by disabling the & parameters, and manually tweaking the Tangent Scales and the Curvature Scales. In general, avoid tweaking the Rotations of the Tangents unless you wish to deform the resulting surface.\t\t\t\nIf the bridge bulges on one side but not the other, try increasing the in the bridge.\n\n\nscalec1 -scalec2 -scalec3 -\n\n\n\nThis page's parameters are similar to those found in the Fit and Project SOPs.\n\n sdivs - Number of 2-D points evaluated in each span.\n\n\n\t\t\n tolerance - Precision of 2-D fitting algorithm.\n\n\n\t\t\n csharp - Enables or disables fitting of sharp turns. If cracks appear in the resulting skin, is usually a good solution; however, it may add additional knots which can create undesirable \"ripples\" in some cases.\t\nIf this option is disabled, fewer isoparms are generated and the surface may not follow the contours of the profile curves perfectly unless the profile curves were built using the Preserve Sharp Corners option.\n\n\n\n\n\nPlace a Circle . Type: NURBS; Radius = 0.2, 0.2\nPlace a Grid . Type: NURBS.\nFeed both the Circle and Grid SOPs into a Project . Make it the display . You notice the projected circle on the grid - our trim curve.\nAppend a Trim and make it the display . Turn on Gouraud shading for the Viewport - you now see the trimmed holes in the surface of the grid.\nAppend a Copy . Number of Copies: 2; Translation Z: 1.0; Rotation X: 30. Make it the display . Now we have two grids with trimmed holes in them.\nAppend a Bridge , and make it the display . Scale Tangents: 0, 0, 0; Use Curvature: On; Preserve Curvature Magnitudes: Off; Scale Curvatures: 3, 3, 3 . Nothing happens. Why?\nWe need to specify which profile curves to skin. Turn on Profile Numbers in the Viewport options (click M at the bottom-right of Viewport, and enable the icon). We can see the profile numbers of the two trim curves are 0.0 and 1.0 - meaning the 0th profile of the 0th primitive and the 0th profile of the 1st primitive). The strange numbering is because primitive numbers start at 0 instead of 1.\nIn the Bridge 's Group field enter: .0 - this means to include the 0th (first) curve from all (the * wildcard character) primitives in the skin. You now see the resulting bridge between the two trim curves. The skin bulges outwards.\nWe can control the bulge by playing with the Scale Curvatures and the Tangent Magnitudes. Set the Scale Curvatures to: -3, -3, -3 . Now we have an inward-bulging tube connecting the two holes.\nExperiment with moving the location and size of the holes (change the Translation and Radius in the Circle ). The Bridge dynamically updates the geometry connecting the two surfaces. Setting the Scale Curvature to: 0, 0, 0 produces a straight-through connection between the two holes.\n\n -\n\nExtra Information for the Bridge 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\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=Bridge_SOP&oldid=24173\"",
"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:40.072Z",
"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 - The edit field allows you to enter profile groups for profiles and/or faces to bridge. This is optional if you have regular geometric curves or surfaces, however, you must enter something here in order for Bridge to work with profile curves. For example *.0 will Bridge the 0th (first) profiles of all incoming primitives.\t\t\nNote: Always specify the curves on surface if you want the Bridge bridge curves on surfaces; otherwise it will attempt to bridge free-floating curves.",
"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:40.072Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Bridge",
"label": "Bridge",
"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": "bridge - - Allows bridging of subgroups of N primitives or patterns of primitives.\n\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:40.072Z",
"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:40.072Z",
"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 pattern of primitives to bridge using this .",
"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:40.073Z",
"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 - Sets the spline order for both profile extraction and skinning operations.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Min X-Sections",
"label": "Min X-Sections",
"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": "isodivs - The minimum number of cross-sections in the resulting skin. If you create a high-density surface, TouchDesigner's level of detail may display the surface less smoothly than it actually is. You can increase the level of detail by adjusting the viewdisplay options (e.g. viewdisplay -l 1.5 SOPmain.persp1 ) for the Viewport.\t\nProduction Tip: If, in generating a smooth surface, you create an extremely complex surface, some of the complexity can be removed without damaging the appearance of the surface by appending a Refine , and using its Unrefine option. In the Refine , set the First U parameter to zero and, in the Unrefine option's parameters, set the U value close to the order of the surface created in the Bridge .",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Use",
"label": "Use",
"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": "frenet - - Specifies the type of normal to use for computing direction:\n\n frenet - The Frenet Frame of the face. This option uses a local coordinate system on the curve to compute the direction. normal - The Normal of the face.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "The Frenet Frame of the Face",
"label": "The Frenet Frame of the Face",
"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": "frenet - The Frenet Frame of the face. This option uses a local coordinate system on the curve to compute the direction. normal - The Normal of the face.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Circular Arc Fillet",
"label": "Circular Arc 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": "circular - Tells TouchDesigner to try to generate a round fillet rather than a free-form fillet. Only the sign (positive or negative) of the tangent scales is used; the scale magnitude is ignored when building a circular fillet.\t\nThe radius of the fillet is computed automatically and adjusted according to the distance between the rails (curves and/or profiles) and their tangents.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Rotate Tangents",
"label": "Rotate Tangents",
"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": "rotatet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nrotatet1 - Applies to the first face in the input.rotatet2 - Applies to all intermediate faces.rotatet3 - Applies to the last face 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-08T00:37:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Scale Tangents",
"label": "Scale Tangents",
"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": "scalet - - The scaling and rotation parameters contain three fields. The rotation fields (degrees) apply further rotation to the tangents, while the scale parameter further scales the tangents.\n\nscalet1 - Applies to the first face in the input.scalet2 - Applies to all intermediate faces.scalet3 - Applies to the last face 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-08T00:37:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Use Curvature",
"label": "Use Curvature",
"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": "curvature - Takes curvature into consideration as well.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Scale Curvatures",
"label": "Scale Curvatures",
"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": "scalec - - Further scaling of the curvature.\t\nNote: If the resulting skin bulges too greatly, you can achieve a smooth resulting transition between surfaces by disabling the & parameters, and manually tweaking the Tangent Scales and the Curvature Scales. In general, avoid tweaking the Rotations of the Tangents unless you wish to deform the resulting surface.\t\t\t\nIf the bridge bulges on one side but not the other, try increasing the in the bridge.\n\n\nscalec1 -scalec2 -scalec3 -",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Divisions per Span",
"label": "Divisions per Span",
"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": "sdivs - Number of 2-D points evaluated in each span.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Tolerance",
"label": "Tolerance",
"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": "tolerance - Precision of 2-D fitting algorithm.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Preserve Sharp Corners",
"label": "Preserve Sharp Corners",
"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": "csharp - Enables or disables fitting of sharp turns. If cracks appear in the resulting skin, is usually a good solution; however, it may add additional knots which can create undesirable \"ripples\" in some cases.\t\nIf this option is disabled, fewer isoparms are generated and the surface may not follow the contours of the profile curves perfectly unless the profile curves were built using the Preserve Sharp Corners option.",
"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:40.073Z",
"rawData": {},
"sourceElement": null
}
],
"parameterGroups": {},
"codeExamples": [],
"pythonExamples": [],
"expressions": [],
"commonInputs": [],
"commonOutputs": [],
"relatedOperators": [],
"workflowPatterns": [],
"images": [],
"videos": [],
"assets": [],
"keywords": [
"bridge",
"useful",
"skinning",
"trimmed",
"surfaces,",
"holes,",
"creating",
"highly",
"controllable",
"joins"
],
"tags": [
"SOP",
"TouchDesigner",
"Bridge"
],
"searchWeight": 1,
"contentHash": "",
"processingDate": "2025-08-08T00:37:40.074Z",
"processingVersion": "1.0.0",
"isValid": true,
"validationErrors": []
}