{
  "id": "point",
  "name": "Point",
  "displayName": "Point",
  "category": "SOP",
  "subcategory": "Generators",
  "version": "",
  "lastUpdated": "2025-08-08T00:37:51.194Z",
  "sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Point_SOP.htm",
  "url": "",
  "description": "The Point SOP allows you to get right into the geometry and manipulate the position, color, texture coordinates, and normals of the points in the Source, and other attributes. The Point SOP also lets you create custom point attributes. It is the complement to the Primitive SOP. Using a second input allows for combining of two SOPs using their respective expressions (see: PointSOP Class). If the second input has less points than the first input, the points in the second input will be cycled.",
  "summary": "The Point SOP allows you to get right into the geometry and manipulate the position, color, texture coordinates, and normals of the points in the Source, and other attributes. The Point SOP also lets ",
  "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   allows you to get right into the geometry and manipulate the position, color, texture coordinates, and normals of the points in the Source, and other attributes. The   also lets you create custom point attributes. It is the complement to the Primitive SOP. Using a second input allows for combining of two SOPs using their respective expressions (see: PointSOP Class). If the second input has less points than the first input, the points in the second input will be cycled.\t\t\nFor example, you can create point coloring, or flip the normals of incoming geometry. Using expressions in Position X, Y and Z, you can move any given input point to a new place as defined by the expression with any standard attributes. \t\t\nThe Width (width) attribute affects the line width in the Line MAT.  The Scale attribute (pscale) affects particle size, and in the Line MAT it affects the dot size at each point.\nTip: For greater flexibility, use the Script SOP.\npointSOP_Class\n\nContents\n \n \n \n\n \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\n  t -  - Expressions to translate the XYZ coordinates of a given point can be entered here. The attributes to modify here are: ,  and .\t\nSimply entering  into the Position X field means that the X coordinate of each point that comes in is passed straight through with no modification.\t\t\t\nChanging this entry to  means that the X coordinate of each point that comes in will be displaced by 5 units. This expression can be expanded to produce many useful effects. Transformations can also be effected in the Y and Z fields.\n\n\n tx - ty - tz -\n\n  doweight -  - Select between keeping the weight or adding a new weight.\n\n off - on -\n\n  weight - If you select 'New Weight' from the menu above, enter expressions here to control the values of the point weights here. The attribute to modify is: . Values for the weight of the point can range from 0.0001 to infinity.\n\n\n\n  doclr -  - Select between keeping the color, adding new color, or using no color.\n\n off - on - remove -\n\n  diff -  - If you select 'Add Color' from the menu above, Cd color attributes will be added/modified in the . Enter expressions below to control the values of the point colors. The attributes to modify are:  for red,  for green,  for blue, and  for alpha.\nIf you select 'No Color' from the menu above, the Cd color attribute will be removed from the .\n\n\n diffr - diffg - diffb -\n\n  alpha - Control the alpha attribute in the same manner as the rgb colors above. Alpha is Cd[3] and comes from input via \n\n\n\n  donml -  - Select between keeping the normals, adding new normals, or using no normals.\n\n off - on - remove -\n\n  n -  - If you select 'Add Normal' from the menu above, N normal attributes will be added/modified in the . Enter expressions to change a given point normal here.  normals are directional vectors used by other SOPs, such as Turbulence, Facet and Copy. See Attributes article for detailed information. The attributes to modify are: ,  and .\nIf you select 'No Normal' from the menu above, the N normal attribute will be removed from the .\n\n\n nx - ny - nz -\n\n\nYou can flip the point normals of incoming geometry by entering:\t\t\t\n\n  \n\t\t\t\nin the fields with this parameter set to Add Normals. This works, because it takes the existing normals \t\t\t\n\n  \n\t\t\nand inverts them (the preceding - ).\n\n  douvw -  - Select between keeping the texture coordinates, adding new texture coordinates, or using no texture coordinates.\n\n off - on - remove -\n\n  map -  - If you select 'Add Texture' from the menu above, uv texture coordinate attributes will be added/modified in the . Enter expressions here to control the values of the texture coordinates here. The attributes to modify are: ,  and .\nIf you select 'No Texture' from the menu above, the uv texture coordinate attribute will be removed from the .\n\n\n mapu - mapv - mapw -\n\n  dowidth -  - Select between keeping the width attribute or adding a new width. This Width (width) attribute is used exclusively with Line MAT to control line width when the material is rendered.\n\n off - on -\n\n  width - If you select 'New Width' from the menu above, width attribute will be added/modified in the . Enter expressions here to control the values of the point widths here. The attribute to modify is: .\n\n\n\n  dopscale -  - Select between keeping the scale attribute, adding new scale, or using no scale. This scale (pscale) attribute is used with the Particle SOP and acts as a multiplier for the size of particles. The value of this attribute is multiplied by the size specified in the Particle SOP's render attributes to scale each particle. This attribute is used by the Point Sprite MAT when rendering point sprites.\n\n off - on - remove -\n\n  pscale - If you select 'Add Scale' from the menu above, pscale attribute will be added/modified in the . Enter expressions here to control the values of the point particle scales here. The attribute to modify is: .\nIf you select 'No Scale' from the menu above, the pscale attribute will be removed from the .\n\n\n\n\n\n  attr - Sequence of custom attributes to add\n\n\n\n  attr0name - Creates a custom attribute with this name.\n\n\n\n  attr0type -  - The type of attribute created can be selected from this menu.\n\n float - vec2 - vec3 - vec4 - int - ivec2 - ivec3 - ivec4 -\n\n  attr0value -  - Set the values of the Custom Attrib using these parameters.\n\n attr0value1 - attr0value2 - attr0value3 - attr0value4 -\n\n\n\n\n  domass -  - Retains, adds, or removes mass and drag attributes for points.\n\n off - on - remove -\n\n  mass - If you select 'Add Mass/Drag' from the menu above, mass attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the mass attribute will be removed from the .\n\n\n\n  drag - If you select 'Add Mass/Drag' from the menu above, drag attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the drag attribute will be removed from the .\n\n\n\n  dotension - Tension affects the elasticity of the edges the point is connected to.\n\n\n\n  tension - If you select 'Add Tension' from the menu above, tension attribute will be added/modified in the . Enter expressions here to control the values of the tension here. The attribute to modify is: . If you select 'No Tension' from the menu above, the tension attribute will be removed from the .\n\n\n\n  dospringk -  - Retains, adds, or removes spring constant attributes for points. The Spring Constant is a well known physical property affecting each point.\n\n off - on - remove -\n\n  springk - If you select 'Add Spring K' from the menu above, springk attribute will be added/modified in the . Enter expressions here to control the values of the springk here. The attribute to modify is: . If you select 'No Spring K' from the menu above, the springk attribute will be removed from the .\n\n\n\n  dovel -  - Retains, adds, or removes the velocity of points. Defines the magnitude of the particle's velocity in the X, Y and Z directions.\n\n off - on - remove -\n\n  v -  - If you select 'Add Velocity' from the menu above, v velocity attributes will be added/modified in the . Enter expressions to change a given point velocity here. The attributes to modify here are: ,  and . If you select 'No Velocity' from the menu above, the v velocity attribute will be removed from the .\n\n vx - vy - vz -\n\n  doup -  - Creates/Removes the \"up\" attribute for points. This attribute defines an up vector which is used to fully define the space around a point (for particle instancing or copying geometry). The up vector can be used in conjunction with the copy template's normals to control the orientation of the copies in the Copy SOP.\n\n off - on - remove -\n\n  up -  - If you select 'Add Up Vector' from the menu above, up attributes will be added/modified in the . Enter expressions to change a given point up vector here. The attributes to modify here are: ,  and . If you select 'No Up Vector' from the menu above, the up attribute will be removed from the .\n\n upx - upy - upz -\n\n\n\n  doradius -  - Retains, adds, or removes radiusf attributes for points, used to modify the distance roll-off effect. The roll-off is: r /(r+d^2) Where r is radius, and d is distance from attractor point. If no radius is set, no attenuation is performed.\n\n off - on - remove -\n\n  radiusf - If you select 'Add Radius' from the menu above, radiusf attribute will be added/modified in the . Enter expressions here to control the values of the distance roll-off here. If you select 'No Radius' from the menu above, the radiusf attribute will be removed from the .\n\n\n\n  doscale -  - Retains, adds, or removes scalef attributes for points, a multiplier for total force associated with this attractor point.\t\nBoth Radius and Force Scale will default to 1 if not created as point attributes.\t\t\t\nRadial / Normal / Edge / Directional Force - These four parameters introduce a type of force when created and each has a corresponding multiplier associated with it.\n\n\n off - on - remove -\n\n  scalef - If you select 'Add F Scale' from the menu above, scalef attribute will be added/modified in the . Enter expressions here to control the values of the force multiplier here. If you select 'No F scale' from the menu above, the scalef attribute will be removed from the .\n\n\n\n  doradialf -  - Retains, adds, or removes radialf attributes for points, the force directed towards the attractor point. Positive multipliers are towards while negative are away.\n\n off - on - remove -\n\n  radialf - If you select 'Add Radial F' from the menu above, radialf attribute will be added/modified in the . Enter expressions here to control the values of the directed force here. If you select 'No Radial F' from the menu above, the radialf attribute will be removed from the .\n\n\n\n  donormalf -  - Retains, adds, or removes normalf attributes for points, the force directed along the point normal direction.\n\n off - on - remove -\n\n  normalf - If you select 'Add Normal F' from the menu above, normalf attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Normal F' from the menu above, the normalf attribute will be removed from the .\n\n\n\n  doedgef -  - Retains, adds, or removes edgef attributes for points, which only works on primitive face types. The force is directed in the direction of the edge leading from that point. If multiple vertices reference the same point, then the direction is the edge direction of the last primitive referencing the point.\t\nIf the face open, then the end point has an edge direction equal to that of the preceding point in that primitive.\t\t\t\nNote: When edge forces are added using the  , the force directions are computed in the   itself. Thus, any following transformations do not effect these. If you wish for the edge directions to be transformed as well, all transformations must be done before the  . Only the edge forces function like this.\n\n\n off - on - remove -\n\n  edgef - If you select 'Add Edge F' from the menu above, edgef attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Edge F' from the menu above, the edgef attribute will be removed from the .\n\n\n\n  dodirf -  - Retains, adds, or removes dirf attributes for points, an arbitrary directional force still affected by the distance roll-off function.\n\n off - on - remove -\n\n  dirf -  - If you select 'Add Dir. F' from the menu above, dirf attribute will be added/modified in the . Enter expressions here to control the values of the force in the arbitrary direction here. If you select 'No Dir. F' from the menu above, the dirf attribute will be removed from the .\n\n dirfx - dirfy - dirfz -\n\n\n\n -\n -\n\nExtra Information for the   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\\nwikieditorwikieditor2021.100002020.200002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\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\nMATs or Materials are an Operator Family that applies a Shader to a SOP or 3D Geometry Object for rendering textured surfaces with lighting.\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=Point_SOP&oldid=32295\"\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:51.182Z",
      "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   allows you to get right into the geometry and manipulate the position, color, texture coordinates, and normals of the points in the Source, and other attributes. The   also lets you create custom point attributes. It is the complement to the Primitive SOP. Using a second input allows for combining of two SOPs using their respective expressions (see: PointSOP Class). If the second input has less points than the first input, the points in the second input will be cycled.\t\t\nFor example, you can create point coloring, or flip the normals of incoming geometry. Using expressions in Position X, Y and Z, you can move any given input point to a new place as defined by the expression with any standard attributes. \t\t\nThe Width (width) attribute affects the line width in the Line MAT.  The Scale attribute (pscale) affects particle size, and in the Line MAT it affects the dot size at each point.\nTip: For greater flexibility, use the Script SOP.\npointSOP_Class\n\nContents\n \n \n \n\n \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\n  t -  - Expressions to translate the XYZ coordinates of a given point can be entered here. The attributes to modify here are: ,  and .\t\nSimply entering  into the Position X field means that the X coordinate of each point that comes in is passed straight through with no modification.\t\t\t\nChanging this entry to  means that the X coordinate of each point that comes in will be displaced by 5 units. This expression can be expanded to produce many useful effects. Transformations can also be effected in the Y and Z fields.\n\n\n tx - ty - tz -\n\n  doweight -  - Select between keeping the weight or adding a new weight.\n\n off - on -\n\n  weight - If you select 'New Weight' from the menu above, enter expressions here to control the values of the point weights here. The attribute to modify is: . Values for the weight of the point can range from 0.0001 to infinity.\n\n\n\n  doclr -  - Select between keeping the color, adding new color, or using no color.\n\n off - on - remove -\n\n  diff -  - If you select 'Add Color' from the menu above, Cd color attributes will be added/modified in the . Enter expressions below to control the values of the point colors. The attributes to modify are:  for red,  for green,  for blue, and  for alpha.\nIf you select 'No Color' from the menu above, the Cd color attribute will be removed from the .\n\n\n diffr - diffg - diffb -\n\n  alpha - Control the alpha attribute in the same manner as the rgb colors above. Alpha is Cd[3] and comes from input via \n\n\n\n  donml -  - Select between keeping the normals, adding new normals, or using no normals.\n\n off - on - remove -\n\n  n -  - If you select 'Add Normal' from the menu above, N normal attributes will be added/modified in the . Enter expressions to change a given point normal here.  normals are directional vectors used by other SOPs, such as Turbulence, Facet and Copy. See Attributes article for detailed information. The attributes to modify are: ,  and .\nIf you select 'No Normal' from the menu above, the N normal attribute will be removed from the .\n\n\n nx - ny - nz -\n\n\nYou can flip the point normals of incoming geometry by entering:\t\t\t\n\n  \n\t\t\t\nin the fields with this parameter set to Add Normals. This works, because it takes the existing normals \t\t\t\n\n  \n\t\t\nand inverts them (the preceding - ).\n\n  douvw -  - Select between keeping the texture coordinates, adding new texture coordinates, or using no texture coordinates.\n\n off - on - remove -\n\n  map -  - If you select 'Add Texture' from the menu above, uv texture coordinate attributes will be added/modified in the . Enter expressions here to control the values of the texture coordinates here. The attributes to modify are: ,  and .\nIf you select 'No Texture' from the menu above, the uv texture coordinate attribute will be removed from the .\n\n\n mapu - mapv - mapw -\n\n  dowidth -  - Select between keeping the width attribute or adding a new width. This Width (width) attribute is used exclusively with Line MAT to control line width when the material is rendered.\n\n off - on -\n\n  width - If you select 'New Width' from the menu above, width attribute will be added/modified in the . Enter expressions here to control the values of the point widths here. The attribute to modify is: .\n\n\n\n  dopscale -  - Select between keeping the scale attribute, adding new scale, or using no scale. This scale (pscale) attribute is used with the Particle SOP and acts as a multiplier for the size of particles. The value of this attribute is multiplied by the size specified in the Particle SOP's render attributes to scale each particle. This attribute is used by the Point Sprite MAT when rendering point sprites.\n\n off - on - remove -\n\n  pscale - If you select 'Add Scale' from the menu above, pscale attribute will be added/modified in the . Enter expressions here to control the values of the point particle scales here. The attribute to modify is: .\nIf you select 'No Scale' from the menu above, the pscale attribute will be removed from the .\n\n\n\n\n\n  attr - Sequence of custom attributes to add\n\n\n\n  attr0name - Creates a custom attribute with this name.\n\n\n\n  attr0type -  - The type of attribute created can be selected from this menu.\n\n float - vec2 - vec3 - vec4 - int - ivec2 - ivec3 - ivec4 -\n\n  attr0value -  - Set the values of the Custom Attrib using these parameters.\n\n attr0value1 - attr0value2 - attr0value3 - attr0value4 -\n\n\n\n\n  domass -  - Retains, adds, or removes mass and drag attributes for points.\n\n off - on - remove -\n\n  mass - If you select 'Add Mass/Drag' from the menu above, mass attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the mass attribute will be removed from the .\n\n\n\n  drag - If you select 'Add Mass/Drag' from the menu above, drag attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the drag attribute will be removed from the .\n\n\n\n  dotension - Tension affects the elasticity of the edges the point is connected to.\n\n\n\n  tension - If you select 'Add Tension' from the menu above, tension attribute will be added/modified in the . Enter expressions here to control the values of the tension here. The attribute to modify is: . If you select 'No Tension' from the menu above, the tension attribute will be removed from the .\n\n\n\n  dospringk -  - Retains, adds, or removes spring constant attributes for points. The Spring Constant is a well known physical property affecting each point.\n\n off - on - remove -\n\n  springk - If you select 'Add Spring K' from the menu above, springk attribute will be added/modified in the . Enter expressions here to control the values of the springk here. The attribute to modify is: . If you select 'No Spring K' from the menu above, the springk attribute will be removed from the .\n\n\n\n  dovel -  - Retains, adds, or removes the velocity of points. Defines the magnitude of the particle's velocity in the X, Y and Z directions.\n\n off - on - remove -\n\n  v -  - If you select 'Add Velocity' from the menu above, v velocity attributes will be added/modified in the . Enter expressions to change a given point velocity here. The attributes to modify here are: ,  and . If you select 'No Velocity' from the menu above, the v velocity attribute will be removed from the .\n\n vx - vy - vz -\n\n  doup -  - Creates/Removes the \"up\" attribute for points. This attribute defines an up vector which is used to fully define the space around a point (for particle instancing or copying geometry). The up vector can be used in conjunction with the copy template's normals to control the orientation of the copies in the Copy SOP.\n\n off - on - remove -\n\n  up -  - If you select 'Add Up Vector' from the menu above, up attributes will be added/modified in the . Enter expressions to change a given point up vector here. The attributes to modify here are: ,  and . If you select 'No Up Vector' from the menu above, the up attribute will be removed from the .\n\n upx - upy - upz -\n\n\n\n  doradius -  - Retains, adds, or removes radiusf attributes for points, used to modify the distance roll-off effect. The roll-off is: r /(r+d^2) Where r is radius, and d is distance from attractor point. If no radius is set, no attenuation is performed.\n\n off - on - remove -\n\n  radiusf - If you select 'Add Radius' from the menu above, radiusf attribute will be added/modified in the . Enter expressions here to control the values of the distance roll-off here. If you select 'No Radius' from the menu above, the radiusf attribute will be removed from the .\n\n\n\n  doscale -  - Retains, adds, or removes scalef attributes for points, a multiplier for total force associated with this attractor point.\t\nBoth Radius and Force Scale will default to 1 if not created as point attributes.\t\t\t\nRadial / Normal / Edge / Directional Force - These four parameters introduce a type of force when created and each has a corresponding multiplier associated with it.\n\n\n off - on - remove -\n\n  scalef - If you select 'Add F Scale' from the menu above, scalef attribute will be added/modified in the . Enter expressions here to control the values of the force multiplier here. If you select 'No F scale' from the menu above, the scalef attribute will be removed from the .\n\n\n\n  doradialf -  - Retains, adds, or removes radialf attributes for points, the force directed towards the attractor point. Positive multipliers are towards while negative are away.\n\n off - on - remove -\n\n  radialf - If you select 'Add Radial F' from the menu above, radialf attribute will be added/modified in the . Enter expressions here to control the values of the directed force here. If you select 'No Radial F' from the menu above, the radialf attribute will be removed from the .\n\n\n\n  donormalf -  - Retains, adds, or removes normalf attributes for points, the force directed along the point normal direction.\n\n off - on - remove -\n\n  normalf - If you select 'Add Normal F' from the menu above, normalf attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Normal F' from the menu above, the normalf attribute will be removed from the .\n\n\n\n  doedgef -  - Retains, adds, or removes edgef attributes for points, which only works on primitive face types. The force is directed in the direction of the edge leading from that point. If multiple vertices reference the same point, then the direction is the edge direction of the last primitive referencing the point.\t\nIf the face open, then the end point has an edge direction equal to that of the preceding point in that primitive.\t\t\t\nNote: When edge forces are added using the  , the force directions are computed in the   itself. Thus, any following transformations do not effect these. If you wish for the edge directions to be transformed as well, all transformations must be done before the  . Only the edge forces function like this.\n\n\n off - on - remove -\n\n  edgef - If you select 'Add Edge F' from the menu above, edgef attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Edge F' from the menu above, the edgef attribute will be removed from the .\n\n\n\n  dodirf -  - Retains, adds, or removes dirf attributes for points, an arbitrary directional force still affected by the distance roll-off function.\n\n off - on - remove -\n\n  dirf -  - If you select 'Add Dir. F' from the menu above, dirf attribute will be added/modified in the . Enter expressions here to control the values of the force in the arbitrary direction here. If you select 'No Dir. F' from the menu above, the dirf attribute will be removed from the .\n\n dirfx - dirfy - dirfz -\n\n\n\n -\n -\n\nExtra Information for the   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\\nwikieditorwikieditor2021.100002020.200002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\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\nMATs or Materials are an Operator Family that applies a Shader to a SOP or 3D Geometry Object for rendering textured surfaces with lighting.\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=Point_SOP&oldid=32295\"\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:51.185Z",
      "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   allows you to get right into the geometry and manipulate the position, color, texture coordinates, and normals of the points in the Source, and other attributes. The   also lets you create custom point attributes. It is the complement to the Primitive SOP. Using a second input allows for combining of two SOPs using their respective expressions (see: PointSOP Class). If the second input has less points than the first input, the points in the second input will be cycled.\t\t\nFor example, you can create point coloring, or flip the normals of incoming geometry. Using expressions in Position X, Y and Z, you can move any given input point to a new place as defined by the expression with any standard attributes. \t\t\nThe Width (width) attribute affects the line width in the Line MAT.  The Scale attribute (pscale) affects particle size, and in the Line MAT it affects the dot size at each point.\nTip: For greater flexibility, use the Script SOP.\npointSOP_Class\n\nContents\n \n \n \n\n \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\n  t -  - Expressions to translate the XYZ coordinates of a given point can be entered here. The attributes to modify here are: ,  and .\t\nSimply entering  into the Position X field means that the X coordinate of each point that comes in is passed straight through with no modification.\t\t\t\nChanging this entry to  means that the X coordinate of each point that comes in will be displaced by 5 units. This expression can be expanded to produce many useful effects. Transformations can also be effected in the Y and Z fields.\n\n\n tx - ty - tz -\n\n  doweight -  - Select between keeping the weight or adding a new weight.\n\n off - on -\n\n  weight - If you select 'New Weight' from the menu above, enter expressions here to control the values of the point weights here. The attribute to modify is: . Values for the weight of the point can range from 0.0001 to infinity.\n\n\n\n  doclr -  - Select between keeping the color, adding new color, or using no color.\n\n off - on - remove -\n\n  diff -  - If you select 'Add Color' from the menu above, Cd color attributes will be added/modified in the . Enter expressions below to control the values of the point colors. The attributes to modify are:  for red,  for green,  for blue, and  for alpha.\nIf you select 'No Color' from the menu above, the Cd color attribute will be removed from the .\n\n\n diffr - diffg - diffb -\n\n  alpha - Control the alpha attribute in the same manner as the rgb colors above. Alpha is Cd[3] and comes from input via \n\n\n\n  donml -  - Select between keeping the normals, adding new normals, or using no normals.\n\n off - on - remove -\n\n  n -  - If you select 'Add Normal' from the menu above, N normal attributes will be added/modified in the . Enter expressions to change a given point normal here.  normals are directional vectors used by other SOPs, such as Turbulence, Facet and Copy. See Attributes article for detailed information. The attributes to modify are: ,  and .\nIf you select 'No Normal' from the menu above, the N normal attribute will be removed from the .\n\n\n nx - ny - nz -\n\n\nYou can flip the point normals of incoming geometry by entering:\t\t\t\n\n  \n\t\t\t\nin the fields with this parameter set to Add Normals. This works, because it takes the existing normals \t\t\t\n\n  \n\t\t\nand inverts them (the preceding - ).\n\n  douvw -  - Select between keeping the texture coordinates, adding new texture coordinates, or using no texture coordinates.\n\n off - on - remove -\n\n  map -  - If you select 'Add Texture' from the menu above, uv texture coordinate attributes will be added/modified in the . Enter expressions here to control the values of the texture coordinates here. The attributes to modify are: ,  and .\nIf you select 'No Texture' from the menu above, the uv texture coordinate attribute will be removed from the .\n\n\n mapu - mapv - mapw -\n\n  dowidth -  - Select between keeping the width attribute or adding a new width. This Width (width) attribute is used exclusively with Line MAT to control line width when the material is rendered.\n\n off - on -\n\n  width - If you select 'New Width' from the menu above, width attribute will be added/modified in the . Enter expressions here to control the values of the point widths here. The attribute to modify is: .\n\n\n\n  dopscale -  - Select between keeping the scale attribute, adding new scale, or using no scale. This scale (pscale) attribute is used with the Particle SOP and acts as a multiplier for the size of particles. The value of this attribute is multiplied by the size specified in the Particle SOP's render attributes to scale each particle. This attribute is used by the Point Sprite MAT when rendering point sprites.\n\n off - on - remove -\n\n  pscale - If you select 'Add Scale' from the menu above, pscale attribute will be added/modified in the . Enter expressions here to control the values of the point particle scales here. The attribute to modify is: .\nIf you select 'No Scale' from the menu above, the pscale attribute will be removed from the .\n\n\n\n\n\n  attr - Sequence of custom attributes to add\n\n\n\n  attr0name - Creates a custom attribute with this name.\n\n\n\n  attr0type -  - The type of attribute created can be selected from this menu.\n\n float - vec2 - vec3 - vec4 - int - ivec2 - ivec3 - ivec4 -\n\n  attr0value -  - Set the values of the Custom Attrib using these parameters.\n\n attr0value1 - attr0value2 - attr0value3 - attr0value4 -\n\n\n\n\n  domass -  - Retains, adds, or removes mass and drag attributes for points.\n\n off - on - remove -\n\n  mass - If you select 'Add Mass/Drag' from the menu above, mass attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the mass attribute will be removed from the .\n\n\n\n  drag - If you select 'Add Mass/Drag' from the menu above, drag attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the drag attribute will be removed from the .\n\n\n\n  dotension - Tension affects the elasticity of the edges the point is connected to.\n\n\n\n  tension - If you select 'Add Tension' from the menu above, tension attribute will be added/modified in the . Enter expressions here to control the values of the tension here. The attribute to modify is: . If you select 'No Tension' from the menu above, the tension attribute will be removed from the .\n\n\n\n  dospringk -  - Retains, adds, or removes spring constant attributes for points. The Spring Constant is a well known physical property affecting each point.\n\n off - on - remove -\n\n  springk - If you select 'Add Spring K' from the menu above, springk attribute will be added/modified in the . Enter expressions here to control the values of the springk here. The attribute to modify is: . If you select 'No Spring K' from the menu above, the springk attribute will be removed from the .\n\n\n\n  dovel -  - Retains, adds, or removes the velocity of points. Defines the magnitude of the particle's velocity in the X, Y and Z directions.\n\n off - on - remove -\n\n  v -  - If you select 'Add Velocity' from the menu above, v velocity attributes will be added/modified in the . Enter expressions to change a given point velocity here. The attributes to modify here are: ,  and . If you select 'No Velocity' from the menu above, the v velocity attribute will be removed from the .\n\n vx - vy - vz -\n\n  doup -  - Creates/Removes the \"up\" attribute for points. This attribute defines an up vector which is used to fully define the space around a point (for particle instancing or copying geometry). The up vector can be used in conjunction with the copy template's normals to control the orientation of the copies in the Copy SOP.\n\n off - on - remove -\n\n  up -  - If you select 'Add Up Vector' from the menu above, up attributes will be added/modified in the . Enter expressions to change a given point up vector here. The attributes to modify here are: ,  and . If you select 'No Up Vector' from the menu above, the up attribute will be removed from the .\n\n upx - upy - upz -\n\n\n\n  doradius -  - Retains, adds, or removes radiusf attributes for points, used to modify the distance roll-off effect. The roll-off is: r /(r+d^2) Where r is radius, and d is distance from attractor point. If no radius is set, no attenuation is performed.\n\n off - on - remove -\n\n  radiusf - If you select 'Add Radius' from the menu above, radiusf attribute will be added/modified in the . Enter expressions here to control the values of the distance roll-off here. If you select 'No Radius' from the menu above, the radiusf attribute will be removed from the .\n\n\n\n  doscale -  - Retains, adds, or removes scalef attributes for points, a multiplier for total force associated with this attractor point.\t\nBoth Radius and Force Scale will default to 1 if not created as point attributes.\t\t\t\nRadial / Normal / Edge / Directional Force - These four parameters introduce a type of force when created and each has a corresponding multiplier associated with it.\n\n\n off - on - remove -\n\n  scalef - If you select 'Add F Scale' from the menu above, scalef attribute will be added/modified in the . Enter expressions here to control the values of the force multiplier here. If you select 'No F scale' from the menu above, the scalef attribute will be removed from the .\n\n\n\n  doradialf -  - Retains, adds, or removes radialf attributes for points, the force directed towards the attractor point. Positive multipliers are towards while negative are away.\n\n off - on - remove -\n\n  radialf - If you select 'Add Radial F' from the menu above, radialf attribute will be added/modified in the . Enter expressions here to control the values of the directed force here. If you select 'No Radial F' from the menu above, the radialf attribute will be removed from the .\n\n\n\n  donormalf -  - Retains, adds, or removes normalf attributes for points, the force directed along the point normal direction.\n\n off - on - remove -\n\n  normalf - If you select 'Add Normal F' from the menu above, normalf attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Normal F' from the menu above, the normalf attribute will be removed from the .\n\n\n\n  doedgef -  - Retains, adds, or removes edgef attributes for points, which only works on primitive face types. The force is directed in the direction of the edge leading from that point. If multiple vertices reference the same point, then the direction is the edge direction of the last primitive referencing the point.\t\nIf the face open, then the end point has an edge direction equal to that of the preceding point in that primitive.\t\t\t\nNote: When edge forces are added using the  , the force directions are computed in the   itself. Thus, any following transformations do not effect these. If you wish for the edge directions to be transformed as well, all transformations must be done before the  . Only the edge forces function like this.\n\n\n off - on - remove -\n\n  edgef - If you select 'Add Edge F' from the menu above, edgef attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Edge F' from the menu above, the edgef attribute will be removed from the .\n\n\n\n  dodirf -  - Retains, adds, or removes dirf attributes for points, an arbitrary directional force still affected by the distance roll-off function.\n\n off - on - remove -\n\n  dirf -  - If you select 'Add Dir. F' from the menu above, dirf attribute will be added/modified in the . Enter expressions here to control the values of the force in the arbitrary direction here. If you select 'No Dir. F' from the menu above, the dirf attribute will be removed from the .\n\n dirfx - dirfy - dirfz -\n\n\n\n -\n -\n\nExtra Information for the   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\\nwikieditorwikieditor2021.100002020.200002018.28070before 2018.28070\nSOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nEach SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.\n\n\n\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\nMATs or Materials are an Operator Family that applies a Shader to a SOP or 3D Geometry Object for rendering textured surfaces with lighting.\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=Point_SOP&oldid=32295\"",
      "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:51.189Z",
      "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:51.189Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Position",
      "label": "Position",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "t -  - Expressions to translate the XYZ coordinates of a given point can be entered here. The attributes to modify here are: ,  and .\t\nSimply entering  into the Position X field means that the X coordinate of each point that comes in is passed straight through with no modification.\t\t\t\nChanging this entry to  means that the X coordinate of each point that comes in will be displaced by 5 units. This expression can be expanded to produce many useful effects. Transformations can also be effected in the Y and Z fields.\n\n\n tx - ty - tz -",
      "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:51.189Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Position",
      "label": "Position",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "tx - ty - tz -",
      "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:51.189Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Weight",
      "label": "Weight",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "doweight -  - Select between keeping the weight or adding a new weight.\n\n off - on -",
      "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:51.189Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Weight",
      "label": "Keep Weight",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "off - on -",
      "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:51.189Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Weight",
      "label": "Weight",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "weight - If you select 'New Weight' from the menu above, enter expressions here to control the values of the point weights here. The attribute to modify is: . Values for the weight of the point can range from 0.0001 to infinity.",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Color",
      "label": "Color",
      "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": "doclr -  - Select between keeping the color, adding new color, or using no color.\n\n off - on - remove -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Color",
      "label": "Keep Color",
      "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": "off - on - remove -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Color",
      "label": "Color",
      "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": "diff -  - If you select 'Add Color' from the menu above, Cd color attributes will be added/modified in the . Enter expressions below to control the values of the point colors. The attributes to modify are:  for red,  for green,  for blue, and  for alpha.\nIf you select 'No Color' from the menu above, the Cd color attribute will be removed from the .\n\n\n diffr - diffg - diffb -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Color",
      "label": "Color",
      "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": "diffr - diffg - diffb -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Alpha",
      "label": "Alpha",
      "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": "alpha - Control the alpha attribute in the same manner as the rgb colors above. Alpha is Cd[3] and comes from input via",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Normal",
      "label": "Normal",
      "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": "donml -  - Select between keeping the normals, adding new normals, or using no normals.\n\n off - on - remove -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Normal",
      "label": "Keep Normal",
      "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": "off - on - remove -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Normals",
      "label": "Normals",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "n -  - If you select 'Add Normal' from the menu above, N normal attributes will be added/modified in the . Enter expressions to change a given point normal here.  normals are directional vectors used by other SOPs, such as Turbulence, Facet and Copy. See Attributes article for detailed information. The attributes to modify are: ,  and .\nIf you select 'No Normal' from the menu above, the N normal attribute will be removed from the .\n\n\n nx - ny - nz -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Normals",
      "label": "Normals",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "nx - ny - nz -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Texture",
      "label": "Texture",
      "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": "douvw -  - Select between keeping the texture coordinates, adding new texture coordinates, or using no texture coordinates.\n\n off - on - remove -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Texture",
      "label": "Keep Texture",
      "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": "off - on - remove -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Texture",
      "label": "Texture",
      "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": "map -  - If you select 'Add Texture' from the menu above, uv texture coordinate attributes will be added/modified in the . Enter expressions here to control the values of the texture coordinates here. The attributes to modify are: ,  and .\nIf you select 'No Texture' from the menu above, the uv texture coordinate attribute will be removed from the .\n\n\n mapu - mapv - mapw -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Texture",
      "label": "Texture",
      "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": "mapu - mapv - mapw -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Width(Line MAT)",
      "label": "Width(Line MAT)",
      "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": "dowidth -  - Select between keeping the width attribute or adding a new width. This Width (width) attribute is used exclusively with Line MAT to control line width when the material is rendered.\n\n off - on -",
      "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:51.190Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Width",
      "label": "Keep Width",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "off - on -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Width(Line MAT)",
      "label": "Width(Line MAT)",
      "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": "width - If you select 'New Width' from the menu above, width attribute will be added/modified in the . Enter expressions here to control the values of the point widths here. The attribute to modify is: .",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Scale",
      "label": "Scale",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "dopscale -  - Select between keeping the scale attribute, adding new scale, or using no scale. This scale (pscale) attribute is used with the Particle SOP and acts as a multiplier for the size of particles. The value of this attribute is multiplied by the size specified in the Particle SOP's render attributes to scale each particle. This attribute is used by the Point Sprite MAT when rendering point sprites.\n\n off - on - remove -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Scale",
      "label": "Keep Scale",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "off - on - remove -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Scale",
      "label": "Scale",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "pscale - If you select 'Add Scale' from the menu above, pscale attribute will be added/modified in the . Enter expressions here to control the values of the point particle scales here. The attribute to modify is: .\nIf you select 'No Scale' from the menu above, the pscale attribute will be removed from the .",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Custom Attribute",
      "label": "Custom Attribute",
      "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": "attr - Sequence of custom attributes to add\n\n\n\n  attr0name - Creates a custom attribute with this name.\n\n\n\n  attr0type -  - The type of attribute created can be selected from this menu.\n\n float - vec2 - vec3 - vec4 - int - ivec2 - ivec3 - ivec4 -\n\n  attr0value -  - Set the values of the Custom Attrib using these parameters.\n\n attr0value1 - attr0value2 - attr0value3 - attr0value4 -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Name",
      "label": "Name",
      "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": "attr0name - Creates a custom attribute with this name.",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Type",
      "label": "Type",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "attr0type -  - The type of attribute created can be selected from this menu.\n\n float - vec2 - vec3 - vec4 - int - ivec2 - ivec3 - ivec4 -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "float",
      "label": "float",
      "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": "float - vec2 - vec3 - vec4 - int - ivec2 - ivec3 - ivec4 -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Value",
      "label": "Value",
      "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": "attr0value -  - Set the values of the Custom Attrib using these parameters.\n\n attr0value1 - attr0value2 - attr0value3 - attr0value4 -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Value",
      "label": "Value",
      "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": "attr0value1 - attr0value2 - attr0value3 - attr0value4 -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Point Mass/Drag",
      "label": "Point Mass/Drag",
      "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": "domass -  - Retains, adds, or removes mass and drag attributes for points.\n\n off - on - remove -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Mass/Drag",
      "label": "Keep Mass/Drag",
      "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": "off - on - remove -",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Mass",
      "label": "Mass",
      "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": "mass - If you select 'Add Mass/Drag' from the menu above, mass attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the mass attribute will be removed from the .",
      "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:51.191Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Drag",
      "label": "Drag",
      "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": "drag - If you select 'Add Mass/Drag' from the menu above, drag attribute will be added/modified in the . If you select 'No Mass/Drag' from the menu above, the drag attribute will be removed from the .",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Tension",
      "label": "Tension",
      "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": "dotension - Tension affects the elasticity of the edges the point is connected to.",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Tension",
      "label": "Tension",
      "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": "tension - If you select 'Add Tension' from the menu above, tension attribute will be added/modified in the . Enter expressions here to control the values of the tension here. The attribute to modify is: . If you select 'No Tension' from the menu above, the tension attribute will be removed from the .",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Spring K",
      "label": "Spring K",
      "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": "dospringk -  - Retains, adds, or removes spring constant attributes for points. The Spring Constant is a well known physical property affecting each point.\n\n off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Spring K",
      "label": "Keep Spring K",
      "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": "off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Spring K",
      "label": "Spring K",
      "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": "springk - If you select 'Add Spring K' from the menu above, springk attribute will be added/modified in the . Enter expressions here to control the values of the springk here. The attribute to modify is: . If you select 'No Spring K' from the menu above, the springk attribute will be removed from the .",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Velocity",
      "label": "Velocity",
      "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": "dovel -  - Retains, adds, or removes the velocity of points. Defines the magnitude of the particle's velocity in the X, Y and Z directions.\n\n off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Velocity",
      "label": "Keep Velocity",
      "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": "off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Velocity",
      "label": "Velocity",
      "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": "v -  - If you select 'Add Velocity' from the menu above, v velocity attributes will be added/modified in the . Enter expressions to change a given point velocity here. The attributes to modify here are: ,  and . If you select 'No Velocity' from the menu above, the v velocity attribute will be removed from the .\n\n vx - vy - vz -",
      "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:51.192Z",
      "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": "vx - vy - vz -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Up Vector",
      "label": "Up Vector",
      "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": "doup -  - Creates/Removes the \"up\" attribute for points. This attribute defines an up vector which is used to fully define the space around a point (for particle instancing or copying geometry). The up vector can be used in conjunction with the copy template's normals to control the orientation of the copies in the Copy SOP.\n\n off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Up Vector",
      "label": "Keep Up Vector",
      "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": "off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Up Vector",
      "label": "Up Vector",
      "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": "up -  - If you select 'Add Up Vector' from the menu above, up attributes will be added/modified in the . Enter expressions to change a given point up vector here. The attributes to modify here are: ,  and . If you select 'No Up Vector' from the menu above, the up attribute will be removed from the .\n\n upx - upy - upz -",
      "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:51.192Z",
      "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": "upx - upy - upz -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Radius",
      "label": "Radius",
      "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": "doradius -  - Retains, adds, or removes radiusf attributes for points, used to modify the distance roll-off effect. The roll-off is: r /(r+d^2) Where r is radius, and d is distance from attractor point. If no radius is set, no attenuation is performed.\n\n off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Radius",
      "label": "Keep Radius",
      "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": "off - on - remove -",
      "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:51.192Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Radius",
      "label": "Radius",
      "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": "radiusf - If you select 'Add Radius' from the menu above, radiusf attribute will be added/modified in the . Enter expressions here to control the values of the distance roll-off here. If you select 'No Radius' from the menu above, the radiusf attribute will be removed from the .",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "F Scale",
      "label": "F Scale",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "doscale -  - Retains, adds, or removes scalef attributes for points, a multiplier for total force associated with this attractor point.\t\nBoth Radius and Force Scale will default to 1 if not created as point attributes.\t\t\t\nRadial / Normal / Edge / Directional Force - These four parameters introduce a type of force when created and each has a corresponding multiplier associated with it.\n\n\n off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep F Scale",
      "label": "Keep F Scale",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "F Scale",
      "label": "F Scale",
      "group": "General",
      "page": "",
      "type": "float",
      "dataType": "number",
      "style": "",
      "defaultValue": null,
      "minValue": null,
      "maxValue": null,
      "step": null,
      "menuItems": [],
      "menuLabels": [],
      "allowCustom": false,
      "maxLength": null,
      "pattern": null,
      "isArray": false,
      "arraySize": 1,
      "dimensions": 1,
      "description": "scalef - If you select 'Add F Scale' from the menu above, scalef attribute will be added/modified in the . Enter expressions here to control the values of the force multiplier here. If you select 'No F scale' from the menu above, the scalef attribute will be removed from the .",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Radial F",
      "label": "Radial F",
      "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": "doradialf -  - Retains, adds, or removes radialf attributes for points, the force directed towards the attractor point. Positive multipliers are towards while negative are away.\n\n off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Radial F",
      "label": "Keep Radial F",
      "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": "off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Radial F",
      "label": "Radial F",
      "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": "radialf - If you select 'Add Radial F' from the menu above, radialf attribute will be added/modified in the . Enter expressions here to control the values of the directed force here. If you select 'No Radial F' from the menu above, the radialf attribute will be removed from the .",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Normal F",
      "label": "Normal F",
      "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": "donormalf -  - Retains, adds, or removes normalf attributes for points, the force directed along the point normal direction.\n\n off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Normal F",
      "label": "Keep Normal F",
      "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": "off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Normal F",
      "label": "Normal F",
      "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": "normalf - If you select 'Add Normal F' from the menu above, normalf attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Normal F' from the menu above, the normalf attribute will be removed from the .",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Edge F",
      "label": "Edge F",
      "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": "doedgef -  - Retains, adds, or removes edgef attributes for points, which only works on primitive face types. The force is directed in the direction of the edge leading from that point. If multiple vertices reference the same point, then the direction is the edge direction of the last primitive referencing the point.\t\nIf the face open, then the end point has an edge direction equal to that of the preceding point in that primitive.\t\t\t\nNote: When edge forces are added using the  , the force directions are computed in the   itself. Thus, any following transformations do not effect these. If you wish for the edge directions to be transformed as well, all transformations must be done before the  . Only the edge forces function like this.\n\n\n off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Edge F",
      "label": "Keep Edge F",
      "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": "off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Edge F",
      "label": "Edge F",
      "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": "edgef - If you select 'Add Edge F' from the menu above, edgef attribute will be added/modified in the . Enter expressions here to control the values of the force in the normal direction here. If you select 'No Edge F' from the menu above, the edgef attribute will be removed from the .",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Dir. F",
      "label": "Dir. F",
      "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": "dodirf -  - Retains, adds, or removes dirf attributes for points, an arbitrary directional force still affected by the distance roll-off function.\n\n off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Keep Dir. F",
      "label": "Keep Dir. F",
      "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": "off - on - remove -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    },
    {
      "id": null,
      "name": "Dir. F",
      "label": "Dir. F",
      "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": "dirf -  - If you select 'Add Dir. F' from the menu above, dirf attribute will be added/modified in the . Enter expressions here to control the values of the force in the arbitrary direction here. If you select 'No Dir. F' from the menu above, the dirf attribute will be removed from the .\n\n dirfx - dirfy - dirfz -",
      "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:51.193Z",
      "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": "dirfx - dirfy - dirfz -",
      "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:51.193Z",
      "rawData": {},
      "sourceElement": null
    }
  ],
  "parameterGroups": {},
  "codeExamples": [],
  "pythonExamples": [],
  "expressions": [],
  "commonInputs": [],
  "commonOutputs": [],
  "relatedOperators": [],
  "workflowPatterns": [],
  "images": [],
  "videos": [],
  "assets": [],
  "keywords": [
    "point",
    "allows",
    "right",
    "into",
    "geometry",
    "manipulate",
    "position,",
    "color,",
    "texture",
    "coordinates,"
  ],
  "tags": [
    "SOP",
    "TouchDesigner",
    "Point"
  ],
  "searchWeight": 1,
  "contentHash": "",
  "processingDate": "2025-08-08T00:37:51.194Z",
  "processingVersion": "1.0.0",
  "isValid": true,
  "validationErrors": []
}