Fuse

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.

Fuse

Write your awesome label here.
Write your awesome label here.
The Fuse SOP will combine points based on a set distance away from target points or relative to the position of a grid. 
Drag to resize

Summary:

In addition to “fusing” points together, this node can also be used for creating abstract effects by fusing points in a variety of ways. The SideFX documentation for the fuse node mentions “query points” and “target points.” The query points are the points that will try fusing to something. The “target points” are the points which the query points are allowed to snap to. The second input of this node can be populated with target points, however, I’ve found it’s much easier to rely on the “Target Group” parameter instead.

Drag to resize

General Parameters:

Group:

--  This group is asking you, “which points are allowed to be query points?” In other words, “which points are allowed to fuse to something?” For more info on groups, please visit the group Node Bible entry.

Target Group:

--  This point group specifies which points the query points are allowed to snap to.

Modify Target:

-  When a query point and a target point fuse, by default, the new attribute values will take on the values held on the target point. This means that attribute values do not get averaged or changed by default. However, if you turn on “Modify Target” then the attribute value will change once two points are fused. Note that this will not work if your target points are coming in from the second input (and this is another reason to not use the second input for most situations). The new attribute values will be averaged. 

Position Attribute:

-  This field is useful for deforming objects. Deforming objects could cause the fuse to combine other points as the mesh is deforming. To prevent this from happening, you can use the rest attribute (which is a stored position of the non-deforming mesh) and the fuse will use this position to determine which points it should fuse rather than position. In most situations you will not need to change this from the defaults. However, if you find yourself in that specific situation, the option is here to use rest position instead.

Snap To:

-  Near Points = This will search for nearby points to snap to
    -- Using... Least Target Point Number (For Cloud Reduction)... This parameter is a bit confusing, and poorly explained. To make a long story short, this will merge your points in a way that creates evenly spaced triangles along the mesh. This mode will also reduce your point count until everything is merged into one point. This is not the mode you want to use if you are snapping together two disjoint pieces of geometry (Which means that this is probably not the mode you want to have on by default if you’re character modeling or want to merge two mirrored pieces together). The “Least Target Point Number” according to the docs states that, “The ‘Least Target Point Number’ method snaps points to the lowest target point number in range, which can ensure that after snapping, if Output Positions is “Least Point Number”, no differently snapped points will be within Snap Distance of each other.”
    -- Using... Closest Target Point (For Disjoint Pieces)... This method is ideal for snapping two disjoint (disconnected) pieces of geometry together. I suggest turning this on by default if you find yourself merging character geometry or trying to mirror things often that need to maintain their shape. (Better yet though, just use the mirror node if you’re mirroring something because this fuse node is over-engineered).

- Grid = Houdini creates an invisible grid of squares as candidate positions to snap to. In practice, this can create abstract FX by making everything look “blocky.”

- Specified Points = Don’t use this parameter. There’s no documentation, and you’re better off using the “Target Group” parameter instead.

Snap Distance = How far out the query points should look for snapping to target points

Output Positions = “When a query and target point find each other, how should the new position be determined?” This is the question that the output position parameter is asking you. To see this in action, set the mode to “Sum” and watch what happens. The positions of the query and target point are added together and the mesh explodes upwards. In most situations, it’s advised to rely on either the least point number or the greatest point number. If you want to then control the direction that things are merging, you can use the “sort” node to determine how the point numbers are arranged.

Radius Attribute = This allows you to override the “snap-distance” parameter based on an attribute value.

Match Attribute = This allows you to determine which points are allowed to match with other points based on their attribute value.

Match Condition = This sets an “if” conditional statement that determines when points are allowed to snap to each other
    -- Equal Attribute Values = Both attribute values must be the same for two points to fuse
    -- Unequal Attribute Vales = Only points with unequal attribute values are candidates for snapping.

Match Tolerance = This is not listed in the documentation, and I’m not sure what it does. My guess is that this may be a + or - value away from the attribute value pairs.

Fuse Snapped Points = According to the docs, “When enabled, points that are snapped to the same position will be replaced with a single point, connected to all vertices of the original points.”  I don't understand why this parameter exists in the first place, so I would say its safe to ignore it.

Keep Fused Points = If you want points to match their locations, not combine, and overlap each other, then this is the option for you. In practice, I don’t usually suggest going this route because overlapping points can cause a variety of issues.

Remove Repeated Vertices and Degenerate Primitives = This parameter aids in keeping your geometry clean. In most situations, I would suggest leaving this on

Remove Unused Points from Degenerate Primitives = This parameter should also be left on in most situations. When degenerate primitives are deleted, there will be floating points left over from that process. If degenerate primitives are removed, then you will most likely want to also remove the points that are left over from that primitive.
- Remove All Unused Points = If you have any floating points that are not associated with vertices/prims, then this option will remove those points.


Output Attributes and Groups:

-- Please watch the end of the second video for a visual demo on what these attributes and groups are designed to do. It’s much easier to see it than explain it through a written format.  


Drag to resize