//Currently I'm just treating this as a personal project, but I thought it would be nice to have some public place to track progress.//
Initial Design: https://wiki.blender.org/wiki/Modules/Physics_Nodes/Projects/EverythingNodes/CurveNodes
[x] Basic design for data structures
[x] Conversion from DNA `Curve` struct
[x] Bezier
[x] NURBS
[x] Poly
[x] Spline attributes
[x] Cyclic
[x] Length
[x] Resolution
[ ] Spline evaluation
[x] Position calculation
[x] Bezier
[x] NURBS
[x] Poly
[x] Tangents
[ ] Normals
[x] Z-up method
[x] Minimum twist method
[ ] Tangent method
[x] Apply tilts to evaluated normals
[x] Evaluate control point indices and interpolation factors
[ ] Different interpolation settings for Bezier curves
[ ] Curve to Mesh node (Extrude profile)
[x] Extrude single vertex
[x] Extrude another spline
[x] Set edge sharp flag based on sharp control points
[x] Use evaluated spline radius
[ ] Fill Caps option
[ ] Add UV data
[ ] 2D Curve to Mesh node
[x] Investigate different triangulation methods
[ ] Implement flat mesh generation
[ ] Implement mesh with extrusion and bevel
[x] Resample curve node
[x] Add generic constant length curve evaluation
[ ] Trim Curve node
[x] Bezier support
[ ] Fix bezier handles
[ ] Poly support
[ ] Convert NURBS to poly
[x] Bezier auto handle recalculation
[ ] Curve profile primitive node
[ ] Conversion from `CurveProfile` to `CurveEval`
[ ] Add a "Cyclic" option
[ ] Option to draw without fill unless cyclic
[ ] Builtin point attributes
[x] Position
[x] Radius
[x] Tilt
[ ] Bezier Handles
[ ] NURBS weight
[ ] Curve Deform node
[x] Figure out how to deal with extrapolation
[ ] Generic curve non-even sampling code
[ ] Build deformation on top of sampling code
[x] Change Direction node
[x] Curve modifier stack changes
[x] Refactor to storing arrays separately
[x] Refactor to speed up poly splines
[x] Add support for generic attributes
[x] Support in attribute nodes
[x] Join attribute when joining curves
[x] Support in curve nodes, create APIs, etc.
[x] Interpolation between point and spline domain
[x] Add instancing directly on evaluated points
[x] Curve from Edges node
[x] Curve end points node
[ ] Figure out design for curvature and length parameter attribute/data
[ ] Implement curvature data
[ ] Implement length parameter data
I've limited this list to what I think the design is clear about. Other features may take a bit more design work before implementation.
The WIP changes are in the `geometry-nodes-curve-support` branch.