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

Тут можно читать онлайн Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - описание и краткое содержание, автор Thomas Larsson, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - читать книгу онлайн бесплатно, автор Thomas Larsson
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

nGuides = len(guides)

nSteps = len(guides[0])

# Создание системы частиц hair

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

bpy.ops.object.particle_system_add()

psys = ob.particle_systems.active

psys.name = 'Hair'

# Настройки частиц

pset = psys.settings

pset.type = 'HAIR'

pset .name = 'HairSettings'

pset.count = nGuides

pset.hair_step = nSteps-1

pset.emit_from = 'FACE'

pset.use_render_emitter = True

# Дочерние частицы

pset.child_type = 'SIMPLE'

pset.child_nbr = 6

pset.rendered_child_count = 300

pset.child_length = 1.0

pset.child_length_threshold = 0.0

# Отсоединение волос и переключение в режим редактирования частиц

bpy.ops.particle.disconnect_hair(all=True)

bpy.ops.particle.particle_edit_toggle()

# Настройка всех ключевых волос

dt = 100.0/(nSteps-1)

dw = 1.0/(nSteps-1)

for m in range(nGuides):

guide = guides[m]

part = psys.particles[m]

part.location = guide[0]

for n in range(1, nSteps):

point = guide[n]

h = part.hair_keys[n-1]

h.co_hair_space = point

h.time = n*dt

h.weight = 1.0 - n*dw

# Переключение режима редактирования частиц

bpy.ops.particle.select_all(action='SELECT')

bpy.ops.particle.particle_edit_toggle()

# Подсоединение волос к мешу

# Во время рендера случится Segmentation violation, если эта строка отсутствует.

bpy.ops.particle.connect_hair(all=True)

# К сожалению, здесь шаг действий вручную представляется необходимым:

# 1. Переключиться в режим частиц

# 2. Прикоснуться к объекту с кистью

# 3. Переключиться в режим объектов

# 4. Переключиться в режим редактирования

# 5. Переключиться в режим объектов

# Это должно соответствовать коду ниже, но терпит неудачу из-за

# неверного контекста

'''

bpy.ops.particle.particle_edit_toggle()

bpy.ops.particle.brush_edit()

bpy.ops.particle.particle_edit_toggle()

bpy.ops.object.editmode_toggle()

bpy.ops.object.editmode_toggle()

'''

return

# Направляющие волос. Четыре волоса с пятью точками.

hairGuides = [

[(-0.334596,0.863821,0.368362),

(-0.351643,2.33203,-0.24479),

(0.0811583,2.76695,-0.758137),

(0.244019,2.73683,-1.5408),

(0.199297,2.60424,-2.32847)],

[(0.646501,0.361173,0.662151),

(1.33538,-0.15509,1.17099),

(2.07275,0.296789,0.668891),

(2.55172,0.767097,-0.0723231),

(2.75942,1.5089,-0.709962)],

[(-0.892345,-0.0182112,0.438324),

(-1.5723,0.484807,0.971839),

(-2.2393,0.116525,0.324168),

(-2.18426,-0.00867975,-0.666435),

(-1.99681,-0.0600535,-1.64737)],

[(-0.0154996,0.0387489,0.995887),

(-0.205679,-0.528201,1.79738),

(-0.191354,0.36126,2.25417),

(0.0876127,1.1781,1.74925),

(0.300626,1.48545,0.821801)] ]

def run(origin):

ob = createHead()

createHair(ob, hairGuides)

ob.location = origin

return

if __name__ == "__main__":

run((0,0,0))

Ткань

Эта программа добавляет плоскость с модификатором ткани. У плоскости есть родитель — обруч, который движется вниз, где она встречается с препятствием-сферой. Влияние модификатора ткани находится под контролем группы вершин, а это значит, что углы движутся с обручем, в то время как середина деформируется препятствием. Плоскости присваивается материал со стресс-отображением прозрачности.

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

# File cloth.py

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

import bpy, mathutils, math from mathutils import Vector

def run(origin):

side = 4

diagonal = side/math.sqrt(2)

hoopRad = 0.1

