# Curve Fillet Node #89227

Closed
opened 2021-06-17 05:44:02 +02:00 by Hans Goudey · 9 comments
Collaborator

{F10176623 size=full}
{F10176598 size=full}

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

{F10176640 size=full} 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.

{[F10176623](https://archive.blender.org/developer/F10176623/image.png) size=full} {[F10176598](https://archive.blender.org/developer/F10176598/image.png) size=full} 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** | {[F10176640](https://archive.blender.org/developer/F10176640/image.png) size=full} |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](https://archive.blender.org/developer/D6386) 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.
Poster
Collaborator

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Poster
Collaborator

Collaborator

was assigned by Hans Goudey 2021-07-16 04:53:44 +02:00
Poster
Collaborator

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

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

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'

Is it possible to access this via Python? Say if I wanted to create a constant radius fillet via a script at a particular vertex?

Is it possible to access this via Python? Say if I wanted to create a constant radius fillet via a script at a particular vertex?
No Label
No Milestone
No project
No Assignees
6 Participants