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

Интервал:

Закладка:

Сделать

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

bpy.ops.object.delete()

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

bpy.ops.screen.animation_play()

Частицы и модификатор Explode (взрыв)

Пуля с невидимой системой частиц стреляет в хрустальный шар. Шар разрушается, и части падают на пол.

Эффект достигается за счет придания шару модификатора взрыва, который запускается системой частиц. Идея заключалась в том, чтобы сделать это в системе частиц reactor , которая вызывается системой частиц пули. Тем не менее, частицы reactor , по-видимому, еще не включены в Blender 2.5, так что частицы шара устанавливаются на выброс в определенное время, а не по реакции.

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

# File crystal.py

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

import bpy, mathutils, math

from mathutils import *

def addSphere(name, size, origin):

bpy.ops.mesh.primitive_ico_sphere_add(

subdivisions=2,

size=size,

location=origin)

bpy.ops.object.shade_smooth()

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

ob = bpy.context.object

ob.name = name

return ob

def addFloor(name, origin, hidden):

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

bpy.ops.transform.resize(value=(30, 30, 30))

floor = bpy.context.object

floor.name = name

if hidden:

floor.hide = True

floor.hide_render = True

return floor

# Матариал пола

voronoi = bpy.data.textures.new('Voronoi', type = 'VORONOI')

voronoi.color_mode = 'POSITION'

voronoi.noise_scale = 0.1

plastic = bpy.data.materials.new('Plastic')

plastic.diffuse_color = (1,1,0)

plastic.diffuse_intensity = 0.1

mtex = plastic.texture_slots.add()

mtex.texture = voronoi

mtex.texture_coords = 'ORCO'

mtex.color = (0,0,1)

floor.data.materials.append(plastic)

return floor

def run(origin):

# ----------- Материалы

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

red.diffuse_color = (1,0,0)

red.specular_hardness = 200

rmir = red.raytrace_mirror

rmir.use = True

rmir.distance = 0.001

rmir.fade_to = 'FADE_TO_MATERIAL'

rmir.distance = 0.0

rmir.reflect_factor = 0.7

rmir.gloss_factor = 0.4

grey = bpy.data.materials.new('Grey' )

grey.diffuse_color = (0.5,0.5,0.5)

# ----------- Пуля — маленькая сфера

bullet = addSphere('Bullet', 0.2, origin)

bullet.data.materials.append(grey)

# Анимация пули

scn = bpy.context.scene

scn.frame_current = 51

bullet.location = origin

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

bullet.location = origin+Vector((0,30,0))

scn.frame_current = 251

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

scn.frame_current = 1

action = bullet.animation_data.action

for fcu in action.fcurves:

fcu.extrapolation = 'LINEAR'

for kp in fcu.keyframe_points:

kp.interpolation = 'LINEAR'

# Система частиц Trail (след) для пули

bpy.ops.object.particle_system_add()

trail = bullet.particle_systems[0]

trail.name = 'Trail'

fset = trail.settings

# Эмиссия

fset.name = 'TrailSettings'

fset.count = 1000 fset.frame_start = 1

fset.frame_end = 250

fset.lifetime = 25

fset.emit_from = 'FACE'

fset.use_render_emitter = True

# Скорость

fset.normal_factor = 1.0

fset.factor_random = 0.5

# Физика

fset.physics_type = 'NEWTON'

fset.mass = 0

# Установка всех эффекторных весов в ноль

ew = fset.effector_weights

ew.gravity = 0.0

# Не рендерить

fset.draw_method = 'DOT'

fset.render_type = 'NONE'

# -------------- Шар

ball = addSphere('Ball', 1.0, origin)

ball.data.materials.append(red)

# Система частиц

bpy.ops.object.particle_system_add()

react = ball.particle_systems[0]

react.name = 'React'

fset = react.settings

# Эмиссия

fset.name = 'TrailSettings'

fset.count = 50

fset.frame_start = 47

fset.frame_end = 57

fset.lifetime = 250

fset.emit_from = 'FACE'

fset.use_render_emitter = True

# Скорость

fset.normal_factor = 5.0

fset.factor_random = 2.5

# Физика

fset.physics_type = 'NEWTON'

fset.mass = 1.0

# Не рендерить

fset.draw_method = 'CROSS'

fset.render_type = 'NONE'

# Модификатор Explode

mod = ball.modifiers.new(name='Explode', type='EXPLODE')

mod.use_edge_cut = True

mod.show_unborn = True

mod.show_alive = True

mod.show_dead = True

mod.use_size = False

# ---- Скрытый пол с модификатором collision (столкновения)

hidden = addFloor('Hidden', origin+Vector((0,0,-3.9)), True)

mod = hidden.modifiers.new(name='Collision', type='COLLISION')

mset = mod.settings

mset.permeability = 0.01

mset.stickness = 0.1

mset.use_particle_kill = False

mset.damping_factor = 0.6

mset.damping_random = 0.2

mset.friction_factor = 0.3

mset.friction_random = 0.1

addFloor('Floor', Vector((0,0,-4)), False)

return

if __name__ == "__main__":

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

bpy.ops.object.delete()

# Камера, освещение

bpy.ops.object.camera_add(

location = Vector((12,-12,4)),

rotation = Vector((70,0,45))*math.pi/180)

cam = bpy.context.object.data

cam.lens = 35

bpy.ops.object.lamp_add(type='POINT',

location = Vector((11,-7,6)))

bpy.ops.object.lamp_add(type='POINT',

location =Vector((-7,-10,2)))

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

Частицы огня и дыма

Эта программа добавляет две системы частиц для огня и дыма. Частицы отображаются в виде билбордов с процедурными текстурами.

File firepy - фото 33

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

# File fire.py

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

import bpy, mathutils, math

from mathutils import Vector, Matrix

from math import pi

def createEmitter(origin):

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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