eps = 0.75

nDivs = 40

scn = bpy.context.scene

# Добавление сферы, выступающей в качестве объекта столкновения

bpy.ops.mesh.primitive_ico_sphere_add(location=origin)

sphere = bpy.context.object

bpy.ops.object.shade_smooth()

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

bpy.ops.object.modifier_add(type='COLLISION')

cset = sphere.modifiers[0].settings

cset.thickness_outer = 0.2

cset.thickness_inner = 0.5

cset.permeability = 0.2

cset.stickness = 0.2

bpy.ops.object.modifier_add(type='SUBSURF')

# Добавление кольца

center = origin+Vector((0,0,2))

bpy.ops.mesh.primitive_torus_add(

major_radius= diagonal + hoopRad,

minor_radius= hoopRad,

location=center,

rotation=(0, 0, 0))

bpy.ops.object.shade_smooth()

ring = bpy.context.object

# Добавление плоскости над сферой и привязка её к кольцу

bpy.ops.mesh.primitive_plane_add(location=(0,0,0))

bpy.ops.transform.resize(value=(side/2,side/2,1))

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

bpy.ops.mesh.subdivide(number_cuts=nDivs)

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

plane = bpy.context.object

plane.parent = ring

me = plane.data

# Создание группы вершин. Объект не должен быть активным?

scn.objects.active = None

grp = plane.vertex_groups.new('Group')

for v in plane.data.vertices:

r = v.co - center

x = r.length/diagonal

w = 3*(x-eps)/(1-eps)

if w > 1:

w = 1

if w > 0:

grp.add([v.index], w, 'REPLACE')

# Активация плоскости снова

scn.objects.active = plane

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

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

cset = cloth.settings

cset.use_pin_cloth = True

cset.vertex_group_mass = 'Group'

# Настройки шёлка, скопировано из "scripts/presets/cloth/silk.py"

cset.quality = 5

cset.mass = 0.150

cset.structural_stiffness = 5

cset.bending_stiffness = 0.05

cset.spring_damping = 0

cset.air_damping = 1

# Сглаженное затенение

plane.select = True

bpy.ops.object.shade_smooth()

bpy.ops.object.modifier_add(type='SUBSURF')

# Текстура Blend

tex = bpy.data.textures.new('Blend', type = 'BLEND')

tex.progression = 'SPHERICAL'

tex.intensity = 1.0

tex.contrast = 1.0

tex.use_color_ramp = True

elts = tex.color_ramp.elements

elts[0].color = (0, 0, 0, 1)

elts[0].position = 0.56

elts[1].color = (1, 1, 1, 0)

elts[1].position = 0.63

# материал Rubber (Резиновый)

mat = bpy.data.materials.new('Rubber')

mat.diffuse_color = (1,0,0)

mat.use_transparency = True

mat.alpha = 0.25

mtex = mat.texture_slots.add()

mtex.texture = tex

mtex.texture_coords = 'STRESS'

mtex.use_map_color_diffuse = True

mtex.diffuse_color_factor = 0.25

mtex.use_map_alpha = True

mtex.alpha_factor = 1.0

mtex.blend_type = 'ADD'

# Добавление материала к плоскости

plane.data.materials.append(mat)

# Анимация кольца

ring.location = center

ring.keyframe_insert('location', index=2, frame=1)

ring.location = origin - Vector((0,0,0.5))

ring.keyframe_insert('location', index=2, frame=20)

ring.location = center

return

if __name__ == "__main__":

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

bpy.ops.object.delete()

run(Vector((0,0,0)))

scn = bpy.context.scene

scn.frame_current = 1

bpy.ops.screen.animation_play()

Мягкие тела

Эта программа добавляет конус с модификатором softbody (мягкое тело) и плоскость-препятствие.

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

# File softbody.py

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

import bpy

import mathutils

from mathutils import Vector

def run(origin):

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

red = bpy.data.materials.new('Red')

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

Интервал:

Закладка:

Сделать


Thomas Larsson читать все книги автора по порядку

Thomas Larsson - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода, автор: Thomas Larsson. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x