## Learn Magic of Houdini by TeamVFX

**The ****Procedural operators ( Context or Node types ) in Houdini.**

**OBJ – Object nodes** – Object nodes represent objects in the scene, such as character parts, geometry objects, lights, cameras, and so on.

**SOP – Geometry nodes** – Geometry nodes live inside Geo objects and generate geometry.

**DOP – Dynamics nodes** – Dynamics nodes set up the conditions and rules for dynamics simulations.

**VOP – Vector/shader nodes** – VOP nodes let you define a program (such as a shader) by connecting nodes together. Houdini then compiles the node network into executable VEX code.

**LOP – USD nodes** – LOP nodes generate USD describing characters, props, lighting, and rendering.

**ROP – Render nodes** – Render nodes either render the scene or set up render dependency networks.

**CHOP – Channel nodes** – Channel nodes create, filter, and manipulate channel data.

**COP – Compositing nodes** – Composite nodes create, filter, and manipulate image data.

**TOP – Task nodes** – TOP nodes define a workflow where data is fed into the network, turned into “work items” and manipulated by different nodes. Many nodes represent external processes that can be run on the local machine or a server farm.

**Build in attributes are self contain variables in VEX**

## ► **Houdini attributes list of geometry object**

### ** ▾ Point and primitives attributes **

**@P****vector**– Point position.**@N**vector – Normal direction.**@v**vector – Velocity of points.**@id**int – Unique element ID.**@ptnum**int – The point number.**@name**string – Find obj in code by name.**@numpt**int – Total number of points.**@piece**int – Faces in the same piece will share the same value in their piece attribute.**@Time**float – Current time, in seconds.**@Frame**int – Current frame.**@primnum**int – The primitive number.**@numprim**int – The total number of primitives.**@scale**vector – Scale non-uniformly along each axis saperatly

**@up****vector**– Up vector of the copy (+Y axis of the copy, if no p@orient).**@rot quaternion**– Additional rotation (applied after the orientation attributes above).**@trans****vector**– Translation of the copy, in addition to v@P.**@pivot****vector**– Local pivot point for the copy.**@transform****matrix**– Transform matrix overriding everything except v@P, v@pivot, and trans.**@shop_materialpath****string**– The instanced object uses this material

### ▾ **Volume bind attributes**

**@P****vector**– Position of the current voxel.**@density****float**– Density field at the current voxel location.**@center vector**– Center of the current volume.**@dPdx, @dPdy, @dPdz****vector**-Vectors store the change in P that occurs in the x, y, and z voxel indices.**@ix, @iy, @iz****int**– Voxel indices. For dense volumes (non-VDB) these range from 0 to resolution-1.**@resx, @resy, @resz****int**– Resolution of the current volume.

## ► **Houdini attributes list of particle system**

### ▾ **Particle Birth Attributes**

**@age****float**-Time particle was born.**@life****float**– Time particle is allowed to live.**@nage****float**– Normalized age, age divided by life.**@dead****int**– To kill particles.

**@id****int**– A unique id for the particle.

### ▾ **Particle collision Attributes**

**@stopped****int**– Put particle in rest.**@stuck int**– Stick a particle to surface.**@sliding****int**– Sliding along a surface.**@cling****float**– Applied to sliding particles inwards.**@pospath****string**– The path to the object the particle is colliding.**@posprim****int**– Collision primitive in the path geometry position.**@posuv****vector**– Parametric uv on the collision primitive.

**@hittotal****int**– The cumulative total of all hits for the particle.**@has_pprevious****int**– 1 if @pprevious contains valid values.**@pprevious****vector**– Position of the particle on the previous frame**@hitnum****int**– Number of times the particle collided.**@hitpath****string**– Path to the object that was hit**@hitprim****int**– primitive hit by particles.**@hituv****vector**– Parametric UV space on the primitive.**@hitpos****vector**– Position hit actually occurred with colliding object .**@hitnml****vector**– Normal of the surface at the time of the collision.**@hitv****vector**– Velocity of the surface at the time of the collision.**@hittime****float**-Time when the collision occurred.**@hitimpulse****float**– Records an impulse for the collision resolution.**@bounce****float**– Particles bounce energy they keep.**@bounceforward****float**– Particles energy they keep in the tangential direction.**@friction****float**– Particles slowed down proportional over the time.**@collisionignore****string**-Objects that match this pattern will not be collided.

