Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Шрифт:
if v.co[0] > 0.001:
left.add([v.index], 1.0, 'REPLACE')
elif v.co[0] < -0.001:
right.add([v.index], 1.0, 'REPLACE')
else:
left.add([v.index], 0.5, 'REPLACE')
right.add([v.index], 0.5, 'REPLACE')
# Добавление ключа Basis (базовый)
bpy.ops.object.shape_key_add(None)
basis = ob.active_shape_key
#
Добавление ключа FrontForward:
# передние вершины сдвигаются на единицу вперёд
# Пределы изменения (Slider) от -1.0 до +2.0
bpy.ops.object.shape_key_add(None)
frontFwd = ob.active_shape_key
frontFwd.name = 'FrontForward'
frontFwd.slider_min = -1.0 frontFwd.slider_max = 2.0
for v in [19, 20, 23, 24]:
pt = frontFwd.data[v].co
pt[1] = pt[1] - 1
# Добавление ключей TopUp: верхние вершины перемещаются на единицу вверх.
# TopUp_L и TopUp_R влияют только на левые и правые половины, соответственно
keylist = [(None, ''), ('Left', '_L'), ('Right', '_R')]
for (vgrp, suffix) in keylist:
bpy.ops.object.shape_key_add(None)
topUp = ob.active_shape_key
topUp.name = 'TopUp' + suffix
if vgrp:
topUp.vertex_group = vgrp
for v in [0, 1, 9, 10, 17, 18, 25]:
pt = topUp.data[v].co
pt[2] = pt[2] + 1
# Установка позы ключам формы
for shape in ob.data.shape_keys.key_blocks:
shape.value = random.random
return
if __name__ == "__main__":
# Создание пяти объектов с произвольными ключами формы
for j in range(5):
run((3*j,0,0))
Применение модификатора массива (array)
Эта программа создает цепь из десяти звеньев. Звено является простым тором, масштабированным вдоль оси x. Мы добавляем звену модификатор массива, где смещение управляется пустышкой (empty). Наконец, модификатор массива применяется (apply), создавая из цепи единственный меш.
#----------------------------------------------------------
# File chain.py
# Creates an array modifier and applies it# Update to API rev. 36523
#----------------------------------------------------------
import bpy
import math
from math import pi
def run(origin):
#
Добавление единственного звена цепи к сцене
bpy.ops.mesh.primitive_torus_add(
#major_radius=1,
#minor_radius=0.25,
major_segments=12,
minor_segments=8,
use_abso=True,
abso_major_rad=1,
abso_minor_rad=0.6,
location=(0,0,0),
rotation=(0,0,0))
# Масштабирование тора вдоль оси x
ob = bpy.context.object
ob.scale = (0.7, 1, 1)
bpy.ops.object.transform_apply(scale=True)
# Создание пустышки
bpy.ops.object.add(
type='EMPTY',
location=(0,1.2,0.2),
rotation=(pi/2, pi/4, pi/2))
empty = bpy.context.object
# Звено цепи снова делается активным
scn = bpy.context.scene
scn.objects.active = ob
# Добавление модификатора
mod = ob.modifiers.new('Chain', 'ARRAY')
mod.fit_type = 'FIXED_COUNT'
mod.count = 10
mod.use_relative_offset = 0
mod.use_object_offset = True
mod.offset_object = empty
# Применение модификатора
bpy.ops.object.visual_transform_apply
bpy.ops.object.modifier_apply(apply_as='DATA', modifier='Chain')
# Перемещение цепи на место
bpy.ops.transform.translate(value=origin)
# Пустышка больше не нужна
scn.objects.unlink(empty)
del(empty)
return
if __name__ == "__main__":
Поделиться:
Популярные книги
Противостояние
3. Система компиляции
Фантастика:
героическая фантастика
рпг
5.00
рейтинг книги
Кодекс Охотника. Книга IX
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Зимние ходоки
7. Антикризисный Актив
Фантастика:
героическая фантастика
попаданцы
5.00
рейтинг книги
Академия
2. Медорфенов
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Казачий князь
5. Шатун
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хозяйка забытой усадьбы
5. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Барон не признает правила
12. Закон сильного
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Кровь на клинке
3. Шатун
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.40
рейтинг книги
Отмороженный 6.0
6. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
На границе империй. Том 4
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
Запасная дочь
Фантастика:
фэнтези
6.40
рейтинг книги
Отверженный III: Вызов
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Волков. Гимназия №6
1. Волков
Фантастика:
попаданцы
альтернативная история
аниме
7.00
рейтинг книги
Красное на красном
1. Отблески Этерны
Фантастика:
фэнтези
8.69