from 2.7 to 2.8
Добавление объекта в сцену в Blender 2.80 Python API
В API Blender 2.79 созданный объект добавляется в сцену через:
1 |
bpy.context.scene.objects.link(new_object) |
Попытка добавить объект в сцену таким образом в Blender 2.80, приводит к ошибке:
‘bpy_prop_collection’ object has no attribute ‘link’
В Blender 2.80 API добавлять объект нужно не в саму сцену, а в ее коллекции.
Добавить объект в активную коллекцию:
1 |
bpy.context.scene.collection.objects.link(new_object) |
Добавить объект в коллекцию по ее имени:
1 |
bpy.data.collections['collection_name'].objects.link(new_object) |
15 изменений, с которыми вы наверняка столкнетесь при переходе с Blender 2.79 на Blender 2.80
- Выбор объектов
2.79: выбор производится правой кнопкой мышки
2.80: выбор производится левой кнопкой мышки
- T-панель
2.79: вызывалась нажатием клавиши t
2.80: теперь ее нет, функции переместились в основное меню или в контекстное меню по нажатию на правую кнопку мышки
- Снятие выделения
2.79: a – выделить всё и снять всё выделение
2.80: a – выделить всё, a – a или alt+a – снять всё выделение
Правила наименования классов в Blender 2.8 API
В API Blender 2.8 ужесточаются требования к наименованию классов и их идентификаторов. Имя класса должно соответствовать следующему шаблону:
1 |
UPPER_CASE_{SEPARATOR}_mixed_case |
Где {SEPARATOR} – две буквы, обозначающие принадлежность класса к определенному типу (от какого типа наследуется класс):
- HT – Заголовок
- MT – Меню
- OT – Оператор
- PT – Панель
- UL – Список UI
Идентификатор класса “bl_idname” должен соответствовать имени класса.
Изменения в регистрации аддонов через API в Blender 2.8
В Blender 2.7 регистрация и разрегистрация аддонов через Python API производилась через Window manager – wm:
1 2 3 4 5 |
bpy.ops.wm.addon_install(filepath='_path_to_addon', overwrite=True) bpy.ops.wm.addon_enable(module='addon_name') bpy.ops.wm.addon_remove(module='addon_name') |
В Blender 2.8 API операторы работы с аддонами перенесены в preferences:
1 2 3 4 5 |
bpy.ops.preferences.addon_install(filepath='_path_to_addon', overwrite=True) bpy.ops.preferences.addon_enable(module='addon_name') bpy.ops.preferences.addon_remove(module='addon_name') |
Положение 3D курсора в Blender 2.8 Python API
Свойство, указывающее на местоположение 3D-курсора
1 |
context.scene.cursor_location |
в Blender 2.8 перенесено в объект курсора
1 |
context.scene.cursor.location |
При попытке обращения к позиции курсора через “context.scene.cursor_location” Blender выдаст ошибку:
‘Scene’ object has no attribute ‘cursor_location’
Умножение матриц, векторов, кватернионов в Blender 2.8 Python API
В Blender 2.7 для умножения матриц, кватернионов и векторов использовался оператор “*” (звездочка). В Blender 2.8 API он заменен на оператор “@” (ат).
При попытке использования оператора “*” для умножения матриц, векторов или кватернионов, Blender 2.8 сигнализирует ошибкой:
Element-wise multiplication: not supported between ‘Matrix’ and ‘Matrix’ types
Пример использования оператора “@”:
1 |
bpy.context.region_data.view_rotation @ Vector((0.0, 0.0, 1.0)) |
Доступ к элементам привязки в Blender 2.8 Python API
Свойство, указывающее на выбранный тип привязки в Blender 2.7
1 |
bpy.context.scene.tool_settings.snap_element |
в Blender 2.8 изменилось на
1 2 |
bpy.context.scene.tool_settings.snap_elements # {'EDGE'} |
Указание центральной точки в Blender 2.8 Python API
Указание опорной точки в Blender 2.7
1 2 |
bpy.context.area.spaces[0].pivot_point # 'BOUNDING_BOX_CENTER': |
в Blender 2.8 API перемещено в:
1 2 |
bpy.context.scene.tool_settings.transform_pivot_point # 'MEDIAN_POINT' |
Свойство use_drag_immediately в Blender 2.8 Python API
Свойство use_drag_immediately в Blender 2.7
1 |
bpy.context.preferences.edit.use_drag_immediately |
в Blender 2.8 API перемещено в
1 2 |
bpy.context.preferences.inputs.use_drag_immediately # True |