Houdini 20.0 Nodes Geometry nodes

PolyBevel 3.0 geometry node

Creates straight, rounded, or custom fillets along edges and corners.

On this page
Since 18.0

Overview

Polybevel inserts fillet polygons between edges and in corners, with great control over the shape of the fillet. This node can handle very complex inputs, and is smart about ignoring non-contributing edges.

This is not a boolean bevel. In a boolean-type bevel, the tool first cuts outs the parts of the surface adjacent to the selected corners, then fills in the empty space with new surfaces.

Instead, this is a pure poly modeling bevel. It works with the existing topology to create fillet polygons that match up with existing edges. It is designed mainly to construct the fillet within the space between the corner edge and the next row of polygons.

In this image, the yellow lines show the edges we want to bevel. The pink area shows how far we can take the bevel before the fillet starts to overlap existing polygons. This node will not cut back more than this first row of polygons.

(This node can actually extend the fillet surfaces past the first row of polygons, but this creates overlapping polygons that you must then clean up.)

After applying the bevel, the node highlights the edges the bevel can slide along (see sliding edges below).

How to

To...Do this

Bevel edges

  1. Select the edges, faces, or points you want to bevel. (You can skip this step if you want to interactively choose the edges while using the tool.)

  2. On the Polygon tab, click the PolyBevel tool. Beveled edges are highlighted in bright green.

    If you selected faces, the node converts the selection to the edges of the selected faces.

  3. You can use the parameters in the operation toolbar (above the view) and shortcuts in the state to control most common beveling options in the viewer without having to show the parameter editor:

    • Drag LMB left or right to change the size of the bevel.

    • Scroll mouse_wheel to change the number of divisions in the bevel.

    • Use the Shape parameter in the toolbar to change the bevel profile.

    • ⇧ Shift-click an edge to add it to the bevel.

    • ⌃ Ctrl-click an edge to remove it from the bevel.

    See below for more information.

Tip

If you create the PolyBevel node in the network editor, the default Group is blank, meaning bevel all edges/points. If you create the PolyBevel in the viewer, it sets Group to !* (meaning bevel no edges) to start, so you can choose the edges to bevel interactively.

Change the fillet size

  • In the viewer, hold LMB and drag left or right to change the distance.

    or

  • Edit the Distance parameter to change the size of the bevel.

Change the number of divisions in the fillet

  • In the viewer, scroll mouse_wheel up/down to change the divisions.

    or

  • Edit the Divisions parameter to control how many rows the fillet surfaces have.

Add or remove edges/points to bevel

  • The Group Type parameter on the node controls whether it bevels edges or points

  • In the viewer, ⇧ Shift-click an non-beveled point/edge to add it to the Group parameter.

  • ⌃ Ctrl-click a beveled edge/point to remove it from the Group parameter.

  • See below for how to bevel an edge loop all at once.

It can be hard to tell which edges are beveled when the Distance is 0 (the default). You might want to drag LMB in the viewer to increase the distance to make the bevels easier to see.

Tip

If you clear the Group parameter, it actually means “bevel all edges/points”. If you want to start with no bevels and add them, set Group to !* of making it blank.

In the viewer, you can click the button in the operation toolbar to remove all bevels (this sets Group to !*).

Add or remove an entire edge loop to bevel

  • In the viewer, hold ⇧ Shift + A and MMB-click an edge to add the entire loop.

  • Hold ⌃ Ctrl + A and MMB-click an edge to add the entire loop.

  • The node will take into account the last-clicked edge when deciding how to find loops. So if you want to give it a hint about the loop, hold ⇧ Shift + A and LMB-click one edge in the loop, then MMB-click a second edge in the loop.

    While you hover over edges, the edge under the mouse will highlight in a light color (blue for add, red for remove), and the loop will highlight a darker color. Clicking LMB will only add/remove the edge under the mouse. Click MMB to add/remove the entire loop.

Select the edges/points without interactively cooking

  1. Click the Reselect button next to the Group field or in the operation toolbar to enter a selection mode in the viewer.

  2. Select the edges/points you want to bevel.

  3. Press Enter to set the Group field to the selection.

Tip

To switch the node between beveling points and edges without having to open the parameter editor, click the Reselect button and change the selection type, then select points or edges.

