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
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

red.diffuse_color = (1,0,0)

blue = bpy.data.materials.new('Blue')

blue.diffuse_color = (0,0,1)

# Добавление конуса

bpy.ops.mesh.primitive_cone_add(

vertices=4,

radius=1.5,

cap_end=True)

ob1 = bpy.context.object

me1 = ob1.data

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

bpy.ops.mesh.subdivide(number_cuts=5, smoothness=1, fractal=1)

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

# Странно, нужен новый меш, который является копией

verts = []

faces = []

for v in me1.vertices:

verts.append(v.co)

for f in me1.faces:

faces.append(f.vertices)

me2 = bpy.data.meshes.new('Drop')

me2.from_pydata(verts, [], faces)

me2.update(calc_edges=True)

# Установка гладкости граням (smooth)

for f in me2.faces: f.use_smooth = True

# Добавление нового объекта и его активация

ob2 = bpy.data.objects.new('Drop', me2)

scn = bpy.context.scene

scn.objects.link(ob2)

scn.objects.unlink(ob1)

scn.objects.active = ob2

# Добавление групп вершин

top = ob2.vertex_groups.new('Top')

bottom = ob2.vertex_groups.new('Bottom')

for v in me2.vertices:

w = v.co[2] - 0.2

if w < 0:

if w < -1:

w = -1

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

elif w > 0:

if w > 1:

w = 1

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

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

ob2.location = origin

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 flagspy - фото 32

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

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

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

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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