VEX Attribute Glossary - kunz

Conditionals

> //Greater than
< //Less than
>= //Greater than or equal to
<= //Less than or equal to
!= //Not equal to
== //Is equal to
&& //And
|| //Or

Channel Shortcut Syntax

ch('flt1');             // Float
chf('flt2');            // Float
chi('int');             // Integer
chv('vecparm');         // Vector 3
chp('quat');            // Vector 4 / Quaternion
ch3('m3');              // 3x3 Matrix
ch4('m4');              // 4x4 Matrix
chs('str');             // String
chramp('r', x);         // Spline Ramp
vector(chramp('c', x)); // RGB Ramp

Global Variables

// Available in all SOP wrangles
f@Frame     //The current floating frame number, equivalent to the $FF Hscript variable
f@Time      //The current time in seconds, equivalent to the $T Hscript variable
i@SimFrame  //The integer simulation timestep number ($SF), only present in DOP contexts.
f@SimTime   //The simulation time in seconds ($ST), only present in DOP contexts.
f@TimeInc   //The timestep currently being used for simulation or playback.

// Available in Attribute Wrangle (point, vertex, primitive and detail)
v@P         //The position of the current element.
i@ptnum     //The point number attached to the currently processed element.
i@vtxnum    //The linear number of the currently processed vertex.
i@primnum   //The primitive number attached to the currently processed element.
i@elemnum   //The index number of the currently processed element.
i@numpt     //The total number of points in the geometry.
i@numvtx    //The number of vertices in the primitive of the currently processed element.
i@numprim   //The total number of primitives in the geometry.
i@numelem   //The total number of elements being processed.

// Available in Volume Wrangle
v@P                     //The position of the current voxel.
f@density               //The value of the density field at the current voxel location.
v@center                //The center of the current volume.
v@dPdx, v@dPdy, v@dPdz  //These vectors store the change in P that occurs in the x, y, and z voxel indices.
i@ix, i@iy, i@iz        //Voxel indices. For dense volumes (non-VDB) these range from 0 to resolution-1.
i@resx, i@resy, i@resz  //The resolution of the current volume.

Common Geometry Attributes

// Int
@id         // A unique number that remains the same throughout a simulation.

// Float
@pscale     // Particle radius size.  Uniform scale.  Set display particles as 'Discs' to visualize.
@width      // Thickness of curves.  Enable 'Shade Open Curves In Viewport' on the object node to visualize.
@Alpha      // Alpha transparency override.  The viewport uses this to set the alpha of OpenGL geometry.
@Pw         // Spline weight.

// Vector3
@P          // Point position.  Used this to lay out points in 3D space.
@Cd         // Diffuse color override.  The viewport uses this to color OpenGL geometry.
@N          // Surface or curve normal.  Houdini will compute the normal if this attribute does not exist.
@scale      // Vector scale.  Allows directional scaling or stretching (in one direction).
@rest       // Used by procedural patterns and textures to stick on deforming and animated surfaces.
@up         // Up vector.  The up direction for local space, typically (0, 1, 0).
@uv         // UV texture coordinates for this point/vertex.
@v          // Point velocity.  The direction and speed of movement in units per second.

// Vector4
@orient     // The local orientation of the point (represented as a quaternion).
@rot        // Additional rotation to be applied after orient, N, and up attributes.

// String
@name       // A unique name identifying which primitives belong to which piece.  Also used to label volumes.
@instance   // Path of an object node to be instanced at render time.

Specifying VEX Data Types

float       f@name    // Floating point scalar values.
vector2     u@name    // Two floating point values. Could be used to store 2D positions.
vector3     v@name    // Three floating point values. Usually positions, directions, normals, UVW or colors.
vector4     p@name    // Four floating point values. Usually rotation quaternions, or color and alpha (RGBA).
int         i@name    // Integer values (VEX uses 32 bit integers).
matrix2     2@name    // Four floating point values representing a 2D rotation matrix.
matrix3     3@name    // Nine floating point values representing a 3D rotation matrix or 2D transform matrix.
matrix      4@name    // Sixteen floating point values representing a 3D transform matrix.
string      s@name    // A string of characters.

