animatrix posts
VEX Poly Carve SOP on Closed Surfaces
Poly Carve SOP can also carve closed polygons where it will still use the points but instead of creating multiple curves, it will keep a single polygon.This method will carve geometry like a torus as you expect.Because of this, the higher resolution the surface is, the more detailed carving you can achieve.Here I used 2 separate nodes for ease of use, but the same result can be achieved using a single Poly Carve node if you have the appropriate primitive attributes on each branch.
Upcoming Video Tutorials
Based on regular feedback regarding the technical level required to fully understand my content, I have decided to create regular video tutorials on Patreon, ideally around 30 minute mark per video for ease of consumption. Because it's orders of magnitude more work than packaging my tools, I will create a separate tier, possibly $29 a month, which is still very accessible and is for people who want deeper understanding of advanced topics inside Houdini.I will post the first one free for all so people can decide if it might be useful for the...
VEX Poly Carve SOP
Carves out polygons using a point attribute with the ability to define the carve values per primitive using primitive attributes.Pure VEX implementation, 10x faster than the default Carve SOP (compiled). It preserves all available attributes.It supports both open and closed polygons.https://www.dropbox.com/s/63k1eek78rxfzm0/PolyCarve_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/27xdef7eye9yeh5/polycarve.hip?dl=1
TimeBlend SOP
This operator will cook its input at the nearest available (sub)frames. The values are then blended according to the fractional position within the nearest available (sub)frames.After using the subframe interpolation method extensively that I posted here the last time, I realized this functionality should be turned into a new operator, a new TimeBlend SOP, a successor to the old one, which have significant improvements over it.Before explaining the differences, it's worth noting the reasoning behind this operator. Proper subframe interpolat...
Substeps and Subframe Interpolation
In Houdini, dealing with substeps is a complex phenomenon. Writing them is easy, but reading and interpolating between the subframes is tricky.To write subframes on disk, all you have to do is to use $FF, instead of $F. That's it.Now to read them, if you use the same file sequence used for writing subframes to disk, and you have the Integer Frame Values option turned off in Global Animation Options, you will have a lot of read errors as you scrub the timeline.What you have to do is to read the nearest (sub)frame using the TimeShift SOP with...
VEX From Polar COP
Transforms a polar image into a rectangle.Reverse operation of To Polar COP. This operation will preserve the aspect ratio of the image provided the input image has the appropriate size.COPs are really powerful but unfortunately the architecture is old. 2d volumes is a better generalization of image operations where you can do a lot of homogenous operations.I am a strong proponent of software orthogonality and generics so I will implement this system in the future, as the initial groundwork requires quite a bit of work to get it to a level wher...
VEX To Polar COP
Transforms a rectangle image to polar coordinates.This operator demonstrates a lot of useful techniques that can be applied in any contexts as a generic operator. In the future, there will be a larger effort to implement these in VOPs so that they can be used on any data, and not just COPs. I have to come up with a unified method as I can't use context specific functions.COP context has some very specific properties and functions as they use VEX, as opposed to CVEX functions. In terms of image filtering though, you have to implement your ow...
VEX Ocean Spectrum Retime SOP
Retimes ocean spectra by altering the time scale directly on the spectra volumes, rather than at the evaluation step, and computes the new time offset to keep the same ocean look by using the reference frame, that will appear in both time scales.If you are passing spectra data over other departments like lighting, you have to bake the retime operation on the spectra volumes.Another advantage of using this node is, if you just change time scale directly on the Ocean Spectrum node manually, you will lose the original time offset you had with the ...
Blend VOP
Computes a blend between 2 values.The list of supported attribute types are float, vector, vector2, vector4, matrix3, matrix and float array.In the case of vectors (vector2/3/4), it has the option to treat them as normals as opposed to positions.https://www.dropbox.com/s/v6cfpttoacvx3b3/Blend_VOP_Animatrix.otl?dl=1https://www.dropbox.com/s/z9v4er5psnmzw2u/blendvop.hip?dl=1
Blend Color VOP
Linearly interpolates between two colors.By default it blends colors using the LCh color space. LCh is the perceptually uniform equivalent of HSV, and defines colors using intuitive and perceptually-based luminance (perceived brightness), chroma (richness) and hue. If you are doing any kind of image analysis, it's likely that LCh will be much more useful to you than HSV or RGB.To implement the LCh color space, you first need to implement the Lab color space. Note that the Lab color space provided by this operator is different than the one i...
VEX Coil SOP
Creates curves that coils around other curves.https://www.dropbox.com/s/8zd2org3ygnic0d/Coil_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/wj9jj2oum2cbhnw/Spiral_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/40jukgbavz8dwlt/CurveFrame_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/l6z1v8okdqozlv7/coil.hip?dl=1
VEX Limit Surface Sample SOP
Evaluates attributes at the subdivision limit surface using Open Subdiv.It can be used to preserve the curvature of a geometry after adding new geometric detail, or to create an isoline display for a geometry or to sample the normals at the limit surface so the current geometry can have the smoothest normals it can ever have, etc.https://www.dropbox.com/s/2mr3j1l8mwdu1n7/LimitSurfaceSample_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/6zppqhc2qs2jpwy/limitsurfacesample.hip?dl=1
VEX Path Deform SOP and VEX Volume Sharpen SOP Updates
Volume Sharpen SOP can now sharpen VDB volumes on the non-OpenCL branch.I implemented a lot of new enhancements for the Path Deform SOP. It's a much more powerful deformer now that can perform a lot of complex deformations, undo and redo them (undeform and redeform).1. 3 Operations: Deform, Undeform and Redeform.2. Redeform operation: If a second path is provided using the 3rd input, the geometry will first be undeformed using the first path, and then redeformed using the second path, essentially combining 2 operations into one.3. You can n...
VEX Path Undeform, Bias and Gain
Path Deform can supersede a lot of deformers like bend, bias, gain, stretch and twist with the ability to describe much more complex deformations along a path.That's why I decided to enhance this deformer quite a bit. So far I added 3 new features. Bias shifts the points to accumulate at one end of the path. Gain shifts the points to accumulate at or away from both ends of the path.I also added a new mode called Undeform that allows you to restore geometry to its undeformed state as if it was deformed using a path. Additionally Bias, Gain a...
Compilable SOPs
Here is the list of compilable SOPs as of right now:Bend SOPBias SOPBoxify SOPClusterFoam SOPColorRandom SOPConvertPackedToPoints SOPCurveFrame SOPCylindrify SOPDisplace SOPFlatten SOPGain SOPJitter SOPLambda SOPMelt SOPMountain SOPNeighbour SOPPathDeform SOPPCA SOPPointConnect SOPProximity SOPRipple SOPSkew SOPSpherify SOPSplineBox SOPStretch SOPTaper SOPTwist SOPVisualizePieces SOPVolumeBlur SOPVolumeConvolve SOPVolumeDeform SOPVolumeSharpen SOPVortex SOPWave SOPDon't be confused with the non-compilable SOP badges that show up with these ...
Lambda SOP
This operator invokes any number of operations on any number of arbitrary attributes over any geometry/element/numberor no input at all, in a feedback or merge gather style.In computer programming, lambda function is an anonymous function (function literal, lambda abstraction, or lambda expression) is a function definition that is not bound to an identifier. Anonymous functions are often arguments being passed to higher-order functions, or used for constructing the result of a higher-order function that needs to return a function. Anonymous fun...
Update
Hi everyone, the year is almost over. Just want to inform everyone that I have been updating a lot of HDAs in the background, for bug fixes, new features, improved performance and making sure the HDAs are compilable unless there is a default Houdini node inside that is not compilable yet.I am not posting each time I make a change to reduce clutter, but you can download the latest version of each node I posted here to enjoy the improvements.Next week I will try to finish a new tool with video that brings a new workflow paradigm inside Houdini. I...
OpenCL Smooth SOP
Smooths out points using a low pass filter either by Taubin or Laplacian algorithm.1. OpenCL acceleration.2. VEX code branch.3. Two algorithms to choose from: Taubin and Laplacian. I merged the Relax SOP code into this operator as Laplacian.4. Ability to use edge or primitive neighbours with any depth.5. Ability to use point clouds to find neighbours instead of connectivity.6. Ability to reproject geometry onto original input geometry at each iteration.7. Ability to constrain borders.8. Optimized OpenCL relaxing code. Reduced iterations by half...
Viscoelasticity: Multi-Threaded Gas Strain Forces DOP Using VEX
The built-in Gas Strain Forces DOP is single-threaded. This is the VEX version of the Gas Strain Forces DOP, that uses a strain field to determine what forces should be applied to mitigate that strain. This acts as a restorative force to undo the distortion that caused the strain. You can use it as a drop in replacement for the original one.It's meant to be used in conjuction with Gas Strain Integrate DOP.These microsolvers are not as straight forward to multi-thread as face and edge sampling is used for reading and writing in the same code...
Convert Packed To Points SOP & Transform Packed SOP
Convert Packed To Points SOP allows you to convert packed geometry into points and stores the packed transform and pivot data on the points. It has an option to convert the transform primitive intrinsic attribute into a quaternion to save memory and disk space. It's on by default.Transform Packed SOP allows you to transforms packed geometry using transform data found on a point cloud from the second input.Together these VEX operators allow the fastest and the most efficient way to store a packed Bullet simulation and replay it back from dis...
VEX Point Connect SOP
Creates poly lines between points.Has a lot of parameters that streamlines constraint network creation, such as inter/intra-clusters.Can optionally connect between the same/differing attribute values while also being able to optionally remove duplicates using another attribute.https://www.dropbox.com/s/c49lkpb2ifbg1hd/PointConnect_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/g4v5mdxts4spk74/pointconnect.hip?dl=1
OpenCL Volume Blur SOP
Applies Gaussian blur to a volume.Features:1. It is orders of magnitude faster than the default Volume Blur SOP when significant number of iterations are used and OpenCL acceleration is turned on.2. Min/Max Cut Off thresholds3. Both OpenCL and C++ network branches.4. No radius option by design. Using radius creates a large kernel to execute. It's much faster to use 3x3x3 kernel with many iterations that yields a much higher quality result. Using radius also reveals the cubic nature of the volumes as shown in the image above.If you use the s...
Color Nodes in a Subnet by Creator
A quite useful and a hidden gem inside Houdini is its feature to record the name (and computer) of the creator of every single node ever created. It's not displayed anywhere by default so I wrote a Python script to color nodes by their creator and also add this name as a suffix to each node.Very handy when debugging and/or inheriting someone else's scene/setup or HDA. Now you know who to blame :PAfter installing the preset, just create a Null node and then load the preset, or run the Python script manually using shelf/hotkey/Python SOP/...
OpenCL Volume Sharpen SOP
Sharpens the voxels of a volume using the unsharp mask technique that enhances edges via a procedure that subtracts a blurred version of the volume from the original volume.Features:1. It is orders of magnitude faster than the default Volume Wrangle SOP when significant number of iterations are used and OpenCL acceleration is turned on.2. Separate controls for blurring and sharpening iterations.3. Min/Max Cut Off thresholds4. Ability to use a mask volume to mask out the sharpening.5. Both OpenCL and C++ network branches.[Update] Volume Convolve...
OpenCL Volume Convolve SOP
Convolves a volume by a 3×3×3 kernel using OpenCL acceleration.This operator takes each 3×3×3 neighbourhood of a voxel, multiplies it by a set of coefficients, and combines the result into a total. It can be used for blurring, sharpening, embossing, edge detection, and more.It is orders of magnitude faster than the default Volume Convolve SOP when significant number of iterations are used and OpenCL acceleration is turned on. I also added a non-OpenCL (C++) branch.Includes a Gaussian Blur preset (under the gear menu).https://www.dropbox.com...
[VEX] Camera Based Point Cloud Occlusion With Variable Radius [Scene]
How to delete points from a camera view using occlusion in a point cloud with variable radius, without instancing actual geometry.Because of the perspective distortion, it might look like there are overlapping points but I added a planar camera projection preview mode that shows that no point is actually overlapping.Based on a question on the Sidefx forum.https://www.dropbox.com/s/jymzyq6taln5s1a/pcloud_occlusion.hip?dl=1
OpenCL Relax SOP
Moves points away from each other using their edge or primitive neighbours.1. OpenCL acceleration.2. VEX code branch.3. Ability to use edge or primitive neighbours.4. Ability to specify any depth of neighbours.5. Ability to reproject geometry onto original input geometry at each iteration.6. Ability to constrain borders.https://www.dropbox.com/s/5zshndmrkisxfo0/Relax_SOP_Animatrix.otl?dl=1
Adaptive Subdivide SOP
Adaptively subdivides geometry using proximity look ups to another geometry.Subdivision depth: 146.5M vs 26.8B polygons (about 4K less)To avoid having holes in the geometry, use the Houdini-Catmull Clark algorithm. However this will be significantly slower, and prohibitively expensive at these subdivision levels.Adaptive Subdivide SOPSceneEDIT: Improved the curve look up to be resolution independent.
VEX Adjacency Graph SOP
Creates connections between adjacent pieces of a geometry where each piece has a unique attribute.This is a much more generalized version of what's shown in the video.It has a lot more features such as the ability to create connections using piece centers or face centers. This plays an important role when using these polygons as Bullet constraints.I will update the video later on.https://www.dropbox.com/s/k0tk8da7v6j9rwg/AdjacencyGraph_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/lpzwrcc26j8e85r/ColorRandom_SOP_Animatrix.otl?dl=1https://...
VEX Cluster Foam SOP
Creates foam clusters from a point cloud.Can be used for a variety of effects like creating whitewater foam.Implemented entirely using VEX. Shows a couple tricks like pre-generating points to achieve max performance as creating points in VEX is a sequential operation.https://www.dropbox.com/s/9v4li0cgmr4l9y9/ClusterFoam_SOP_Animatrix.otl?dl=1https://www.dropbox.com/s/cdnld3bse4o5l24/clusterfoam.hip?dl=1





















![animatrix post [VEX] Camera Based Point Cloud Occlusion With Variable Radius [Scene] from patreon](https://img5.leakoo.com/storage/11/ca/qq/93d9f0-019e8451-178b-781b-8a00-7507cfad5ea7.gif)


