b24ac18130e6281c5b3a5536bee4810ad57d1779
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
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
