b24ac18130
Support the new Curves object type in Alembic when exporting curve data. Make corresponding fixes to importing at the same time. Summary of changes - Exporter now supports the `Curves` object type during Export including when using the convert to mesh option - Exporter will now enforce that only 1 combination of curve type and periodicity are in a given object [0]. - Catmul-rom basis curves are now supported and will be used for Hair data [1]. - Bezier curves are exported with their left/right handle data [2]. - Cyclic bezier and nurbs curves should be handled correctly now. Along the way this required changes on the Import side as well in order to be complete - Importer will now load bezier curve handle data correctly - Importer could fail to set the correct cyclic data on the last spline of a multi-curve object See PR for screenshots [0] See https://github.com/alembic/alembic/blob/master/lib/Alembic/AbcGeom/OCurves.h#L55 Prior to this change the Alembic exporter could write invalid data to the file in these cases. [1] Alembics created with the new Curves Hair object with this patch will not be loadable in prior versions of Blender. The importer does not handle the curve data correctly and will crash. [2] There was a long-standing TODO about how to handle bezier curve data since nothing is documented on Alembic's side. Bezier data wouldn't even round-trip properly inside Blender itself. On a hunch, because USD was influenced by certain aspects of Alembic which came before it, I decided to try writing out the data the same way as USD. That turned out to work quite well in at least 1 external software so that's what this patch will use for both import and export. Pull Request: https://projects.blender.org/blender/blender/pulls/119894