Maniphest T93233

Refactor Spline Attribute Storage
Closed, ArchivedTO DO

Assigned To
None
Authored By
Hans Goudey (HooglyBoogly)
Nov 19 2021, 10:46 PM
Tags
  • Geometry Nodes
Subscribers
Hans Goudey (HooglyBoogly)
Paul Larson (GeorgiaPacific)

Description

While it works quite well, the storage of attributes on splines has an important issue.
Attribute names are stored on all splines. Conceptually this is wrong, since attributes
are supposed to have the same names, types, and orders, on every spline of a curve.
But it is also inefficient, since we store a full CustomDataLayer for every attribute
on every spline, when all we really need is a pointer.

This task is for changing that in a few ways:

  • Don't use CustomDataAttributes for the control point domain.
  • Add AttributeID with a string or an anonymous attribute reference.
  • On curves, store a VectorSet of attribute IDs.
  • Allow retrieving a PointAttributeKey from CurveEval
    • This is really just an index, but in debug builds it can have extra information for double-checking the type.
  • Use a function with PointAttributeKey to retrieve specific attributes from splines.
  • For operating on all spline attributes, add a foreach_attribute_array callback, possibly with an option to position and handles, etc.

Event Timeline

Hans Goudey (HooglyBoogly) changed the task status from Needs Triage to Confirmed.Nov 19 2021, 10:46 PM
Hans Goudey (HooglyBoogly) created this task.
Hans Goudey (HooglyBoogly) mentioned this in T93203: Geometry Nodes 3.1 Targets.
Paul Larson (GeorgiaPacific) added a subscriber: Paul Larson (GeorgiaPacific).Nov 20 2021, 5:43 PM
Hans Goudey (HooglyBoogly) closed this task as Archived.Jan 4 2022, 3:07 PM

Closing this in favor of T94193, which proposes a larger change.