Flip the direction of a non-symmetrical ramp or curve profile

When Shape is “Round” and Profile is “Ramp” or “Curve”, you can turn off Symmetrize so the ramp/curve profile stretches from one side to the other, instead of mirroring at the middle.

With this setup, sometimes the non-symmetrical profile will be going the “wrong” direction along a set of edges, and you want to flip it.

  1. In the viewport, hover over the edge with the profile you want to flip.

    An arrow should appear over the fillet.

  2. Click the arrow to flip the profile along that edge/loop.

    (This adds the edge to the Direction overrides group parameter.)

Sliding edges

To maintain the existing topology, the fillet surfaces can “slide” along ring edges (edges within the 1 polygon ring touching the beveled edges).

  • “Ring edges” are highlighted in blue.

  • Edges the fillet can currently slide on are solid blue.

  • Edges the fillet is not sliding on are dotted blue.

    (In very regular surfaces, fillet points may coincidentally appear to slide along odtted edges. In this case the node has chosen that direction independently, it just happens to coincide with a dotted edge.)

  • You can click a dotted edge to turn it solid (tell the node to slide along it). This adds the edge to the Always slide on list parameter.

    You can also click a solid edge to turn it dotted.

  • The node chooses which ring edges to slide on when Slide on Ring Edges is “Auto”. You can change this to “Always” to slide along all ring edges. Or if you want total manual control, change it to “Never”, then manually turn dotted edges solid as needed.

Tips and notes

  • This node can also “bevel” polylines, inserting extra edges to change the shape of the curve at selected corners.

  • If you selected surface points, the node only creates corner meshes at those points. It does not bevel edges.

  • The Corner faces and Edge faces parameters let you put different types of polygons created by this tool into groups. You can enter the same group name in both parameters to pull all polygons into the same group.

  • Rounded corner meshes can overlap freely if you make the distance large enough. There are no “collision” controls to prevent overlapping corners.

Inputs

First (Polygons to bevel)

The input geometry. You can select edges on this geometry to bevel, or just bevel all edges.

Second (Cross section curve)

When Profile is set to “Curve”, use a curve from this input as a custom cross-section for the fillets.

Parameters

Group

The edges to bevel. Unshared edges, edges shared by three or more polygons, or edges shared by two polygons with inconsistent orientation are excluded.

Group Type

Specifies the component type specified in the Group parameter. The default is “Guess from Group”.

Exclusions

Ignore Flat Edges (coplanar incident polygons)

Don’t try to bevel edges in flat areas (edges where the angle between the faces is less than Flatness angle).

Maximum Normal Angle

When Ignore Flat Edges is on, treat adjacent surfaces with a smaller angle than this (in degrees) to be “flat”.

Offsetting

Distance

The size of the bevel, in Houdini units, from the cut-back to the original corner.

You can scale the distance by an attribute. Change the pop-up menu from “No scaling” to “Scale by Attribute”, then set the name of the point attribute in Point offset scale. The default is pscale.

To scale the distance by a point attribute, change the pop-up menu from “No Scaling” to “Scale by Attribute”, and enter the name of a point attribute to scale by. The default is pscale.

Slide on Ring Edges

Controls what edges the fillets can slide along (see sliding edges above) by default.

Auto

The node chooses which edges to slide on. You can click to switch non-sliding (dotted) edges to sliding (solid) edges.

Always

Always slide along all ring edges.

Never

Don’t slide along any ring edges. If the selected edges don’t give enough freedom, this may not allow a fillet surface at all. You can start from this and manually click to switch non-sliding (dotted) edges to sliding (solid) edges.

Asymmetry tolerance

Beveling uneven edges requires a certain amount of asymmetry to keep fillet edges parallel. This controls how big differences in distance you can tolerate to maintain parallel edges, from 0 (no tolerance) to 1 (unlimited tolerance). A value of 0.5 means you will tolerate one fillet being up to twice as wide as another. If the node cannot maintain parallel edges different asymmetrical fillet sizes, it will start moving edges instead, changing the shape of the surface.

In the image below, the part of the fillet on the wedge “front” is longer than the fillets on the sides, to maintain parallel edges.

Always slide on

A list of ring edges the fillet can always slide on, even when Slide on ring edges is “Never”. Clicking a dotted edge adds it to this list.

