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

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

Жанры

Введение в написание скриптов на Питоне для Блендера 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)

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

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

Мастер Разума 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
рейтинг книги
Злыднев Мир. Дилогия