Для того, чтобы создать объект в сцене Blender средствами Python API нужно выполнить следующие действия:
Откройте окно текстового редактора “Text Editor”.
Для обращения к основной структуре данных API Blender импортируем главный модуль bpy.
1 |
import bpy |
Любой меш состоит из вертексов, ребер и граней. Выделим под них блоки данных.
1 2 3 |
vertices = [(0, 0, 0),] edges = [] faces = [] |
Наш простейший меш будет состоять всего из одного вертекса. Поэтому мы заполняем только блок vertices, указывая в нем координаты единственной точки.
Создадим структуру меша с именем “new_mesh”,
1 |
new_mesh = bpy.data.meshes.new('new_mesh') |
и заполним ее данными из созданных блоков.
1 2 |
new_mesh.from_pydata(vertices, edges, faces) new_mesh.update() |
Мы создали меш, но его нельзя добавить в сцену в “сыром” виде. В сцену добавляются объекты. Создадим объект с именем “new_object”, поместив в него данные созданного ранее меша.
1 |
new_object = bpy.data.objects.new('new_object', new_mesh) |
Мы создали объект, но это еще не все. Нужно указать коллекцию, в которую будет добавлен объект. Создадим новую коллекцию с именем “new_collection” и поместим ее в главную коллекцию сцены.
1 2 |
new_collection = bpy.data.collections.new('new_collection') bpy.context.scene.collection.children.link(new_collection) |
Теперь мы можем добавить объект в сцену, поместив его в созданную коллекцию.
1 |
new_collection.objects.link(new_object) |
Весь код выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import bpy # make mesh vertices = [(0, 0, 0),] edges = [] faces = [] new_mesh = bpy.data.meshes.new('new_mesh') new_mesh.from_pydata(vertices, edges, faces) new_mesh.update() # make object from mesh new_object = bpy.data.objects.new('new_object', new_mesh) # make collection new_collection = bpy.data.collections.new('new_collection') bpy.context.scene.collection.children.link(new_collection) # add object to scene collection new_collection.objects.link(new_object) |
Выполнив этот код, нажатием на кнопку “Run Script”, мы добавим в сцену меш, состоящий из одного вертекса.