Page MenuHome

New Curves data block
Confirmed, NormalPublicDESIGN


This is a follow up task based on discussions we had about T94193.

Currently, the curve object contains three distinct object types: curves, surfaces and text. We want to split those up into separate types, because there is no real reason for why they are combined into a single type.
This task focuses on introducing a new Curves data type which we will also need for hair and geometry nodes processing of curves.

Initial steps:

  • Rename existing (experimental) Hair data block to Curves. In the ui it will be called Hair Curves for now to distinguish it from the old curve type.
  • Decide on and implement exact data structure used for curves.
    • Should be stored compactly in continuous arrays.
    • Should support arbitrary attributes on points and splines.
    • Ideally, the actual curve data structure is embedded into the Curves data block as a separate struct, so that the same struct could e.g. be used for grease pencil.
  • Refactor geometry nodes to use the Curves data block instead of CurveEval. (T95443)
  • Remove the runtime-only CurveEval data structure added for geometry nodes.
  • Render geometry nodes curves as hair in Cycles and Eevee
  • Curves sculpt mode that is mostly focused on hair use cases
  • Curves edit mode, similar to existing curve edit mode

Further in the future:

  • Add existing necessary features from the legacy curve object (features like shape keys may add complexity)
  • Use versioning to convert legacy curve objects to the new curves object
  • Add support for simulations through a generic simulation system involving geometry nodes
  • Use versioning to convert hair particle systems to the new curves object

Event Timeline

Bastien Montagne (mont29) changed the subtype of this task from "Report" to "Design".
Hans Goudey (HooglyBoogly) renamed this task from New Curves data block. to New Curves data block.Feb 2 2022, 5:37 PM
Hans Goudey (HooglyBoogly) changed the task status from Needs Triage to Confirmed.