Blender 2.93: Python API¶
Python 3.9¶
Python was upgraded to version 3.9.1.
GPU¶
The gpu
module has been enhanced to cover more functionality that
previously was only available through bgl
.
(4430e8a008,
6c6b1c015b)
The bgl
module will be deprecated in Blender 3.0, in preparation of
future Vulkan support. Add-ons should switch to using the gpu
module, so that they will work with both OpenGL and Vulkan.
- New
state
sub-module for changing drawing state. - New
texture
sub-module, including a function to create textures from image datablocks. - New
GPUFrameBuffer
- New
GPUUniformBuf
Other Additions¶
- New
RenderEngine.bl_use_custom_freestyle
option. By default this is disabled, and Freestyle rendering will be done by Eevee. If enabled, the render engine will be called to render the Freestyle geometry. (1428544528) - New
to_curve
method in Object ID. The method is analogous toto_mesh
and can be used to get the splines representing a text object or to get the splines after spline modifiers are applied. (f2c0bbed1c) - New
CurveMapping.reset_view
method (3eb8307160). - New
CurveProfile.reset_view
method (7e3efac9a8). - New
BlendFile.temp_data
method, providing a context manager to temporarily load blend file data without linking/appending it into the current file (9e09214979). - User Interface: Add support for
bl_description
and python doc-strings for panel classes. (8971018eb6)
Other Changes¶
- UTF8 is now the default encoding on all platforms, matching the
behavior of running
python -X utf8
. See PEP-540 (df135b74fc). - The
deform
parameter of the Bmeshfrom_object
method is now deprecated, always assumed to be True, and will be removed in version 3.0. (4b0871af87) - The intermediate representation of
bpy.props
, typically defined in a classes annotations before registration is now using a new typebpy.props._PropertyDeferred
. While this is not considered part of the stable API, some scripts depended on this (c44c611c6d) bpy.ops.mesh.primitive_grid_add
the resulting subdivision levels has been changed by n+1 (4d3cdb32d3).- Remove support for non-annotation properties in classes as this was only enabled while porting scripts to 2.8x API (afa5da9ce0)
Scripts that dynamically generate types will need to be updated, see the following example for reference:
Before (2.92 or older)
import bpy
settings_class = type(
"TestClass",
(bpy.types.PropertyGroup,), {
"test": bpy.props.StringProperty(default="test"),
},
)
bpy.utils.register_class(settings_class)
bpy.types.WindowManager.example = bpy.props.PointerProperty(type=settings_class)
print(bpy.context.window_manager.example.test)
After (2.93 and newer)
import bpy
settings_class = type(
"TestClass",
(bpy.types.PropertyGroup,), {
"__annotations__": {
"test": bpy.props.StringProperty(default="test"),
},
},
)
bpy.utils.register_class(settings_class)
bpy.types.WindowManager.example = bpy.props.PointerProperty(type=settings_class)
print(bpy.context.window_manager.example.test)