Чтение онлайн

ЖАНРЫ

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

Larsson Thomas

Шрифт:

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

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

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

< image l:href="#"/>

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

# File fire.py

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

import bpy, mathutils, math

from mathutils import Vector, Matrix

from math import pi

def createEmitter(origin):

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

emitter = bpy.context.object

bpy.ops.mesh.uv_texture_add

return emitter

def createFire(emitter):

#
Добавление первой системы частиц — огня

bpy.context.scene.objects.active = emitter

bpy.ops.object.particle_system_add

fire = emitter.particle_systems[-1]

fire.name = 'Fire'

fset = fire.settings

# Эмиссия

fset.name = 'FireSettings'

fset.count = 100

fset.frame_start = 1

fset.frame_end = 200

fset.lifetime = 70

fset.lifetime_random = 0.2

fset.emit_from = 'FACE'

fset.use_render_emitter = False

fset.distribution = 'RAND'

fset.object_align_factor = (0,0,1)

# Скорость

fset.normal_factor = 0.55

fset.factor_random = 0.5

# Физика

fset.physics_type = 'NEWTON'

fset.mass = 1.0

fset.particle_size = 10.0

fset.use_multiply_size_mass = False

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

ew = fset.effector_weights

ew.gravity = 0.0 ew.wind = 1.0

# Отображение и рендер

fset.draw_percentage = 100

fset.draw_method = 'RENDER'

fset.material = 1

fset.particle_size = 0.3

fset.render_type = 'BILLBOARD'

fset.render_step = 3

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

fset.child_type = 'SIMPLE'

fset.rendered_child_count = 50

fset.child_radius = 1.1

fset.child_roundness = 0.5 return fire

def createSmoke(emitter):

# Добавление второй системы частиц — дыма

bpy.context.scene.objects.active = emitter

bpy.ops.object.particle_system_add

smoke = emitter.particle_systems[-1]

Поделиться с друзьями: