Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Шрифт:
me2.materials.append(blue)
# Добавление модификатора softbody
mod = ob2.modifiers.new(name='SoftBody', type='SOFT_BODY')
sbset = mod.settings
# Мягкое тело
sbset.friction = 0.6
sbset.speed = 0.4
sbset.mass = 8.1
#
Цель
sbset.goal_default = 0.7
sbset.goal_spring = 0.3
sbset.goal_friction = 0.0
sbset.vertex_group_goal = 'Top'
# Края мягкого тела
sbset.pull = 0.6
sbset.push = 0.1
sbset.bend = 0.1
sbset.aerodynamics_type = 'LIFT_FORCE
'
sbset.aero = 0.5
# Добавление вихря
bpy.ops.object.effector_add(
type='VORTEX',
location=origin+Vector((0,0,-4)))
vortex = bpy.context.object
fset = vortex.field
fset.strength = 4.5
fset.shape = 'PLANE'
fset.apply_to_location = False
fset.apply_to_rotation = True
fset.falloff_type = 'TUBE'
# Добавление плоскости столкновения
# Предупреждение. Столкновение объектов делает симуляцию очень медленной!
bpy.ops.mesh.primitive_plane_add(
location=origin-Vector((0,0,1.7)))
bpy.ops.transform.resize(value=(4, 4, 4))
plane = bpy.context.object
plane.data.materials.append(red)
mod
= plane.modifiers.new(name='Collision', type='COLLISION')
return
if __name__ == "__main__":
bpy.context.scene.frame_end = 600
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete
run(Vector((0,0,6)))
bpy.ops.screen.animation_play
#bpy.ops.render.opengl(animation=True)
Ткань, мягкие тела и текстуры displace
Эта программа показывает три различных метода размахивания флагом: модификатором ткани, модификатором мягких
#----------------------------------------------------------
# File flags.py
# Создает флаг из мягкого тела и флаг из ткани на ветру.
# Update to API rev. 36816
#----------------------------------------------------------
import bpy, mathutils, math
from mathutils import Vector
from math import pi
# Размер флага, глобальные переменные
xmax = 40
zmax = 24
ds = 2.0/xmax
def makeFlag(name, origin, invert):
# Добавление нового меша, который будет флагом
me = bpy.data.meshes.new(name)
flag = bpy.data.objects.new(name, me)
scn = bpy.context.scene
scn.objects.link(flag)
scn.objects.active = flag
# Построение меша флага
verts = []
faces = []
for x in range(xmax):
for z in range(zmax):
verts.append(((x+0.5)*ds, 0, z*ds))
if x > 0 and z > 0:
faces.append(((x-1)*zmax+(z-1), (x-1)*zmax+z, x*zmax+z, x*zmax+(z-1)))
me.from_pydata(verts, [], faces)
me.update(calc_edges=True)
flag.location = origin
# Добавление групп вершин
grp = flag.vertex_groups.new('Pole')
for v in me.vertices:
w = 1.5 - 7*v.co[0]
if invert:
if w > 1:
grp.add([v.index], 0.0, 'REPLACE')
else:
grp.add([v.index], 1-w, 'REPLACE')
else:
if w > 1:
grp.add([v.index], 1.0, 'REPLACE')
elif w > 0:
grp.add([v.index], w, 'REPLACE')
Поделиться:
Популярные книги
Изгой. Трилогия
Изгой
Фантастика:
фэнтези
8.45
рейтинг книги
Старатель 2
2. Старатели
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Купеческая дочь замуж не желает
Фантастика:
фэнтези
6.89
рейтинг книги
Кодекс Охотника. Книга IX
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Школа Семи Камней
10. Real-Rpg
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Тайны ордена
6. Девятый
Фантастика:
боевая фантастика
попаданцы
7.48
рейтинг книги
Убивать чтобы жить 9
9. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Мимик нового Мира 11
10. Мимик!
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Пришествие бога смерти. Том 5
5. Ленивое божество
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аномальный наследник. Том 3
2. Аномальный наследник
Фантастика:
фэнтези
7.74
рейтинг книги
Опер. Девочка на спор
5. Опасная работа
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Имя нам Легион. Том 4
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 8
8. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Личник
3. Ермак
Фантастика:
альтернативная история
6.33