Reference/Release Notes/3.5/Python API

Python API & Text Editor


  • The users site-packages are now available by default without having to use --python-use-system-env (72c012ab4a)


  • The active catalog of Asset Browsers can be changed via bpy.types.FileAssetSelectParams.catalog_id, it's no longer read-only. (rB80249ce6)
  • Custom node tree now have a default name set to NodeTree.bl_label. (59ce7bf59c)
  • New object.modifiers.move() method for reordering modifiers without using operators. (rBf7dd7d54)


  • The active and default (for render) color attributes are now stored as strings, making it easier to change them and access the correct attributes (rB6514bb05).

Internal Mesh Format

The mesh data structure refactoring from earlier releases has continued in 3.5.

  • Mesh vertex positions are now accessible via the builtin position attribute (rB1af62cb3).
  • UV layers are now stored as generic attributes (rB6c774feb)
  • The sharp edge property is now stored as a generic attribute (rBdd9e1ede).
  • TODO: Expand on naming, performance tradeoffs, 4.0 deprecation, etc.

Loose edge status is stored differently internally now (rB1ea169d9).

    • The MeshEdge.is_loose property is no longer editable.
    • Loose edge status can be recalculated with Mesh.update(calc_edges_loose=True)

Breaking changes

Grease Pencil Auto-masking moved to Global setting.


Props Removed:

brush.gpencil_settings.use_automasking_strokes, brush.gpencil_settings.use_automasking_layer, brush.gpencil_settings.use_automasking_material

Replaced by:

tool_settings.gpencil_sculpt.use_automasking_stroke, tool_settings.gpencil_sculpt.use_automasking_layer_stroke, tool_settings.gpencil_sculpt.use_automasking_material_stroke, tool_settings.gpencil_sculpt.use_automasking_layer_active, tool_settings.gpencil_sculpt.use_automasking_material_active

Motion tracking optical center

The internal storage of the optical center (principal point) has been changed in 7dea18b3aa to a normalized space.

The normalized space refers to coordinate (0, 0) corresponding to the frame center, (-1, -1) the left bottom frame corner, (1, 1) is the top right frame corner. This notation is available via property.

For some algorithms it is convenient to operate in the pixel space. For those usecases the new property has been added.

The old has been removed to avoid ambiguous naming in the API.

Inverted the meaning of the armature modifier vertex group in some cases

Fixed an old bug where the effect of the Invert Vertex Group toggle of the Armature modifier was inverted when Multi-Modifier was active. (rBea1c31a2)

Scripts creating complex armature modifier setups need updating to check the exact blender version:

modifier.use_multi_modifier = True
if < (3, 5, 8):  # Blender bug T103074
    modifier.invert_vertex_group = True

bpy.ops.object.datalayout_transfer operator

Since we now feature two domains since eae36be372, the single "VCOL" in the enum has been split into "COLOR_VERTEX" and "COLOR_CORNER" 93d84e87b2.

Bundled Libraries

Python bindings for the following libraries are now bundled with Blender, and available to use by add-ons.