Houdini 13.0 Nodes

interface version 1

Creates edge group(s) of polygonal edge loop(s), starting from specified edges.

...

Tip

In Houdini, the selected polygonal edge also have direction information. This SOP can (and does) take advantage of this additional information of the selection.

Parameters

Starting Group(s)

A list of edge groups (or individual polygonal edges) to select loops from. An edge loop will be looked for from each individual starting edge.

Walk Mode

The method of finding the next edge for an edge loop.

By Topology

The next edge will be searched for by looking for a local symmetry of polygon/edge topology around the current edge.

By Angle Between Edges

The next edge will be the neighbouring one that has the smallest angle between it and the current edge (regardless of topology).

Tip

Although the “Angle” mode might be faster, the “Topology” mode is usually what is considered to be the proper definition of an edge loop.

Loop Forwards, Loop Backwards

The direction(s) to extend starting edge(s) to form edge loop(s).

Max # Edges Forwards, Backwards

An optional edge count in each direction, limiting the length of an edge loop.

End Edge Group(s)

A list of edge groups and/or individual edges to be marked as “stop edges”. No loop will be grown further when hitting such an edge.

End Angle (Max)

The edge loop won’t group further if the angle between the current and the next edge exceeds this value.

Output Group Name

The name of the edge group(s) to be created.

Multiple Output Groups

If enabled, an individual edge group for each loop will be created, using the Output Group Name as base name.

Output Curves

If enabled, an open polygonal curve will be created for each loop.

Loop Index Attrib

Name of the per-point attribute to contain the number of the edge loop for each point belonging to the edges in the loop (similar to primitive indices).

In-Loop Point Attrib

Name of the per-point attribute to contain the index of the point within the loop for each point belonging to the edges in the loop (similar to vertex indices in a primitive).

Known Issues

The following functionality are not implemented yet:

  • “Angle” mode

  • End edge (group)s

  • Output curves

To Do

  • Should work when applied from the 3d view with selected geometry (edges)

  • Make sure individual edges can be specified in Start Group(s) field (ditto for End Group(s))

  • End groups should be points instead of edges?

  • Highlight results in viewport somehow

  • ...

Release Notes

interface version 1

2014-01-19

First optimization pass (got about ~4x-8x faster, on average).

Particulars: hou.Geometry.findEdge() seems to be very slow (the larger the geometry the slower, probably has to run through the geometry data each time), so the use of this function has been minimized. Also, the code now uses simple representations instead of hou objects for storing lists of geometry components (e.g. using pairs of point indices instead of hou.Edge objects, etc.)

Speedups: 4x from reducing the number of findEdge() calls; ~2x (on average) on assuming single-element result of find_edges_by_pt().

2014-01-17

Initial prototype (very slow but works).