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

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

Жанры

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

Larsson Thomas

Шрифт:

(0, 1.0), (1, 1.0), (2, 1.0), (3, 1.0),

(4, 0.5), (5, 0.5), (6, 0.5), (7, 0.5)]

vgroups['Mid'] = [

(4, 0.5), (5, 0.5), (6, 0.5), (7, 0.5),

(8, 1.0), (9, 1.0), (10, 1.0), (11, 1.0)]

vgroups['Tip'] = [
(12, 1.0), (13, 1.0), (14, 1.0), (15, 1.0)]

# Создание групп вершин и добавление вершин и весов

#
Первый аргумент в назначении — список, чтобы можно

# было назначать несколько вершин сразу

for name in vgroups.keys:

grp = ob.vertex_groups.new(name)

for (v, w) in vgroups[name]:

grp.add([v], w, 'REPLACE')

# Добавление меш-объекту модификатора арматуры, с использованием

# групп вершин, а не envelopes

mod = ob.modifiers.new('MyRigModif', 'ARMATURE')

mod.object = rig mod.use_bone_envelopes = False

mod.use_vertex_groups = True

return

def run(origin):

rig = createArmature(origin)

ob = createMesh(origin)

skinMesh(ob, rig)

# Перемещение и вращение кости Tip в режиме позы

bpy.context.scene.objects.active = rig

bpy.ops.object.mode_set(mode='POSE')

ptip = rig.pose.bones['Tip']

ptip.location = (0.2,-0.5,0)

rotMatrix = mathutils.Matrix.Rotation(0.6, 3, 'X')

ptip.rotation_quaternion = rotMatrix.to_quaternion

return

if __name__ == "__main__":

run((0,0,0))

Режим редактирования против режима позы

Атрибуты костей, которые влияют на изначальную позу арматуры (голова, хвост, поворот, родитель, использование соединения, и т.п.), доступны только в режиме редактирования (использование кости в ob.data.edit bones), тогда как атрибуты, которые применяются при позировании, требуют, чтобы арматура была в режиме позы (использование кости в ob.pose.bones). Насколько я знаю, единственный способ переключаться между режимами редактирования и позы — с помощью вызова операторов

bpy.ops.object.mode_set(mode='EDIT')

bpy.ops.object.mode_set(mode='POSE')

Поскольку операторы воздействуют на активный объект, мы должны удостовериться, что активен правильный

объект, устанавливая
bpy.context.scene.objects.active
.

Этот скрипт копирует углы поворота

roll
из исходной оснастки (имя объекта 'SrcRig') в целевую оснастку (имя объектна 'TrgRig'). Обе арматуры должны иметь одинаковое число костей с идентичными именами.

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

# File copy_roll.py

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

import bpy

def copyRolls(src, trg):

rolls = {} bpy.context.scene.objects.active = src

bpy.ops.object.mode_set(mode='EDIT')

for eb in src.data.edit_bones:

rolls[eb.name] = eb.roll

bpy.ops.object.mode_set(mode='POSE')

bpy.context.scene.objects.active = trg

bpy.ops.object.mode_set(mode='EDIT')

for eb in trg.data.edit_bones:

oldRoll = eb.roll

eb.roll = rolls[eb.name]

print(eb.name, oldRoll, eb.roll)

bpy.ops.object.mode_set(mode='POSE')

return

objects = bpy.context.scene.objects

copyRolls(objects['SrcRig'], objects['TrgRig'])

Три способа создания объектов

Примеры, которые мы изучали до сих пор, показывают, что объект можно создавать в Питоне с использованием различных парадигм.

Метод данных

• Метод данных тщательно подражает тому, как данные сохраняются непосредственно в Блендере.

Добавляются данные, и затем объект. Для меша:

me = bpy.data.meshes.new(meshName)

ob = bpy.data.objects.new(obName, me)

и для арматуры:

amt = bpy.data.armatures.new(amtname)

ob = bpy.data.objects.new(obname, amt)

• Объект привязывается к текущей сцене и делается активным. Дополнительно, мы можем сделать вновь созданный объект активным или выбранным. Этот код одинаков для всех типов объектов.

Поделиться:
Популярные книги

Дракон с подарком

Суббота Светлана
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Дракон с подарком

Наследница Драконов

Суббота Светлана
2. Наследница Драконов
Любовные романы:
современные любовные романы
любовно-фантастические романы
6.81
рейтинг книги
Наследница Драконов

Кровь Василиска

Тайниковский
1. Кровь Василиска
Фантастика:
фэнтези
попаданцы
аниме
4.25
рейтинг книги
Кровь Василиска

Академия

Сай Ярослав
2. Медорфенов
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Академия

Мятежник

Прокофьев Роман Юрьевич
4. Стеллар
Фантастика:
боевая фантастика
7.39
рейтинг книги
Мятежник

Чиновникъ Особых поручений

Кулаков Алексей Иванович
6. Александр Агренев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чиновникъ Особых поручений

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Мастер 7

Чащин Валерий
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Мастер 7

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Восход. Солнцев. Книга IX

Скабер Артемий
9. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга IX

Попаданка в деле, или Ваш любимый доктор

Марей Соня
1. Попаданка в деле, или Ваш любимый доктор
Фантастика:
фэнтези
5.50
рейтинг книги
Попаданка в деле, или Ваш любимый доктор

Кукловод

Злобин Михаил
2. О чем молчат могилы
Фантастика:
боевая фантастика
8.50
рейтинг книги
Кукловод

Бремя империи

Афанасьев Александр
Бремя империи - 1.
Фантастика:
альтернативная история
9.34
рейтинг книги
Бремя империи

Элита элит

Злотников Роман Валерьевич
1. Элита элит
Фантастика:
боевая фантастика
8.93
рейтинг книги
Элита элит