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

ЖАНРЫ

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

Larsson Thomas

Шрифт:

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

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

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