Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Шрифт:
#----------------------------------------------------------
import bpy, mathutils
def createArmature(origin):
# Создание арматуры и объекта
amt = bpy.data.armatures.new('MyRigData')
rig = bpy.data.objects.new('MyRig', amt)
rig.location = origin
rig.show_x_ray = True amt.show_names = True
#
Привязка объекта к сцене
scn = bpy.context.scene
scn.objects.link(rig)
scn.objects.active = rig scn.update
# Создание костей
#next two lines by PKHG SVN 36504 W32
bpy.ops.object.editmode_toggle
# bpy.ops.object.mode_set(mode='EDIT')
#original does not work??!! bpy.ops.object.mode_set(mode='EDIT')
base = amt.edit_bones.new('Base')
base.head = (0,0,0)
base.tail = (0,0,1)
mid = amt.edit_bones.new('Mid')
mid.head = (0,0,1)
mid.tail = (0,0,2)
mid.parent = base
mid.use_connect = True
tip = amt.edit_bones.new('Tip')
tip.head = (0,0,2)
tip.tail = (0,0,3)
# Ограничения костей. Арматура должна быть в режиме позы.
bpy.ops.object.mode_set(mode='POSE')
# Ограничение IK Mid -> Tip
pMid = rig.pose.bones['Mid']
cns1 = pMid.constraints.new('IK')
cns1.name = 'Ik'
cns1.target = rig
cns1.subtarget = 'Tip'
cns1.chain_count = 1
# Ограничение StretchTo Mid -> Tip с влиянием 0.5
cns2 = pMid.constraints.new('STRETCH_TO')
cns2.name = 'Stretchy'
cns2.target = rig
cns2.subtarget = 'Tip'
cns2.influence = 0.5
cns2.keep_axis = 'PLANE_X'
cns2.volume = 'VOLUME_XZX'
# Ограничение Copy rotation Base -> Tip
pBase = rig.pose.bones['Base']
cns3 = pBase.constraints.new('COPY_ROTATION')
cns3.name = 'Copy_Rotation'
cns3.target = rig
cns3.subtarget = 'Tip'
cns3.owner_space = 'WORLD'
cns3.target_space = 'WORLD'
bpy.ops.object.mode_set(mode='OBJECT')
return rig
def createMesh(origin):
#
Создание меша и объекта
me = bpy.data.meshes.new('Mesh')
ob = bpy.data.objects.new('MeshObject', me)
ob.location = origin
# Привязка объекта к сцене
scn = bpy.context.scene
scn.objects.link(ob)
scn.objects.active = ob
scn.update
# Список координат вершин.
verts = [
(0.5, 0.5,0), (0.5,-0.5,0), (-0.5,-0.5,0), (-0.5,0.5,0),
(0.5,0.5,1), (0.5,-0.5,1), (-0.5,-0.5,1), (-0.5,0.5,1),
(-0.5,0.5,2), (-0.5,-0.5,2), (0.5,-0.5,2), (0.5,0.5,2),
(0.5,0.5,3), (0.5,-0.5,3), (-0.5,-0.5,3), (-0.5, 0.5,3)
]
# Список граней.
faces = [
(0, 1, 2, 3),
(0, 4, 5, 1),
(1, 5, 6, 2),
(2, 6, 7, 3),
(4, 0, 3, 7),
(4, 7, 8, 11),
(7, 6, 9, 8),
(6, 5, 10, 9),
(5, 4, 11, 10),
(10, 11, 12, 13),
(9, 10, 13, 14),
(8, 9, 14, 15),
(11, 8, 15, 12),
(12, 15, 14, 13)
]
# Создание меша из передаваемых списков вершин, рёбер, граней.
# Или рёбра или грани должны быть [], иначе Вам нужны проблемы
me.from_pydata(verts, [], faces)
# Обновление меша с новыми данными
me.update(calc_edges=True)
return ob
def skinMesh(ob, rig):
# Списки вершин в группах, в форме (вершина, вес)
vgroups = {}
vgroups['Base'] = [
Поделиться:
Популярные книги
Мастер Разума III
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Часовое имя
4. Часодеи
Детские:
детская фантастика
9.56
рейтинг книги
Печать мастера
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Кротовский, не начинайте
2. РОС: Изнанка Империи
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Эволюция мага
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Прорвемся, опера! Книга 3
3. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Демон
2. История одного эволюционера
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Прорвемся, опера! Книга 2
2. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Офицер
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Призыватель нулевого ранга. Том 3
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Сделай это со мной снова
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Злыднев Мир. Дилогия
Злыднев мир
Фантастика:
фэнтези
7.67