DOP Particle Attributes

f@age       // Time in seconds since the particle was born.
f@life      // Time in seconds the particle is allowed to live. When f@age>f@life, i@dead will be set to 1.
f@nage      // Normalized age, f@age divided by f@life.  Implicit attribute, you cannot write to this.
i@dead      // Whether a particle is living (0) or dead (1).  A dead particle is deleted in the Reaping stage.
i@id        // A unique id for the particle that remains the same throughout a single simulation.

i@stopped   // Whether a particle is moving (0) or stopped (1).
i@stuck     // Whether a particle is free (0) or stuck (1).
i@sliding   // Whether a particle is free (0) or sliding along a surface (1).
f@cling     // Force applied to sliding particles inwards (according to the collision's surface normal).
s@pospath   // The path to the object that the particle is colliding with.
i@posprim   // Which collision primitive in the path geometry whose position we wish to refer to.
v@posuv     // Parametric uv on the collision primitive.

i@hittotal  // The cumulative total of all hits for the particle (only incremented once per timestep).
i@has_pprevious // This is set to 1 if v@pprevious contains valid values.
v@pprevious // Stores the position of the particle on the previous frame.  Used for collision detection.
i@hitnum    // The number of times the particle collided in the last POP Collision Detect.
s@hitpath   // The path to the object that was hit. A path to a file on disk or an op: path.
i@hitprim   // The primitive hit. Could be -1 if it the collision detector couldn’t figure out which prim.
v@hituv     // The parametric UV space on the primitive.
v@hitpos    // Where the hit actually occurred.  Useful if the colliding object was moving.
v@hitnml    // The normal of the surface at the time of the collision.
v@hitv      // The velocity of the surface at the time of the collision.
f@hittime   // When the collision occurred, that could be within a frame.
f@hitimpulse// Records how much of an impulse was needed for the collision resolution.  varies with timestep.
f@bounce    // When particles bounce off another object, this controls how much energy they keep.
f@bounceforward // Controls how much energy they keep in the tangential direction.
f@friction  // When particles bounce, they are slowed down proportional to how hard they hit.
s@collisionignore   // Objects that match this pattern will not be collided.

f@force     // Forces on the particle for this frame.
f@mass      // Inertia of the particle.
v@spinshape // This is multiplied by f@pscale to determine the shape of the particle for rotational inertia.
f@drag      // How much the particle is effected by any wind effects.
f@dragexp   // Ranges from 1 to 2, default is set on the solver.  Used for both angular and linear drag.
v@dragshape // How much the particle is dragged in each of its local axes.
v@dragcenter// If specified, drag forces will also generate torques on the particle.
v@targetv   // The local wind speed. Thought of as the goal, or target, velocity for the particle.
f@airresist // How important it is to match the wind speed.  Thickness of the air.
f@speedmin  // Minimum speed, in units per second, that a particle can move.
f@speedmax  // Maximum speed, in units per second, that a particle can move.

p@orient    // Orientation of the particle.  Used for figuring out 'local' forces.
v@w         // Angular speed of the particle.  A vector giving the rotation axis.
v@torque    // The equivalent of force for spins. No inertial tensor (the equivalent of mass) is supported.
v@targetw   // The goal spin direction and speed for this particle.
f@spinresist// How important it is to match the targetw.
f@spinmin   // Minimum speed in radians per second that a particle can spin.
f@spinmax   // Maximum speed in radians per second that a particle can spin.

DOP Grains Attributes

