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

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

Жанры

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

Larsson Thomas

Шрифт:

run((0,3,0))

Арматуры

Арматура

Эта программа создаёт арматуру.

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

# File armature.py

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

import bpy, math

from mathutils
import Vector, Matrix

def createRig(name, origin, boneTable):

#
Создание арматуры и объекта

bpy.ops.object.add(

type='ARMATURE',

enter_editmode=True,

location=origin)

ob = bpy.context.object

ob.show_x_ray = True

ob.name = name

amt = ob.data

amt.name = name+'Amt'

amt.show_axes = True

# Создание костей

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

for (bname, pname, vector) in boneTable:

bone = amt.edit_bones.new(bname)

if pname:

parent = amt.edit_bones[pname]

bone.parent = parent

bone.head = parent.tail

bone.use_connect = False

(trans, rot, scale) = parent.matrix.decompose

else:

bone.head = (0,0,0)

rot = Matrix.Translation((0,0,0))
 # Матрица идентичности

bone.tail = Vector(vector) * rot + bone.head

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

return ob

def poseRig(ob, poseTable):

bpy.context.scene.objects.active = ob

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

deg2rad = 2*math.pi/360

for (bname, axis, angle) in poseTable:

pbone = ob.pose.bones[bname]

# Установка режима вращения в Euler XYZ (Эйлерово),

# легче для понимания, чем кватернионы по-умолчанию

pbone.rotation_mode = 'XYZ'

# Косяк в документации: Euler.rotate(angle,axis):

# оси в ['x','y','z'] а не ['X','Y','Z']

pbone.rotation_euler.rotate_axis(axis, angle*deg2rad)

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

return

def run(origo):

origin = Vector(origo)

#
Таблица костей в форме (кость, родитель, вектор)

# Вектор дан в локальных координатах

boneTable1 = [

('Base', None, (1,0,0)),

('Mid', 'Base', (1,0,0)),

('Tip', 'Mid', (0,0,1))

]

bent = createRig('Bent', origin, boneTable1)

# Вторая оснастка является прямой линией, то есть кости проходят вдоль локальной оси Y

boneTable2 = [

('Base', None, (1,0,0)),

('Mid', 'Base', (0,0.5,0)),

('Mid2', 'Mid', (0,0.5,0)),

('Tip', 'Mid2', (0,1,0))

]

straight = createRig('Straight', origin+Vector((0,2,0)), boneTable2)

# Поза второй остнастки

poseTable2 = [

('Base', 'X', 90),

('Mid2', 'Z', 45),

('Tip', 'Y', -45)

]

poseRig(straight, poseTable2)

# Поза первой остнастки

poseTable1 = [

('Tip', 'Y', 45),

('Mid', 'Y', 45),

('Base', 'Y', 45)

]

poseRig(bent, poseTable1)

return

if __name__ == "__main__":

run((0,5,0))

Меш с оснасткой

Эта программа добавляет арматуру и меш. Арматура имеет три кости (Base (базовая), Mid (средняя), Tip (конечная)) и ограничения:

1. Ограничение IK Mid -> Tip.

2. Ограничение Stretch To Mid -> Tip.

3. Ограничение Copy Rotation Base -> Tip.

Меш деформируется арматурой. Следовательно, создаются модификатор арматуры и соответствующие группы вершин.

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

# File rigged_mesh.py

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

Наваждение генерала драконов

Лунёва Мария
3. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Наваждение генерала драконов

Средневековая история. Тетралогия

Гончарова Галина Дмитриевна
Средневековая история
Фантастика:
фэнтези
попаданцы
9.16
рейтинг книги
Средневековая история. Тетралогия

Прогрессор поневоле

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

Тайный наследник для миллиардера

Тоцка Тала
Любовные романы:
современные любовные романы
5.20
рейтинг книги
Тайный наследник для миллиардера

Лорд Системы 4

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

Вперед в прошлое 5

Ратманов Денис
5. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 5

Энфис 4

Кронос Александр
4. Эрра
Фантастика:
городское фэнтези
рпг
аниме
5.00
рейтинг книги
Энфис 4

Князь

Мазин Александр Владимирович
3. Варяг
Фантастика:
альтернативная история
9.15
рейтинг книги
Князь

В теле пацана

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

Авиатор: назад в СССР

Дорин Михаил
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Авиатор: назад в СССР

Сонный лекарь 7

Голд Джон
7. Сонный лекарь
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Сонный лекарь 7

Я снова граф. Книга XI

Дрейк Сириус
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я снова граф. Книга XI

Огни Эйнара. Долгожданная

Макушева Магда
1. Эйнар
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Огни Эйнара. Долгожданная

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3