Skip to content

Blender 2.91: IO & Overrides

Alembic & USD

Alembic & USD Export: Invisible Objects

The Alembic and USD exporters now support exporting invisible objects (Alembic: a95f863596, USD: 108f3284a7). Both exporters now write a 'visibility' property that reflects whether the object is visible or invisible. Note that this uses the Global Viewport Visibility (USD) and Render Visibility (USD & Alembic) properties, and not the 3D Viewport visibility. The location of the written property in the exported file is different for Alembic and USD, due to file format differences:

  • Alembic supports values "hidden", "inherited", and "visible". Blender will only write "hidden" or "visible", depending on the visibility of the object in render mode. The property is written to the XForm in the Alembic file.
  • USD only supports values "hidden" and "inherited"; children of a hidden object are always also hidden. Because Blender does support hiding a parent without hiding the children, the visibility property is written to the geometry node in the USD file, and not to the transform node.

Alembic Export: Instances

The Alembic exporter is now writing duplicated object data as Alembic instances (b3759cc0d6). This is used when the objects are instances, for example when duplicated by a particle system or instanced by the duplication system (collection-duplicating empties, vertex/face duplis, etc.). This instancing support is still limited, in the sense that only object data is instanced and all transforms are still written explicitly. Blender's Alembic importer has no understanding of these Alembic instances yet, and will thus happily duplicate the data on import. USD's Alembic plugin seems to have problems understanding the instancing, and there might also be other software with similar issues. Because of this, instancing can be turned off in the exporter (it's on by default).

Alembic Export: Custom Properties

The Alembic exporter now can optionally export Blender's custom properties (ee97add4c4). The export of custom properties is enabled by default, and can be disabled from the export options. The following custom property types are supported:

  • Numbers (int, float) and strings. These are exported as arrays of a single element, so 47 will be exported as [47] to Alembic, and "Agent" to ["Agent"]. This matches the behavior of many other DCCs.
  • Lists of numbers and strings. These are exported as-is, so [327, 47] is exported as [327, 47].
  • Matrices and nested arrays of numbers. These are flattened into one long list, so a 3x2 matrix of numbers will become a list of 6 numbers. Similarly, nested lists [[1, 2, 3], [4, 5], [6]] will be exported as [1, 2, 3, 4, 5, 6].
  • Numbers can be animated as well.

Here is an example file that contains the above, both animated and non-animated:

Alembic Import: Vertex Interpolation

Alembic stores mesh samples at specific time keys; when a frame in Blender maps to a timecode between two samples, Blender will interpolate the mesh vertex positions. This interpolation only happens when the mesh has a constant topology, but sometimes this was not detected properly when the vertices change order, but the number of mesh elements remains the same. This would result in a mesh with jumbled up vertices (#71981). It is now possible to disable vertex interpolation per object.

Alembic Import: Animated Vertex Colors on static mesh

If the mesh was constant, no check was done if there were animated vertex colors and thus creation of a MeshSequenceCache modifier was skipped, this is now supported (#81330, 449e6124b5)




Library Overrides

  • 'Resync' operation was added to the Outliner (to re-generate an override when relationships between IDs are changed in library .blend file), aeaf2b0dd4.
  • 'Delete' and re-link to linked data operation was added to the Outliner (to fully get rid of an override hierarchy and relink its usages to the lib-linked data-blocks instead), 4aa04b6490.
  • Support insertion of items into py-defined IDProp-based RNA collections (#79562, db314ee7a4, 9756c66720, 86c5d1f4aa).
  • An operator was added to convert proxies to library overrides (c3a0618fbf).
  • More data has been made overridable:
    • Armature data.

Library Linking

  • Link and Append now create object instances when linking object-data directly such as meshes, curves... etc. 748deced1c

Handling of shading in add-ons importers

These changes affect potentially all add-ons using the node shader wrapper featured by Blender to help conversion between old 'fixed' shading type and modern nodal one (including OBJ and FBX IO).

  • Textures used as transparency input are now linked to the BSDF shader through their Alpha output, and not their Color output anymore (0696eaa3e8).

File Loading