i@ispbd     // A value of 1 causes the particle to behave as grains.
f@pscale    // Used to determine the radius of each particle.
f@repulsionweight   // How much the particle collision forces are weighted.
f@repulsionstiffness// How strongly particles are kept apart.  Higher values result in less bouncy repulsion.
f@attractionweight  // How much the particles will naturally stick together when close.
f@attractionstiffness   // How strongly nearby particles stick to each other.
v@targetP   // Particles are constrained to this location.
f@targetweight      // The weight of the v@targetP constraints.
f@targetstiffness   // The stiffness with which particles are fixed to their v@targetP attribute.

f@restlength// Particles connected by polylines will be forced to maintain this distance (prim attribute).
f@constraintweight  // Scale, on a per-particle basis of the constraint force.
f@constraintstiffness   // This controls the stiffness on a per-particle basis.
f@strain    // This primitive attribute records how much the constraint is stretched.
f@strength  // If f@strain exceeds this primitive attribute, the constraint will be removed.

DOP Packed RBD Attributes

i@active    // Specifies whether the object is able to react to other objects.
i@animated  // Specifies whether the transform should be updated from its SOP geometry at each timestep.
i@deforming // Specifies whether the collision shape should be rebuilt from its SOP geometry each timestep.

f@bounce    // The elasticity of the object.
i@bullet_add_impact // Impacts that occur during the sim will be recorded in the Impacts or Feedback data.
i@bullet_ignore     // Specifies whether the object should be completely ignored by the Bullet solver.
f@bullet_angular_sleep_threshold// The sleeping threshold for the object’s angular velocity.
f@bullet_linear_sleep_threshold // The sleeping threshold for the object’s linear velocity.
i@bullet_want_deactivate// Disables simulation of a non-moving object until the object moves again. 
i@computecom// Specifies whether the center of mass should be computed from the collision shape.
i@computemass   // Specifies whether the mass should be computed from the collision shape and density.
f@creationtime  // Stores the simulation time at which the object was created.
i@dead  // Specifies whether the object should be deleted during the next solve.
f@density   // The mass of an object is its volume times its density.
f@friction  // The coefficient of friction of the object.
f@inertialtensorstiffness   // Rotational stiffness.  A scale factor applied to the inertial tensor. 
i@inheritvelocity   // v and w point attributes from the SOP geometry will override the initial velocity.
f@mass  // The mass of the object.
s@name  // A unique name for the object. Used by Constraint Networks.
p@orient// The orientation of the object.
v@P     // The current position of the object’s center of mass.
v@pivot // The pivot that the orientation applies to. If i@computecom is non-zero, this is auto-computed.
v@v     // Linear velocity of the object.
v@w     // Angular velocity of the object, in radians per second.

i@bullet_adjust_geometry    // Shrinks the collision geometry.
i@bullet_autofit    // Use the bounds of the object for Box, Capsule, Cylinder, Sphere, or Plane.
f@bullet_collision_margin   // Padding distance between collision shapes.
s@bullet_georep     // Can be convexhull, concave, box, capsule, cylinder, compound, sphere, or plane.
i@bullet_groupconnected     // Create convex hull per set of connected primitives.
f@bullet_length     // The length of the Capsule or Cylinder collision shape in the Y direction.
v@bullet_primR  // Orientation of the Box, Capsule, Cylinder, or Plane collision shape.
v@bullet_primS  // Size of the Box collision shape.
v@bullet_primT  // Position of the Box, Sphere, Capsule, Cylinder, or Plane collision shape.
f@bullet_radius // Radius of the Sphere, Capsule, or Cylinder collision shape.
f@bullet_shrink_amount  // Specifies the amount of resizing done by Shrink Collision Geometry.

s@activationignore  // Won't be activated by collisions with any objects that match this pattern.
s@collisiongroup    // Specifies the name of a collision group that this object belongs to.
s@collisionignore   // The object will not collide against any objects that match this pattern.
f@min_activation_impulse// Minimum impulse that will cause the object to switch from inactive to active.

