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

Здесь есть возможность читать онлайн «Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Третье издание, расширенное и обновлённое для Blender 2.57

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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')

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

bpy.ops.object.shade_smooth()

return flag

def makePole(origin):

bpy.ops.mesh.primitive_cylinder_add(

vertices=32,

radius=ds/2,

depth=1,

cap_ends=True)

bpy.ops.transform.resize(value=(1, 1, 2.5))

pole = bpy.context.object

pole.location = origin

return pole

def addSoftBodyModifier(ob):

mod = ob.modifiers.new(name='SoftBody', type='SOFT_BODY')

sbset = mod.settings

# Мягкое тело

sbset.friction = 0.3

sbset.speed = 1.4

sbset.mass = 0.9

# Цель

sbset.goal_default = 0.3

sbset.goal_spring = 0.1

sbset.goal_friction = 0.1

sbset.vertex_group_goal = 'Pole'

# Рёбра мягкого тела

sbset.pull = 0.1

sbset.push = 0.1

sbset.bend = 0.1

sbset.aerodynamics_type = 'LIFT_FORCE'

sbset.aero = 0.5

#Веса эффектора

ew = sbset.effector_weights

ew.gravity = 0. 1

ew.wind = 0.8

return

def addClothModifier(ob):

cloth = ob.modifiers.new(name='Cloth', type='CLOTH')

cset = cloth.settings

cset.quality = 4

cset.mass = 0.2

cset.structural_stiffness = 0.5

cset.bending_stiffness = 0.05

cset.spring_damping = 0

cset.air_damping = 0.3

cset.use_pin_cloth = True

cset.vertex_group_mass = 'Pole'

#Веса эффектора

ew = cset.effector_weights

ew.gravity = 0.1

ew.wind = 1.0 return

def addWindEffector(origin):

# Добавление эффектора ветра

bpy.ops.object.effector_add(

type='WIND',

location=origin,

rotation=(pi/2,0,0))

wind = bpy.context.object

fset = wind.field

fset.strength = -2.0

fset.noise = 10.0

fset.flow = 0.8

fset.shape = 'PLANE'

return

def addFlagMaterial(name, ob, color1, color2):

# Текстура флага

tex = bpy.data.textures.new('Flag', type = 'WOOD')

tex.noise_basis_2 = 'TRI'

tex.wood_type = 'RINGS'

# Создание материала

mat = bpy.data.materials.new(name)

mat.diffuse_color = color1

# Добавление текстурного слота для текстуры цвета

mtex = mat.texture_slots.add()

mtex.texture = tex

mtex. texture_coords = 'ORCO'

mtex.use_map_color_diffuse = True

mtex.color = color2

# Добавление материала к флагу

ob.data.materials.append(mat)

return mat

def createDisplacementTexture(mat):

tex = bpy.data.textures.new('Flag', type = 'WOOD')

tex.noise_basis_2 = 'SIN'

tex.wood_type = 'BANDNOISE'

tex.noise_type = 'SOFT_NOISE'

tex.noise_scale = 0.576

tex.turbulence = 9.0

# Сохранение текстуры в материале для легкого доступа. Не необходимо на самом деле.

mtex = mat.texture_slots.add()

mtex.texture = tex

mat.use_textures[1] = False

return tex

def addDisplacementModifier(ob, tex, vgrp, empty):

mod = ob.modifiers.new('Displace', 'DISPLACE')

mod.texture = tex

mod.vertex_group = vgrp

mod.direction = 'NORMAL'

mod.texture_coords = 'OBJECT'

mod.texture_coords_object = empty

mod.mid_level = 0.0

mod.strength = 0.1

print("'%s' '%s'" % (vgrp, mod.vertex_group))

mod.vertex_group = vgrp

print("'%s' '%s'" % (vgrp, mod.vertex_group))

return mod

def createAndAnimateEmpty(origin):

bpy.ops.object.add(type='EMPTY', location=origin)

empty = bpy.context.object

scn = bpy.context.scene

scn.frame_current = 1

bpy.ops.anim.keyframe_insert_menu(type='Location')

scn.frame_current = 26

bpy.ops.transform.translate(value=(1,0,1))

bpy.ops.anim.keyframe_insert_menu(type='Location')

scn.frame_current = 1

for fcu in empty.animation_data.action.fcurves:

fcu.extrapolation = 'LINEAR'

for kp in fcu.keyframe_points:

kp.interpolation = 'LINEAR'

return empty

def run(origin):

# Создание флагов и полей

flag1 = makeFlag('SoftBodyFlag', origin+Vector((-3,0,0)), False)

flag2 = makeFlag('ClothFlag', origin+Vector((0,0,0)), False)

flag3 = makeFlag('DisplacementFlag', origin+Vector((3,0,0)), True)

pole1 = makePole(origin+Vector((-3,0,0)))

pole2 = makePole(origin+Vector((0,0,0)))

pole3 = makePole(origin+Vector((3,0,0)))

# Материалы

mat1 = addFlagMaterial('SoftBodyFlag', flag1, (1,0,0), (0,0,1))

mat2 = addFlagMaterial('ClothFlag', flag2, (0,1,0), (1,1,0))

mat3 = addFlagMaterial('DisplacementFlag', flag3, (1,0,1), (0,1,0))

white = bpy.data.materials.new('White')

white.diffuse_color = (1,1,1)

pole1.data.materials.append(white)

pole2.data.materials.append(white)

pole3.data.materials.append(white)

# Добавление модификаторов и ветра

addSoftBodyModifier(flag1)

addClothModifier(flag2)

addWindEffector(origin+Vector((-1,-2,0)))

# Создание смещения

tex3 = createDisplacementTexture(mat3)

empty = createAndAnimateEmpty(origin + Vector((3,0,0)))

mod = addDisplacementModifier(flag3, tex3, 'POLE', empty)

return

if __name__ == "__main__":

bpy.ops.object.select_by_type(type='MESH')

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x