The Ultimate Houdini node reference

Visit the Node Bible

To learn more, please log in or sign up for free to explore the Node Bible.
Write your awesome label here.


Write your awesome label here.
Write your awesome label here.

Deletes input geometry by group, entity number, bounding volume, primitive/point/edge normals, and/or degeneracy. 

Drag to resize


   If the blast sop doesn't have the functionality you need to delete something, then try using this node instead. The blast node only gives you the group syntax as a way selecting things for deletion. In contrast, the delete node gives you much more control over the specific criteria for deletion.

    To make the most of the delete SOP, you'll want to understand how to utilize group expressions. For information on this visit:

Drag to resize

Main Parameters:


--  To delete selected or non-selected


--  What sort of geometry component are you trying to target?  If selecting edges, realize that Houdini will use edges to ultimately select associated points.  In Houdini, edges are not considered to be a geometry component because edges are not responsible for the generation of a primitive.

Geometry Type:

--  Here you can specify the exact type of primitive that you'd like to delete.  Keep in mind that selecting a specific type of geometry will only allow the delete sop to delete something if the geo type matches the type specified here.

Drag to resize


This section is dedicated towards selecting points/primitives/edges by their number


-  Delete by pattern:
    *  In this field, you can specify point or primitive numbers that match what you're trying to delete.  You can also use pattern expressions here.  Check out this link for the syntax:

-  Delete by Range:
    *  Delete points/primitives whose numbers fall within a certain range, and/or delete every few points/primitives. Edges use primitive numbers.
    *  In other words, the Start/End specifies the range of prim or point IDs it's allowed to work on.  The Select_ of_ means to delete every __ out of __.
        **  As an example:  If I say that the start/end is 200 to 500, then the delete sop only looks at points/prims which have an id between 200 and 500.  Then, if I say Select 3 of 4, that says "Delete 3 out of every 4 points/prims that live in-between ids 200 and 500.

-  Delete by Expression:
    *  Here you can add an expressions to delete primitives or points.  It's different than the patterns because you can utilize both prim and point expressions.  This evaluates for every point/primitive, and if the expression is true, then it will delete the point/primitive.
    *  Point Expressions:
        **  As an example... $TY>0 will delete any primitive that lives above 0 in the y direction.  BUT the $TY is H-Script which is being replaced by vexpressions in the future.  So in vex, to say the same thing you would type:  @P.y>0
    *  Keep in mind that HScript expressions may be depreciated in the future and replaced by vexpressions. 
    *  Further info on vexpressions are found here:
    *  Also, if you don't understand vex at all, then check out Vex Foundations I and this will become much more understandable.

Drag to resize

Bounding Volume:

This section allows you to specify a "Bounding Volume" - which is either a box or a sphere - and this tells the delete node that it's only allowed to work inside of that box or sphere.  All the other parameters on the delete sop work as normal within the box or sphere.

Drag to resize


This section allows you to delete faces/points based on the direction of their normals.


--  Which direction would you like the matching normals to face?

Spread Angle:

--  How close does a normal need to be to the direction in order to be considered for deletion?

Backface From:

--  This setting is really cool because it takes a camera and deletes any polygons which are not directly facing the camera.  All you do is load in the camera and it will delete any polygons it can't see.

Drag to resize


"Degenerate" primitives are determined by the area size of the primitive.  That is - how large the primitive is.  In other words, if you want to delete primitives that are really, really small, then you can do so with this "Degenerate" primitive tab.

Here are a few things which can cause a primitive to be considered "Degenerate"
    --  If two vertices are colinear within the same primitive (imagine two verts which live on the same perfectly straight line)
    --  If a primitive has zero area (This can be caused by two verts living on the same line without being connected to anything else) 
    --  Repeated reference to points and vertices within faces... if somehow you have extra points/verts associated with a primitive.
    --  Really small polygons which are less than the "Tolerance" size.  

Delete Degenerate Primitives:

--  This says, "Hey, take a look at the area of each primitive, and if the area is less than the Tolerance, then delete it"

Delete Zero-Area Face:

--  This says, "Hey if the area = 0, then delete it"

Treat Open Faces as Closed

--  This says, "Hey, if the polygon is open (that is, if the polygon is acting like a polyline and only exists in one direction), then go ahead and consider that to be a closed polygon anyway so that the zero-area faces parameter can delete it."  For a good example of this, check out video #2 above toward the very end.