### ▾ **Particle movement Attributes**

**@force****float**-Forces on the particle for this frame.**@mass****float**– Inertia of the particle.**@spinshape****vector**– Shape of the particle for rotational inertia.**@drag****float**– Particle is effected by any wind effects.**@dragexp****float**– Angular and linear drag.**@dragshape****vector**– Particle is dragged in each of its local axes.**@dragcenter****vector**– Drag forces will also generate torques on the particle.**@targetv****vector**– Goal, or target, velocity for the particle.**@airresist****float**– Resist hickness of the air.**@speedmin****float**– Minimum speed a particle can move.**@speedmax****float**– Maximum speed a particle can move

### ▾ **Particle orientation Attributes**

**@orient****quaternion**– Orientation of the particle.**@w****vector**– Angular speed of the particle.**@torque****vector**– Equivalent of force for spins.**@targetw****vector**– Goal spin direction and speed for this particle.**@spinresist****float**– match the targetw.**@spinmin****float**– Minimum speed in radians per second of particle.**@spinmax****float**– Maximum speed in radians per second of particle.

## ► **Houdini attributes list of POP Grain system**.

### ▾ **Grain general Attributes**

**@ispbd****int**– Particle to behave as grains.**@pscale****float**– Radius of each particle.**@repulsionweight****float**– particle collision forces are weighted.**@repulsionstiffness****float**– Particles are kept apart.**@attractionweight****float**– Particles will naturally stick together when close.**@attractionstiffness****float**– Nearby particles stick to each other.**@targetP****vector**– Particles are constrained to this location.**@targetweight****float**– Weight of the @targetP constraints.**@targetstiffness****float**– Stiffness of particles fixed to @targetP attribute.

### ▾ **Grain constraint attributes**

**@restlength****float**– Particles connected by polylines will be forced to maintain this distance.**@constraintweight****float**– Scale, on a per-particle basis of the constraint force.**@constraintstiffness****float**– Stiffness on a per-particle basis.**@strain****float**– Primitive attribute records the amount of constraint stretched.**@strength****float**-Strain exceeds this primitive attribute, the constraint will be removed.

## ► **Houdini attributes list of DOP Flip Network**

### ▾ **FLIP POP attributes**

**@pscale****float**– Particle scale**@v****vector**– Particle velocity**@viscosity****float**– The “thickness” of a fluid.**@density****float**– The mass per unit volume.**@temperature****float**– The temperature of the fluid.**@vorticity****float**– Measures the amount of circulation in the fluid.**@divergence****float**– Positive values cause particles to spread out, negative cause them to clump together.**@rest****vector**– Used to track the position of the fluid over time.**@rest2****vector**– Used for blending dual rest attributes, avoids stretching.**@droplet****float**– Identifies particles that separate from the main body of fluid.**@underresolved****float**– Particles that haven’t fully resolved on the grid.**@ballistic****int**– Specifies particles which will be ignored by the fluid solve.**@Lx****vector**– Angular momentum X axis**@Ly****vector**– Angular momentum Y axis**@Lz****vector**– Angular momentum Z axis

## ► **Houdini attributes list of DOP Finite element FEM Network**

### ▾ **Finite element points attributes**

**@stiffness****float**– Multiplier for all types of stiffness.**@dampingratio****float**– Multiplier for all damping ratios.**@massdensity****float**– Multiplier for all mass densities.

### ▾ **Finite element behaviour attributes**

**@solidstiffness****float**-Multiplier for both the shape stiffness and the volume stiffness of a Solid Object.**@solidshapestiffness****float**-Multiplier for the shape stiffness of a Solid Object.**@solidvolumestiffness****float**-Multiplier for the volume stiffness of a Solid Object.**@solidmassdensity****float**– Multiplier for the mass density of a Solid Object.

### ▾ **Finite element collision attributes**

**@exteriorcollisionid – Int**Collision identifier for the exterior side of a polygon or tet surface**@interiorcollisionid int**– Collision identifier for the interior side of a polygon or tet surface

### ▾ **Finite element Repulsion and Friction attributes**

**@repulsion****float**– Multiplier for the Repulsion of an FEM Object**@friction****float**– Multiplier for the Friction of an FEM Object

### ▾ **Finite element Material Space Attributes**

**@material****vector**– Material position of each point, defining the material space**@material****vector**– The U direction within the material space**@material****Vector**– The V direction within the material space**@material****vector**– The W direction within the material space**@materialuvw****vector**– Local material uvw coordinates for each point or vertex of a tet.**@materialuv****vector**– Local material uvw coordinates for each point or vertex of a polygon or polysoup.

### ▾ **Finite element Material Property Multiplier Attributes**

**@fracturepart****int**– Partitions the object into unbreakable parts. Must be either -1 (no part) or a nonnegative number that indicates a part.**@enablefracturing int**– Locally enable/disable fracturing for points or vertices.**@fracturethreshold****float**– Multiplier for the object’s Fracture Threshold.

### ▾ **Finite element Fracturing Control Attributes**

**@Fracturepart****int**– Partitions the object into unbreakable parts. Must be either -1 (no part) or a nonnegative number that indicates a part.**@eablefracturing****int**– Locally enable/disable fracturing for points or vertices.**@eracturethreshold****float**– Multiplier for the object’s Fracture Threshold.

**Finite element Drag Force Control Attributes**

**@normaldrag****float**-Multiplier for the object’s Normal Drag.**@tangentdrag****float**– Multiplier for the object’s Tangent Drag.

### ▾ **Finite element Reference and Target Attributes**

**@initialpid int**– initial point index for each point.**@targetP****vector**– Target position of each point.**@targetstrength****float**– Multiplier for the object’s Target Strength. If this attribute is missing, a multiplier of 1 is used at all points.**@targetdamping****float**– Multiplier for the object’s Target Damping. If this attribute is missing, a multiplier of 1 is used at all points.**@pintoanimation Int**– When 1, the point is hard constrained to the target animation (e.g., targetP). When zero, the point is unconstrained.

### ▾ **Finite element Fiber and state Attributes**

**@fiberstiffness****float**-Multiplier for stiffness along the fiber direction, the W direction implied by materialuvw.**@fiberscale****float**-Multiplier for the rest strain along the fiber direction, the W direction implied by materialuvw.**@P****vector**– Do not modify! Current position of each object point.**@v****vector**– Do not modify! Current velocity of each object point.**@accel****vector**– Do not modify! Current acceleration of each object point.**@jerk****vector**– Do not modify! Current jerk of each object point.

### ▾ **Finite element Embedded Geometry Attributes**

**@parent****float**– The index of a parent primitive in the simulated geometry.**@baseP****floa**t -Base positions used for alignment with simulated mesh.**@fracturepart****float**– Optional user-specified fracture part ID.**@P****float**– Positions that correspond to the deformed state.**@v****float**– Velocities that correspond to the deformed state.**@N****float**– Normals that correspond to the deformed state.

### ▾ Finite **element Optional Output Attributes**

**@quality****float**– A quality metric between 0 (worst) and 1 (best)**@potentialdensity****float**-The local density of deformation energy**@dissipationdensity****float**-The local density of the rate of energy loss**@kineticdensity****float**-The local density of the kinetic energy**@fracturecount int**– The number of times a point was fractured during the simulation

### ▾ **Finite element Legacy Attributes**

**@fexternal****vector**– External force density**@force****vector**– Another name for external force density

## ► **Houdini attributes list of wire Network**

### ▾ Wire behavior **Attributes**

**@width****float**– Width of each edge.**@density float**– Density of each point.**@orient****quaternion**– Initial orientation of each point. This value is stored as a quaternion.**@v****vector**– Initial velocity of each point.**@w****vector**– Initial angular velocity of each point measured in radians per second.**@friction float**– Friction of each point.**@klinear****float**– How strongly the wire resists stretching.**@damplinear****float**– How strongly the wire resists oscillation due to stretching forces.**@kangular****float**– How strongly the wire resists bending.**@dampangular****float**– How strongly the wire resists oscillation due to bending forces.**@targetstiffness****float**– How strongly the wire resists deforming from the animated position.**@targetdamping****float**– How strongly the wire resists oscillation due to stretch forces.**@normaldrag****float**– Component of drag in the directions normal to the wire.**@tangentdrag****float**– Component of drag in the direction tangent to the wire.**i@nocollide****float**– Collision detection for the edge is disabled (Only used if Collision Handling is SDF).**@restP****vector**– Rest position of each point.**@restorient****quaternion**– Rest orientation of each point.**@gluetoanimation int**– Causes a point’s position and orientation to be constrained to the input geometry.**@pintoanimation****int**– Causes a point’s position to be constrained to the input geometry.**@animationP****vector**– Target position of each point.**@animationorient****quaternion**– Target orientation of each point.**@animationv****vector**– Target velocity of each point.**@animationw****vector**– Target angular velocity of each point.**@independentcollisionallowed int**– Toggle external collisions (Only non-SDF Geometric Collision).**@independentcollisionresolved****int**– Unresolved external collisions (Only non-SDF Geometric Collision).**@codependentcollisionallowed****int**– Toggle soft body collisions (Only non-SDF Geometric Collision).**@codependentcollisionresolved****int**– Unresolved toggle soft body collisions (Only non-SDF Geometric Collision).**@selfcollisionallowed****int**– Toggle self collisions (Only non-SDF Geometric Collision).**@selfcollisionresolved int**– Unresolved toggle self collisions (Only non-SDF Geometric Collision).

## ► **Houdini attributes list of Bullet RBD packed system**

### ▾ **RBD Packed point attribute**s

**@active**int – Object is able to react to other objects.**@animated**int – Transform should be updated from its SOP geometry at each timestep.**@deforming**int – Collision shape to rebuilt from its SOP geometry each timestep.

### ▾ **RBD Packed point stored attribute**s

**@bounce**float -The elasticity of the object.**@bullet_add_impact**int – Impacts will be recorded in the Impacts or Feedback data.**@bullet_ignore**int – Object should will be ignored by the Bullet solver.**@bullet_angular_sleep_threshold**float – Sleeping threshold for the object’s angular velocity.**@bullet_linear_sleep_threshold**float – Sleeping threshold for the object’s linear velocity.**@bullet_want_deactivate**int – Disables simulation of a non-moving object .**@computecom**int – Center of mass computed from the collision shape.**@computemass**int – Mass computed from the collision shape and density.**@creationtime**float – Stores the simulation time at object was created.**@dead**int – Object should be deleted during the next solve.**@density**float – Mass of an object in its volume.**@friction**float – Coefficient of friction of the object.**@inertialtensorstiffness**float – Rotational stiffness.**@inheritvelocity**int – v and w point attributes from the SOP geometry velocity.**@mass**float – Mass of the object.**@name**string -Unique name for the object. Used by Constraint Networks.**@orient**quaternion – Orientation of the object.**@pivot**vector – Pivot that the orientation applies to**@v**vector – Linear velocity of the object.**@w**vector – Angular velocity of the object.

### ▾ **RBD packed Collision Shape Attributes**

**@bullet_adjust_geometry**int – Shrinks the collision geometry.**@bullet_autofit**int – Bounds of the object for Box, Capsule, Cylinder, Sphere, or Plane.**@bullet_collision_margin**float – Padding distance between collision shapes.**@bullet_georep**string – Can be convexhull, concave, box, capsule, cylinder, compound, sphere, or plane.**@bullet_groupconnected**int – Create convex hull per set of connected primitives.**@bullet_length**float – Length of the Capsule or Cylinder collision shape in the Y direction.**@bullet_primR**vector – Orientation of the Box, Capsule, Cylinder, or Plane collision shape.**@bullet_primS**vector – Size of the Box collision shape.**@bullet_primT**vector – Position of the Box, Sphere, Capsule, Cylinder, or Plane collision shape.**@bullet_radius**float – Radius of the Sphere, Capsule, or Cylinder collision shape.

**@bullet_shrink_amount**float – Amount of resizing done by Shrink Collision Geometry.

### ▾ **RBD Packed Collision Attributes**

**@activationignore**string – Won’t be activated by collisions with any objects .**@collisiongroup string**– Name of a collision group that this object belongs to.**@collisionignore**string – The object will not collide against any objects.**@min_activation_impulse**float – Minimum impulse switch from inactive to active.

### ▾ **RBD packed Speed Limit Attributes**

**@speedmin**float – Minimum speed in second a particle can move.**@speedmax**float – Maximum speed in second a particle can move.**@spinmin**float – Minimum speed in radians per second a particle can spin.**@spinmax**float – Maximum speed in radians per second a particle can spin.**@accelmax**float – Limits the change in the object’s speed caused by enforcing constraints.

**@angaccelmax**float – Limits the change in the object’s angular speed caused by enforcing constraints.

### ▾ **RBD packed force Attributes**

