Houdini VOPs, or VEX Operators, are networks that use a visual programming paradigm to create operators that can, for example, deform geometry, define material shaders or generate particle systems. There is a huge range of nodes available inside a VOP — everything from programming logic (e.g. conditionals and loops) to maths (e.g. dot and cross products) to domain specific operators for geometry and shaders.
My little demo project uses a VOP to deform the geometry of a sphere to look like an animated alien sea urchin. This geometry is then converted to a rigid body and the animation of its spiky protrudances moves it around the scene.
The main geometry node is pretty basic - a subdivided sphere feeding into an Attribute VOP:
- By default, a VOP is populated with a global parameters node. The position (P) and frame (Frame) parameters are used to drive the animation.
- The turbulent noise node is set to alligator noise and given an attenuation of 1.5.
- The output of the noise is used to displace each incoming point along its normal.
- To color the geometry, the output of the turbulent noise will be multiplied by 25 - this parameter node contains that value.
- The multiply node multiplies the noise value by the parameter value.
- A color mix node interpolates between yellow and blue based on the multiplied noise value.
- Finally, the displaced point position and the color are piped into the VOP output.
I used the RBD Object shelf tool to convert my animated, displaced sphere into a rigid body. To have the physics working nicely with the animated geometry, "Use Deforming Geometry" is checked inside the RBD Object node inside the generated DOP Network.
And that's it! It actually looks as if VOPs are so powerful, one could avoid ever writing a line of VEX again — much like my Sweetcorn app!