Чтение онлайн

на главную - закладки

Жанры

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Larsson Thomas

Шрифт:

#----------------------------------------------------------

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
рейтинг книги
Мастер Разума III

Часовое имя

Щерба Наталья Васильевна
4. Часодеи
Детские:
детская фантастика
9.56
рейтинг книги
Часовое имя

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря

Кротовский, не начинайте

Парсиев Дмитрий
2. РОС: Изнанка Империи
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, не начинайте

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Прорвемся, опера! Книга 3

Киров Никита
3. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 3

Демон

Парсиев Дмитрий
2. История одного эволюционера
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Демон

Прорвемся, опера! Книга 2

Киров Никита
2. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 2

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Призыватель нулевого ранга. Том 3

Дубов Дмитрий
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга. Том 3

Сделай это со мной снова

Рам Янка
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сделай это со мной снова

Злыднев Мир. Дилогия

Чекрыгин Егор
Злыднев мир
Фантастика:
фэнтези
7.67
рейтинг книги
Злыднев Мир. Дилогия