**@airresist****float**– Resistance to match the target velocity (v@targetv).**@drag****float**– @airresist attributes effect the object.**@dragexp****float**– Angular and linear drag.**@force****vector**– Force that will be applied to the mass of the object.- @spinresist float – Match the target angular velocity.
**@targetv****vector**– Target velocity for the object.**@targetw****vector**– Target angular velocity for the object.**@torque****vector**– Torque that will be applied to the object.

### ▾ **RBD packed Reserved Solver Attributes**

**@bullet_autofit_valid****int**Computed collision shape attributes by solver.**@bullet_sleeping****int**-Tracks the object sleep by the solver.**@deactivation_time****float**– Amount of time the speed has been below the value**@found_overlap****int**Solver to determine the overlap test.**@id****int**– A unique identifier for the object.

**@nextid****int**– Id solver will assign to the next new object.

## ► **Houdini attributes list of DOP Constraint Network**

### ▾ **behaviour and type constraint attributes**

**@constraint_name string**– Prim attribute specifying the Data Name of the constraint to create.**@constraint_type****string**– Prim attribute specifying degrees of freedom (‘position’, ‘rotation’ or ‘all’).**@next_constraint_name****string**– Prim attribute specifying the next constraint_name to use after broken.**@next_constraint_type****string**– Prim attribute specifying the next constraint_type to use after broken.**@propagate_iteration****int**– Detail attribute specifying number of impact propagations for glue constraints.**@group_broken****int**– Any constraints that are in the broken primitive group will be ignored by solvers.

### ▾ **Anchor constraint Attributes**

**@anchor_id****int**– Anchor’s position will be bound to point .**@anchor_type int**– Anchor type attached to a point, vertex or agent transform.**@condir****vector**-The normal of a plane object can move on or rotate about.**@condof****int**-Identifies the number of constrained degrees of freedom for an anchor.**@name****string**– Object constraint is attached to.**@P****vector**-Identifies the initial world space position of the anchor.**@orient****quaternion**– Initial world space orientation of the anchor.**@r****vector**– Initial world space orientation of the anchor as Euler angles.**@v****vector**– Velocity of the world space position to which the constraint is attached.**@w****vector**– Angular velocity of the world space position to which the constraint is attached.

### ▾ **Constraint feedback Attributes**

**@force****float**Prim attribute to contain the force applied to satisfy the constraint.**@distance****float**Prim attribute to contain the distance between it’s anchors.**@torque****float**Prim attribute to contain the torque applied to satisfy the constraint.**@angle****float**Prim attribute to contain the angle (in radians) between the anchors.**@impact****float**Prim attribute to contain the accumulated impulses for the glue bond.

## ► **Houdini attributes list of DOP vellum Network**

### ▾ **Vellum Setup Attributes**

**@materialuv****vector**– Set by the Planar Patch or Planar Patch from Curve SOPs. Used to determine warp/woof directions for anistropy.**@bendname, @stretchname****float**– Scale by Attribute in Vellum Constraints defaults to these sorts to adjust the scale. Should be 0..1, note exponential map.

### ▾ **Vellum Pop Attributes**

**@dragnormal, @dragtangent****float**– How much to scale wind effects when the face of the cloth is heading straight into the wind versus sliding parallel to it- I
**nertia****float**– The resistance of a particle to rotational hair constraints. If this is zero, the particle will not rotate. **@weld, @branchweld,@ collisionweld****int**– A value of 1 or a reference to itself means not welded, but something might be welded to this point**@friction, @dynamicfriction float**– Scale the static friction (friction) and dynamic friction scale (dynamicfriction) settings by.**@pressurescale****float**– How much to scale the effect of a Pressure constraint on a per-point basis, from 0 to 1.

### ▾ **Vellum State Attributes**

**@P, @pprevious, @plast, @v, @vprevious,@vlast****vector**– For 2nd order we need the previous frames position and velocity (pprevious, vprevious), and the frame before that, two frames ago (plast, vlast).**@orient, @orientprevious, @orientlast, @w, @wprevious, @wlast****vector**– Hair requires point orientations and the corresponding angular velocity (w). Same previous/last.**@stopped****int**– This is a standard POP attribute, but it is used and respected by Vellum. Auto-sleep and awaken will manipulate the stopped attribute.

### ▾ **Vellum Collision Attributes**

