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

ЖАНРЫ

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

Larsson Thomas

Шрифт:

mod = domain.modifiers.new(name='FluidDomain', type='FLUID_SIMULATION')

# mod.settings is FluidSettings

mod.settings.type = 'DOMAIN'

# mod.settings now changed to DomainFluidSettings

settings = mod.settings

settings.use_speed_vectors = False

settings.simulation_scale = 3.0

settings.slip_type = 'FREESLIP'

settings.tracer_particles = 10

settings.generate_particles = 1.5

#settings.start_time = 0.0

#settings.end_time = 2.0

return domain

def createFluid(origin):

#
Жидкость

bpy.ops.mesh.primitive_ico_sphere_add(

size=3.5,

subdivisions=1,

location=origin)

fluid = bpy.context.object

fluid.name = 'Fluid'

fluid.hide = True

fluid.hide_render = True

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

mod = fluid.modifiers.new(name='Fluid', type='FLUID_SIMULATION')

mod.settings.type = 'FLUID'

return fluid

def createObstacle(origin):

# Препятствие

bpy.ops.mesh.primitive_cylinder_add(

vertices=12,

radius=0.3,

depth=2,

cap_ends=True,

location=origin + Vector((0,0,-2.5)),

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

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

obst = bpy.context.object

obst.name = 'Obstacle'

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

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

mod = obst.modifiers[-1]

mod.settings.type = 'OBSTACLE'

# Анимация препятствия

scn = bpy.context.scene

scn.frame_current = 1

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

scn.frame_current = 26

bpy.ops.transform.rotate(value=(pi/2,), axis=(-0, -0, -1))

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

scn.frame_current = 1

for fcu in obst.animation_data.action.fcurves:

fcu.extrapolation = 'LINEAR'

for kp in fcu.keyframe_points:

kp.interpolation = 'LINEAR'

return obst

def createInflow(origin):

#
Приток

bpy.ops.mesh.primitive_circle_add(

radius=0.75,

fill=True,

location=origin+Vector((-3.9,0,3)),

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

inflow = bpy.context.object

inflow.name = 'Inflow'

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

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

mod = inflow.modifiers[-1]

mod.settings.type = 'INFLOW'

settings = mod.settings

settings.inflow_velocity = (1.5,0,0
)

settings.volume_initialization = 'SHELL'

return inflow

def createOutflow(origin):

# Отток

bpy.ops.mesh.primitive_circle_add(

radius=0.75,

fill=True,

location=origin+Vector((3.9,0,-3)),

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

outflow = bpy.context.object

outflow.name = 'Outflow'

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

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

mod = outflow.modifiers[-1]

mod.settings.type = 'OUTFLOW'

mod.settings.volume_initialization = 'SHELL'

return outflow

def createFluidParticle(name, origin, data):

# Частицы жидкости

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

monkey = bpy.context.object

monkey.name = name

# Добавление модификатора жидкости-частиц

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

mod = monkey.modifiers[-1]

mod.settings.type = 'PARTICLE'

(drops, floats, tracer) = data

mod.settings.use_drops = drops

mod.settings.use_floats = floats

mod.settings.show_tracer = tracer

# Настройка типа частиц созданной системы частиц

psys = monkey.modifiers[-1].particle_system

psys.name = name+'Psys'

#psys.settings.name = name+'Pset'

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