Curve Sampling and Instancing
- Sampling uniform lengths from a curve should produce a curve
- You can still do other things you would do with a curve: create a mesh, curve deform, sample attributes, anything added in the future. These are common use cases.
- There is no need for changing the data type, so the operation is less complicated without the change.
- Similarly, creating a new spline with a set number of points is a natural operation, easy to understand.
- Sampling uniform lengths should produce a poly spline
- The number of evaluated points in the output doesn't depend on the resolution, which makes the output simpler.
- Sampling uniform lengths is not really meant for the situation where you just need a few more control points to work with anyway. In that case there is no need to resample, simply adding more (with subdivision) will work.
- If the result were a Bezier spline, the fact that the control points were equidistant would not be useful anyway, because that doesn't mean the resulting evaluated points would be equidistant.
- Curve to points should use the evaluated points
- Evaluated points are NOT an implementation detail, they are the basis of how curves work and that is important.
- Having many evaluated points for just a few control points is the basis of what makes curves useful in Blender.
- In the cases where the total number of points matters, it will be set already by other curve nodes (like the "curve resample" node).
- When the exact positions of points matters, the spline is likely to be a poly spline anyway.
- Splines are implicitly evaluated, so evaluated points are considered "part of the curve" in this situation.
Benefits
Quick benefits of approaching the problem this way.
- Every operation does a single thing
- Easier to understand
- More flexible
- Data type changes are separate operations, which is what people expect (and need)
- Evaluated points are NOT an implementation detail
Proposal / Next Steps
Among other nodes, here are the ones I would like to prioritize in the near future.
Already Finished
- Curve Resample Node
- Samples uniform length control points along the input splines, interpolates attributes to the result.
- If necessary, this could have a different name to emphasize the fact that it creates poly splines.
High Priority
- Curve to Points Node
- Evaluates input splines, putting the result in a point cloud with attributes for tangent and normal vectors
- The change of data type is important because those vectors are derived data on curves.
- Curve Subdivide Node
- A quick way to add more control points to existing splines for more definition when using attributes.
- Curve Deform Node
- Properly implemented, this will greatly increase what's possible with geometry nodes.
- Parametric sampling becomes possible, bending existing geometry in a flexible way, etc.
- Change Spline Type Node
- A node to change selected splines types between the three options, for more flexibility when needed.
- A node to change bezier handle types is a natural addition as well.
Low Priority
- Curve Instance Node
- A quick way to instance directly on a curve using existing data– radius, direction, normal. Better performance and faster to use in many cases.
- In most cases this is all people need.
- Generally there is no downside to having nodes for more specialized cases.
- Fit Bezier Node
- Creating a new bezier curve that follows the original curve as much as possible with error control
- Useful for "retopology" and creating easily editable control points from "raw data".
Glossary
- Control Points The points that the user controls directly. Basically a way to save time by adjusting more than one point at a time. Control points are not necessarily part of the evaluated spline.
- Evaluated Points points you get from resolution or bezier. For poly splines, they are the same as the control points, but they have evaluated info.
- Sampled Points Any points evaluated after the evaluated points. They might be sampled to have uniform lengths, or for more resolution in sections with more curvature, etc. Attributes are interpolated to these points.
- Splines The container for control points and attributes, with Bezier, Poly, or NURBS type.
- Poly Spline Every evaluated point is a control point, there is a 1 to 1 mapping between the two. However, evaluated points have tangent and normal information, but control points do not.
- Bezier Spline Control point positions sit on the spline, resolution controls the number of evaluated points, handles control interpolation between control points.
- NURBS Control points do not sit on the evalauted spline. Each control point influences a set number of the neighboring evaluated points, based on the order of the spline.