**@pscale****float**– Radius at each point. Triangles are fattened at their corners by spheres of the corner pscales, tapered tubes on edges, and sloped planes in center.**@layer****int**– Controls soft priority of collisions. Only greater/less matters, not magnitude of difference.**@disableself, @disableexternal****int**– A value of 0 means this point will use self collisions or external collisions.**@overlap_self, @overlap_external****float**– Stores how much of the original pscale is overlapped. So 0 means that the pscale is fully used.**@collisionignore****string**– Stores a pattern for the objects and collision groups to not collide with. This means the default empty string will enable all collisions.**@collisiongroup****string**-Gives the collision group that this point belongs to. If this matches a collision ignore label, it will not engage in collision detection.

### ▾ **Vellum Targeting Attributes**

**@target_path int, @target_pt string,@ pintoanimation string, @gluetoanimation****string**– The target path and point number for any pins when the Target parameter is set in Vellum Source.**@targetweight float**– Affect the strength of the pinned points using a 0..1 weighting value.

### ▾ **Vellum Breaking Attributes**

**@breakthreshold, @breaktype float,****string**– The threshold for breaking welds and branch welds, measured against the breaktype, which can be one of the following: stretchstress, bendstress, stretchdistance, stretchratio, or bendangle.**@pressuregradient, @volumepts, @volume vector, int**– When a point is part of a Pressure constraint, these attributes hold values computed during constraint evaluation.

### ▾ **Vellum Internal worker Attributes**

**@dP, @dPw****float**– Constraint displacements/weights. Likely of last iteration, so out of date.**@patchname****string**– Identifies each generated patch in a simulation so it can be updated/replaced.**@L vector**– The amount of work done by a constraint, possibly along different stiffness or compression stiffness axes.**@pts****int**– Array of points affected by this constraint

### ▾ **Vellum constraints Attributes**

**@dampingratio float**– 0..1 damping ratio.**@restlength****float**– The initial “distance” of the constraint.,**@restlengthorig****float**– Distance constraints use distance, bend constraints use angle in degrees, volume and pressure constraints use volume.- @restvector vector – Orientation constraints need a rest orientation, so store a quaternion here. This vector is also used to store target positions for pin constraints.
**@rest****vector**– The original point position in rest space, used by shapematch constraints.**@stiffness****float**– How strongly to enforce the constraint.**@compressionstiffness****float**– How strongly to enforce the constraint when it is being compressed.**@stiffnessdropoff @stiffnessscaled @stiffnessdropoffmin****float**– The distance from the rest state at which the stiffness of the constraint drops off to zero, or increases from zero to full stiffness, depending on the direction of the dropoff.**@distance****string**– Type of the constraint.Constraints the points to be restlength apart. distance is used for intrinsic distance constraints, like the edges of triangles or hairs.**@stitch****string**-Type of the constraint. stitch is an alias for distance. It acts the same, but semantically is used for non-topological elastics added to the sim**@branchstitch****string**– Type of the constraint. branchstitch is used for the automatic branch welding.**@ptprim****string**– Constraint between a point and a location on a primitive, usually created with the _Use Closest Location on Primitive option on the Vellum Constraints SOP**@bend****string**– four-point constraint. The points represent the 4 points of two triangles that share an edge. The constraint is applied to maintain an angle along the shared edge.**@angle****string**– A three-point constraint. Maintains the dihedral angle measured at the middle points. This is used by the String constraint types.**@tetvolume****string**– A four-point constraint. Maintains the volume of the tetrahedron described by the four points.**@pressure****string**– A many-point constraint. All the points represent a surface of a mesh. Volume is computed on the mesh and stored on the points, and then all the points are inflated or deflated to maintain that volume.**@pin****string**– Pins a point to a certain world space location.**@attach****string**– attach implies updating the target location from the target attributes per-substep. pin by contrast is updated according to the matchanimation attribute.**@attachnormal****string**– An additional constraint created for Attach to Geometry constraints when __Tangent Stiffness_ is enabled. This constraint keeps the constrained point aligned with the target object normal, as specified in the restdir attribute.**@pinorient****string**– Pins the orientation of the point to match the rest orientation.**@bendtwist****string**– Two point constraint. Constrains the orientation of points on an edge to be consistent, thereby creating torsion effects along hairs.**@stretchshear****string**– Two point constraint. Combination of both a distance constraint and a bend constraint for edges. This is used by hair.**@tetfiber****string**– A tetrahedral constraint that allows compressing the tetrahedron along the local space direction specified in its points’ materialW attribute.**@triarap****string**– An As-Rigid-As-Possible stretch constraint on triangles that minimizes deviation from the triangle’s rest shape, stored in restvector.**@tetarap*****string**– An As-Rigid-As-Possible stretch constraint on tetrahedra that minimizes deviation from the tetrahedron’s rest shape, stored in restmatrix**@shapematch****string**– A constraint that attempts to keep the original shape of the constrained points, as stored in the constraint geometry’s rest point attribute.

