{
  "id": "twist",
  "name": "Twist",
  "displayName": "Twist",
  "category": "SOP",
  "subcategory": "Deformers",
  "version": "",
  "lastUpdated": "2025-08-08T00:37:55.529Z",
  "sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Twist_SOP.htm",
  "url": "",
  "description": "The Twist SOP performs non-linear deformations such as bend, linear taper, shear, squash and stretch, taper and twist. Each deformation will distort the object in one or more axes.",
  "summary": "The Twist SOP performs non-linear deformations such as bend, linear taper, shear, squash and stretch, taper and twist. Each deformation will distort the object in one or more axes.",
  "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 Twist  performs non-linear deformations such as bend, linear taper, shear, squash and stretch, taper and twist. Each deformation will distort the object in one or more axes.\ntwistSOP_Class\n\nContents\n \n \n \n \n \n \n\n\n\n\n\n  group - If there are input groups, specifying a group name in this field will cause this  to act only upon the group specified. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\n  op -  - This menu allows you to select a type of non-linear deformation. Select from the following options:\n\n twist - Rotates the input geometry around the Primary Axis. bend - Bends the input geometry about the Primary Axis while keeping points on the Secondary Axis stationary. shear - Shears the input geometry along the Secondary Axis while looking down the Primary Axis. taper - Tapers the input geometry along the Secondary Axis while looking down the Primary Axis. ltaper - Tapers the input geometry as with the Taper option; however, only the edges remain straight through the Taper operation. squash - Traditional animator's bounce tools.\n\t\t\n  paxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.\n\t\t\n  saxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.\n\t\t\n  p -  - This field allows you to choose the origin of the deformation.\n\n px - py - pz -\n\t\t\n  strength - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.\n\n\n\t\t\n  roll - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.\n\n\n\n\n\n -\n\nExtra Information for the Twist  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\\n2021.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\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=Twist_SOP&oldid=24249\"\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:55.525Z",
      "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 Twist  performs non-linear deformations such as bend, linear taper, shear, squash and stretch, taper and twist. Each deformation will distort the object in one or more axes.\ntwistSOP_Class\n\nContents\n \n \n \n \n \n \n\n\n\n\n\n  group - If there are input groups, specifying a group name in this field will cause this  to act only upon the group specified. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\n  op -  - This menu allows you to select a type of non-linear deformation. Select from the following options:\n\n twist - Rotates the input geometry around the Primary Axis. bend - Bends the input geometry about the Primary Axis while keeping points on the Secondary Axis stationary. shear - Shears the input geometry along the Secondary Axis while looking down the Primary Axis. taper - Tapers the input geometry along the Secondary Axis while looking down the Primary Axis. ltaper - Tapers the input geometry as with the Taper option; however, only the edges remain straight through the Taper operation. squash - Traditional animator's bounce tools.\n\t\t\n  paxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.\n\t\t\n  saxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.\n\t\t\n  p -  - This field allows you to choose the origin of the deformation.\n\n px - py - pz -\n\t\t\n  strength - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.\n\n\n\t\t\n  roll - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.\n\n\n\n\n\n -\n\nExtra Information for the Twist  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\\n2021.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\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=Twist_SOP&oldid=24249\"\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:55.526Z",
      "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 Twist  performs non-linear deformations such as bend, linear taper, shear, squash and stretch, taper and twist. Each deformation will distort the object in one or more axes.\ntwistSOP_Class\n\nContents\n \n \n \n \n \n \n\n\n\n\n\n  group - If there are input groups, specifying a group name in this field will cause this  to act only upon the group specified. Accepts patterns, as described in Pattern Matching.\n\n\n\t\t\n  op -  - This menu allows you to select a type of non-linear deformation. Select from the following options:\n\n twist - Rotates the input geometry around the Primary Axis. bend - Bends the input geometry about the Primary Axis while keeping points on the Secondary Axis stationary. shear - Shears the input geometry along the Secondary Axis while looking down the Primary Axis. taper - Tapers the input geometry along the Secondary Axis while looking down the Primary Axis. ltaper - Tapers the input geometry as with the Taper option; however, only the edges remain straight through the Taper operation. squash - Traditional animator's bounce tools.\n\t\t\n  paxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.\n\t\t\n  saxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.\n\t\t\n  p -  - This field allows you to choose the origin of the deformation.\n\n px - py - pz -\n\t\t\n  strength - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.\n\n\n\t\t\n  roll - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.\n\n\n\n\n\n -\n\nExtra Information for the Twist  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\\n2021.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\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=Twist_SOP&oldid=24249\"",
      "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:55.528Z",
      "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 - If there are input groups, specifying a group name in this field will cause this  to act only upon the group specified. 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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Operation",
      "label": "Operation",
      "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": "op -  - This menu allows you to select a type of non-linear deformation. Select from the following options:\n\n twist - Rotates the input geometry around the Primary Axis. bend - Bends the input geometry about the Primary Axis while keeping points on the Secondary Axis stationary. shear - Shears the input geometry along the Secondary Axis while looking down the Primary Axis. taper - Tapers the input geometry along the Secondary Axis while looking down the Primary Axis. ltaper - Tapers the input geometry as with the Taper option; however, only the edges remain straight through the Taper operation. squash - Traditional animator's bounce tools.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Twist",
      "label": "Twist",
      "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": "twist - Rotates the input geometry around the Primary Axis. bend - Bends the input geometry about the Primary Axis while keeping points on the Secondary Axis stationary. shear - Shears the input geometry along the Secondary Axis while looking down the Primary Axis. taper - Tapers the input geometry along the Secondary Axis while looking down the Primary Axis. ltaper - Tapers the input geometry as with the Taper option; however, only the edges remain straight through the Taper operation. squash - Traditional animator's bounce tools.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Primary Axis",
      "label": "Primary Axis",
      "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": "paxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "X Axis",
      "label": "X Axis",
      "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": "x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Secondary Axis",
      "label": "Secondary Axis",
      "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": "saxis -  - These menus allows you to select the primary and secondary axes for the deformation. The selected deformation will first occur in the Primary Axis and then the Secondary Axis.\n\n x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "X Axis",
      "label": "X Axis",
      "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": "x - This field allows you to choose the origin of the deformation. y - This field allows you to choose the origin of the deformation. z - This field allows you to choose the origin of the deformation.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Pivot",
      "label": "Pivot",
      "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": "p -  - This field allows you to choose the origin of the deformation.\n\n px - py - pz -",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "X",
      "label": "X",
      "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": "px - py - pz -",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Strength",
      "label": "Strength",
      "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": "strength - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Rolloff",
      "label": "Rolloff",
      "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": "roll - The Strength of the effect being applied. The Rolloff determines an accentuation of the effect being applied. When you are using different types of transformations this Strength / Roll will have different effects:\t\nBend - Strength and Roll are used to control the extremities of the geometry (try a value of 0.5).\nTwist - Strength and Roll are used to affect the twist amount based on the distance.\nShear - Strength and Roll are used to affect the shear amount based on distance.\nTaper - Strength and Roll are used to affect the direction of the bow (inwards vs. outwards).\nLinear Taper - Strength and Roll have no effect for this option.\nSquash and Stretch - Strength and Roll are used to maintain the apparent volume of the source geometry.Typically, Rolloff should equal 1 - which spreads the effect evenly (although not being limited to) across the bounds of the geometry. Values higher than 1 iterate the effect multiple times through the same range. If Rolloff equals 0, then the effect may be localised to a small segment at the centre of the deformed geometry and Strength may not appear to work properly.\t\t\nNote: To be certain to see the effects of the Twist , make sure you have enough divisions along the edges. By using a centre that is different from that of the object you can improve your control of the object. Try moving the pivot point to the bottom of an object that you are squashing and stretching.",
      "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:55.528Z",
      "rawData": {},
      "sourceElement": null
    }
  ],
  "parameterGroups": {},
  "codeExamples": [],
  "pythonExamples": [],
  "expressions": [],
  "commonInputs": [],
  "commonOutputs": [],
  "relatedOperators": [],
  "workflowPatterns": [],
  "images": [],
  "videos": [],
  "assets": [],
  "keywords": [
    "twist",
    "performs",
    "non-linear",
    "deformations",
    "such",
    "bend,",
    "linear",
    "taper,",
    "shear,",
    "squash"
  ],
  "tags": [
    "SOP",
    "TouchDesigner",
    "Twist"
  ],
  "searchWeight": 1,
  "contentHash": "",
  "processingDate": "2025-08-08T00:37:55.529Z",
  "processingVersion": "1.0.0",
  "isValid": true,
  "validationErrors": []
}