f@speedmin  // Minimum speed, in units per second, that a particle can move.
f@speedmax  // Maximum speed, in units per second, that a particle can move.
f@spinmin   // Minimum speed in radians per second that a particle can spin.
f@spinmax   // Maximum speed in radians per second that a particle can spin.
f@accelmax  // Limits the change in the object’s speed that is caused by enforcing constraints.
f@angaccelmax   // Limits the change in the object’s angular speed that is caused by enforcing constraints.

f@airresist // Specifies how important it is to match the target velocity (v@targetv).
f@drag      // How much the the v@targetv and f@airresist attributes effect the object.
f@dragexp   // Ranges from 1 to 2, default is set on the solver.  Used for both angular and linear drag.
v@force     // Specifies a force that will be applied to the center of mass of the object.
f@spinresist// Specifies how important it is to match the target angular velocity (v@targetw).
v@targetv   // Target velocity for the object. Used in combination with the f@airresist attribute.
v@targetw   // Target angular velocity for the object. Used in combination with the f@spinresist attribute.
v@torque    // Specifies a torque that will be applied to the object.

i@bullet_autofit_valid  // Stores whether the solver has already computed collision shape attributes.
i@bullet_sleeping       // Tracks whether the object has been put to sleep by the solver.
f@deactivation_time     // Amount of time the speed has been below the Linear Threshold or Angular Threshold.
i@found_overlap         // Used by the solver to determine whether it has performed the overlap test.
i@id                    // A unique identifier for the object.
i@nextid                // Stores the i@id the solver will assign to the next new object.

DOP RBD Constraint Attributes

s@constraint_name    // Specifies a piece of relationship data by name, such as 'Glue' or 'Spring'.
s@constraint_type    // Specifies whether the constraint affects 'position', 'rotation' or 'all' degrees of freedom.
f@restlength         // Specifies the desired length of the constraint to enforce.
f@width              // Width of each edge.
f@density            // Density of each point.
p@orient             // Initial orientation of each point. Value stored as a quaternion.
v@v                  // Initial velocity of each point.
v@w                  // Initial angular velocity of each point measured in radians per second.
f@friction           // Friction of each point.
f@klinear            // Defines how strongly the wire resists stretching.
f@damplinear         // Defines how strongly the wire resists oscillation due to stretching forces.
f@kangular           // Defines how strongly the wire resists bending.
f@dampangular        // Defines how strongly the wire resists oscillation due to bending forces.
f@targetstiffness    // Defines how strongly the wire resists deforming from the animated position.
f@targetdamping      // Defines how strongly the wire resists oscillation due to stretch forces.
f@normaldrag         // The component of drag in the directions normal to the wire.
f@tangentdrag        // The component of drag in the direction tangent to the wire.
i@nocollide          // Collision detection for the edge is disabled (Only used if Collision Handling is SDF).
v@restP              // Rest position of each point.
p@restorient         // Rest orientation of each point.
i@gluetoanimation    // Causes a point’s position and orientation to be constrained to the input geometry.
i@pintoanimation     // Causes a point’s position to be constrained to the input geometry.
v@animationP         // Target position of each point.
p@animationorient    // Target orientation of each point.
v@animationv         // Target velocity of each point.
v@animationw         // Target angular velocity of each point.
i@independentcollisionallowed   // Toggle external collisions (Only non-SDF Geometric Collision).
i@independentcollisionresolved  // Unresolved external collisions (Only non-SDF Geometric Collision).
i@codependentcollisionallowed   // Toggle soft body collisions (Only non-SDF Geometric Collision).
i@codependentcollisionresolved  // Unresolved toggle soft body collisions (Only non-SDF Geometric Collision).
i@selfcollisionallowed          // Toggle self collisions (Only non-SDF Geometric Collision).
i@selfcollisionresolved         // Unresolved toggle self collisions (Only non-SDF Geometric Collision).
i@propagate_rate                // Specifies how impulses from collisions spread across the Constraint Network.
i@propagationiterations         // Specifies the number of impact propagation iterations for the glue bond.