Collisions and Limits

Detect Collisions

When two adjacent points in the offset front collide, stop the points there (don’t move the points past each other, creating overlap).

Restrict Sliding to Ring Edges

Stop sliding a point on a ring edge when it reaches the end of the edge. When this is off, the fillet will continue past the end of the edge, creating overlapping polygons.

Stop Offsetting Loops

If you set this to a value other than “Never”, it will stop insetting a loop or all loops when one of the conditions below (When a point reaches end of its slide, When the offset front pinches, When the offset front collides with itself) occurs.

When this is “Individually”, only the loop where the collision occurred will stop growing. Other loops can continue to slide. For example, in the image above, the inset loop on top would stop, but the loop on the sides could continue down the remaining space along the edges.

When this is “Simultaneously”, as soon as one loop stops, all loops stop. This preserves balance between the fillet sides.

When Stop offsetting loops is “Individually” or “Simultaneously”, the following parameters specify the conditions when a loop will stop.

When a Point Reaches End of its Slide

Stop the loop when a point reaches the end of the edge it’s sliding on. This is the same condition as Restrict sliding to ring edges, but where that options stops an individual point from running of an edge, this option stops the loop.

When the Offset Front Pinches

Stop the loop when an acute angle in the offset front closes down to less than a certain number of degrees.

Pinch Angle

The maximum allow angle in acute corners within the offset front, if When the offset front pinches is on.

When the Offset Front Collides With Itself

Stop the loop when part of the offset front touches itself.

Fillet

Shape

Controls how the node builds the fillet surfaces between the bevelled edges.

None

Cut the surfaces back but don’t generate fillet surfaces between them.

Solid

Create a fillet the follows the lines of the adjacent surfaces. This can be useful to sharpen viewport shading along the beveled edges.

(If Divisions is even, the fillet will be chamfered, since the node will have no middle division to use for the corner.)

Crease

Like “Solid”, but creates corner meshes. This is useful for sharpening edges on subdivided surfaces.

Chamfer

Create a flat fillet across the adjacent surfaces.

Round

Create a rounded fillet between the adjacent surfaces. Make sure to increase the number of divisions to see the rounding.

Divisions

Number of rows in the fillet surfaces.

Convexity

Controls roundness and outward/inward bulging of the fillet surfaces. 1 is a circular outward (convex) bulge. 0 is flat (no bulge), -1 is a circular inward (concave) bulge.

Profile

When Shape is “Round”, whether to apply a custom cross-section shape to the fillet.

None

Do not use a custom cross-section.

Ramp

Create a custom cross-section using a Ramp parameter.

Curve

Use a curve connected to this node’s second input as a custom cross-section.

The node will automatically flatten the curve to its closest plane. It then fits the start and end of the curve to the start and end of the profile, scaling the rest of the curve to match. The Symmetrize, Scale, and Convexity controls affect the curve profile just like they do round and ramp profiles.

Note that non-symmetrized curve profiles are extremely hard for the node to merge at three-way corners. The node will do its best, but often there is simply no room to merge the profiles together without self-intersection/overlap.

Profile control

Scale

Scales the distance of the inward and outward movements corresponding to the profile ramp.

Reverse

Flips the ramp values vertically, inverting the profile shape (so values above 0.5 move inward, and values below 0.5 move outward).

Symmetrize

The node interprets the ramp as defining the profile from one edge to the center. The same ramp is then flipped horizontally to define the profile from the center to the other edge. When this is off, the ramp defines the profile from one edge to the other.

Profile Ramp

Controls the shape of the fillet surface when Shape is “Ramp”. A value of 0.5 corresponds to where a flat (chamfered) fillet would be.

Direction Overrides

A list of edges to flip the default profile direction on. You can click an arrow handle on an edge with a non-symmetrized profile to flip the profile on that edge/loop. Doing so adds the edge to this parameter.

Output groups

Point Fillet Group

Create a primitive group in the output containing the faces in corner meshes.

Edge Fillet Group

Create a primitive group in the output containing the faces in the edge fillets.

Offset Group

Create an edge group in the output containing the edges at the boundaries of the fillets.

Examples

PolybevelBox Example for PolyBevel geometry node

This example demonstrates how to bevel geometry using the Poly Bevel SOP.

See also

Geometry nodes