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

на главную

Жанры

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

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

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

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Великий перелом

Ланцов Михаил Алексеевич
2. Фрунзе
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Великий перелом

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Падение Твердыни

Распопов Дмитрий Викторович
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Падение Твердыни

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6