Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - страница 7
>me.from_pydata(verts, [], faces)
>me.update()
а для арматуры мы добавляем кость:
>bone = amt.edit_bones.new('Bone')
>bone.head = (0,0,0)
>bone.tail = (0,0,1)
>bpy.ops.object.mode_set(mode='OBJECT')
Заметьте, что нам не нужно явно входить в режим редактирования, поскольку арматура вошла в него уже при создании.
Если мы хотим сделать объект типа одного из примитивов, может существовать оператор, который создаёт примитив с желаемыми свойствами.
• Конус фактически аппроксимируется пирамидой.
Для создания меша пирамиды с 4 сторонами:
>bpy.ops.mesh.primitive_cone_add(
>vertices=4,
>radius=1,
>depth=1,
>cap_end=True)
тогда как следующий код добавляет арматуру с единственной костью:
>bpy.ops.object.armature_add()
>bpy.ops.transform.translate(value=origin)
• Как и в операторном методе, мы затем извлекаем вновь созданный объект из >bpy.context.object
.
>ob = bpy.context.object
>me = ob.data
Метод примитивов самый простой, но он работает только в том случае, когда нужный примитив доступен. Даже в программе примера, он создает меш пирамиды, который отличается от созданных другими двумя методами: основание не является единственным четырёхугольником, а состоит из четырех треугольников с общей точкой в середине основания. Другие два метода более-менее эквивалентны.
Примитив не обязан быть особенно простым; есть примитивы для создания меша обезьяны или человеческая оснастка. Но метод примитивов всегда ограничен заготовленными объектами.
Мы используем все три метода в примерах в этой заметке.
>#----------------------------------------------------------
># File objects.py
>#----------------------------------------------------------
>import bpy
>import mathutils
>from mathutils import Vector
>def createMeshFromData(name, origin, verts, faces):
> # Создание меша и объекта
> me = bpy.data.meshes.new(name+'Mesh')
> ob = bpy.data.objects.new(name, me)
> ob.location = origin ob.show_name = True
> # Привязка объекта к сцене, он становится активным
> scn = bpy.context.scene
> scn.objects.link(ob)
> scn.objects.active = ob
> ob.select = True
> # Создание меша из полученных verts (вершин), faces (граней).
> me.from_pydata(verts, [], faces)
> # Обновление меша с новыми данными
> me.update()
> return ob
>def createMeshFromOperator(name, origin, verts, faces):
> bpy.ops.object.add(
> type='MESH',
> enter_editmode=False,
> location=origin)
> ob = bpy.context.object
> ob.name = name
> ob.show_name = True
> me = ob.data me.name = name+'Mesh'
> # Создание меша из полученных verts (вершин), faces (граней).
> me.from_pydata(verts, [], faces)
> # Обновление меша с новыми данными
> me.update()
> # Установка режима объектов
> bpy.ops.object.mode_set(mode='OBJECT')
> return ob
>def createMeshFromPrimitive(name, origin):
> bpy.ops.mesh.primitive_cone_add(
> vertices=4,
> radius=1,
> depth=1,
> cap_end=True,
> view_align=False,
> enter_editmode=False,
> location=origin,
> rotation=(0, 0, 0))
> ob = bpy.context.object
> ob.name = name
> ob.show_name = True
> me = ob.data
> me.name = name+'Mesh'
> return ob
>def createArmatureFromData(name, origin):
> # Создание меша и объекта
> amt = bpy.data.armatures.new(name+'Amt')
> ob = bpy.data.objects.new(name, amt)
> ob.location = origin
> ob.show_name = True
> # Привязка объекта к сцене, он становится активным
> scn = bpy.context.scene
> scn.objects.link(ob)
> scn.objects.active = ob
> ob.select = True
> # Создание одиночной кости
> bpy.ops.object.mode_set(mode='EDIT')
> bone = amt.edit_bones.new('Bone')
> bone.head = (0,0,0)
> bone.tail = (0,0,1)
> bpy.ops.object.mode_set(mode='OBJECT')
> return ob
>def createArmatureFromOperator(name, origin):
> bpy.ops.object.add(
> type='ARMATURE',
> enter_editmode=True,
> location=origin)
> ob = bpy.context.object
> ob.name = name
> ob.show_name = True
> amt = ob.data
> amt.name = name+'Amt'
> # Создание одиночной кости
> bone = amt.edit_bones.new('Bone')
> bone.head = (0,0,0)