### ▾ **Vellum state Attributes**

**@stress****float**– The amount of stress applied by the constraint.**@slidingrate****float**– The rate at which the target location should slide along the primitives**@target_group****string**– Rate at which the target location should slide along the primitives specified by target_path within target_group**@slidingattrib****string**– If there is a point attribute set to scale the rate, then its name is stored in slidingattrib.**@attribpromote****string**-. The method for promoting attribute values to scale the rate is stored in attribpromote.**@breakthreshold****float**– If breakthreshold is less than zero, no breaking will occur**@breaktype****string**– Threshold for breaking the constraint, measured against the breaktype, which can be one of the following: stretchstress, bendstress, stretchdistance, stretchratio, bendangle.**@plasticthreshold****float**– negative for a stretch constraint, it is treated as a ratio of the current restlength.**@plasticrate****float**– threshold for applying plasticity to the constraint, which modifies the constraint’s restlength to match the current state, at a rate specified by plasticrate**@plastichardening****float**– The. If plastichardening is > 1, the constraint’s stiffness will be scaled higher at the same rate; if < 1 it will be scaled lower.**@plasticflow****float**– The amount of plastic flow that occurs for a constraint is stored in plasticflow.**@matchanimation int**– If set to 1 for pin constraints, the solver will lookup the constrained point’s target_path and target_pt

**Free Houdini Tutorials and Webinars**

**Ask any Houdini technical query , Teamvfx will reply soon**

### Awesome quick tip and tricks in VEX / Python

_{// removes random point with certain probability // run over points, create spare parameters}_{ removepoint(0, rand(@ptnum + ch("seed")) < ch("probability")?@ptnum:-1);}

_{v@Cd = vector(chramp('color', rand(@ptnum+ch('seed'))));}

_{# put a python node # to get a point attribute}_{ for point in geo.points(): print point.number() print point.attribValue("Cd")}

_{// create spare parameters}_{ }_{@P += curlnoise(@P)*{1,0,1}*fit01(rand(chi('seed')),ch('min'),ch('max'));}

_{// removes random primitive with certain probability // run over primitives, create spare parameters}_{ removeprim(0, rand(@ptnum + ch("seed")) < ch("probability")?@primnum:-1, 1);}

_{# put a python node # Set an attribute}_{for point in geo.points(): point.setAttribValue("Cd", [1,0.1,0]) }_{ }

_{// create spare parameters}_{ float rand = rand(@ptnum+ch('seed')); float pow = ch('power'); // default is 1 @pscale = fit01(pow(rand, pow), ch('min'), ch('max'));}

_{// create spare parameters}_{ vector bb = relbbox(0, @P); @Cd = vector(chramp('ramp', bb.y));}

_{# Get a detail attribute }_{start = geo.attribValue('your_attr')}

**Keep visiting the site. More Houdini tutorials are on the way**.

𝐋𝐞𝐚𝐫𝐧 𝐡𝐨𝐮𝐝𝐢𝐧𝐢 𝐢𝐧 𝐩𝐫𝐨𝐜𝐞𝐝𝐮𝐫𝐚𝐥 way “𝐡𝐨𝐮𝐝𝐢𝐧𝐢 𝐰𝐚𝐲” . ► 𝐇𝐎𝐔𝐃𝐈𝐍𝐈 ► 𝐕𝐄𝐗 ► 𝐌𝐀𝐘𝐀 𝐌𝐄𝐋 ► 𝐏𝐘𝐓𝐇𝐎𝐍 ►𝐍𝐔𝐊𝐄 -TCL ► 𝐂𝐆𝐈 𝐚𝐧𝐝 𝟑𝐝 𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐈𝐍𝐆 (𝐏𝐘𝐓𝐇𝐎𝐍 , 𝐂++, API)…𝐋𝐞𝐚𝐫𝐧 𝐮𝐬𝐞 𝐨𝐟 𝐜𝐨𝐝𝐢𝐧𝐠 𝐢𝐧 𝐕𝐅𝐗.