Page MenuHome

Curve Fillet Node
Closed, ResolvedPublicDESIGN

Authored By
Hans Goudey (HooglyBoogly)
Jun 17 2021, 5:44 AM
Tokens
"100" token, awarded by gilberto_rodrigues."Burninate" token, awarded by slowburn."Love" token, awarded by wilBr."Love" token, awarded by HEYPictures."Like" token, awarded by GeorgiaPacific."Love" token, awarded by Apofis."Love" token, awarded by Bit.

Description


This nodes creates a constant radius fillet at each selected point of the curve, meaning that at every selected point, there will be a new circle portion segment or segments (depending on the resolution.

Details
  • A resolution of 1 adds just the two points on each corner, creating a chamfer (hard edge).
  • Higher resolutions add more points on the corners.
  • Both radius and resolution can be driven by attributes.
  • Ideally if the radius is large enough that it it will intersect neighboring points, they could be removed.
    • Also, ideally two fillet radii would be able to gracefully intersect.
Related Nodes
Node to calculate the angle at each control point (free or vector control points for bezier splines) and store the result in an attribute, used for procedural control of which points are beveled. A curvature builtin attribute or a node to calculate curvature would also work
Further Questions
  • What should happen for NURB splines?
Implementation

D6386: [WIP] Bevel: Constant Radius Mode is somewhat similar, though this will be much simpler than implementing something like this in the bevel modifier, since this is just 2D and there are no N-way intersections.
As an optimization, the node could modify an existing curve or create a new one based on the size of the selection-- if it's just a few points out of many, it will likely be more efficient to reuse memory.

Event Timeline

Hans Goudey (HooglyBoogly) changed the task status from Needs Triage to Confirmed.Jun 17 2021, 5:44 AM
Hans Goudey (HooglyBoogly) created this task.
Hans Goudey (HooglyBoogly) updated the task description. (Show Details)

I'm assigning this to Dilith since he is currently working on it as part of his GSoC project.