Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Шрифт:
return
if __name__ == "__main__":
for ob in
bpy.context.scene.objects:
bpy.context.scene.objects.unlink(ob)
addFloor(Vector((0,0,-4)))
setupWorld
# Освещение и камера
bpy.ops.object.lamp_add( type = 'POINT',
location=(4,6,1))
bpy.ops.object.lamp_add( type = 'POINT', location=(-7,-5,0))
bpy.ops.object.camera_add(location=Vector((8,-8,3)),
rotation=(pi/3, 0, pi/6))
run(Vector((0,0,0)))
bpy.ops.screen.animation_play
Симуляция
твёрдого тела
Эта программа использует игровой движок Блендера для моделирования падения кучи объектов на землю. Анимации записываются и впоследствии могут быть воспроизведены.
#----------------------------------------------------------
# File pile.py
#----------------------------------------------------------
import bpy, mathutils, math, random
from mathutils import Vector NObjects = 7Seed = 444
def addSceneGameSettings(scn):
# Данные игровой сцены
sgdata = scn.game_settings
sgdata.fps = 25 sgdata.frequency = True
sgdata.material_mode = 'GLSL'
sgdata.show_debug_properties = True
sgdata.show_framerate_profile = True
sgdata.show_fullscreen = True
sgdata.show_physics_visualization = True
sgdata.use_animation_record = True return
def addMonkeyGameSettings(ob):
# Настройки игрового объекта
goset = ob.game
goset.physics_type = 'RIGID_BODY'
goset.use_actor = True
goset.use_ghost = False
goset.mass = 7.0
goset.damping = 0.0
goset.use_collision_bounds = True
goset.collision_bounds_type = 'BOX'
goset.show_actuators = True goset.show_controllers = True
goset.show_debug_state = True
goset.show_sensors = True goset.show_state_panel = True
return
def run(origin):
#
Смена движка рендера с BLENDER_RENDER на BLENDER_GAME
bpy.context.scene.render.engine = 'BLENDER_GAME'
# Создание пола
bpy.ops.mesh.primitive_plane_add(location=origin)
bpy.ops.transform.resize(value=(20, 20, 20))
floor = bpy.context.object
mat = bpy.data.materials.new(name = 'FloorMaterial')
mat.diffuse_color = (0.5, 0.5, 0.5)
# Создание кучи объектов
objectType = ["cube", "ico_sphere", "monkey"]
objects = []
deg2rad = math.pi/180
random.seed(Seed)
for n in range(NObjects):
x = []
for i in range(3):
x.append( random.randrange(0, 360, 1) )
dx = 0.5*random.random
dy = 0.5*random.random
obType = objectType[ random.randrange(0, 3, 1) ]
fcn = eval("bpy.ops.mesh.primitive_%s_add" % obType)
fcn(location=origin+Vector((dx, dy, 3*n+3)),
rotation=deg2rad*Vector((x[0], x[1], x[2])))
ob = bpy.context.object objects.append( ob )
mat = bpy.data.materials.new(name='Material_%02d' % n) c = []
for j in range(3):
c.append( random.random ) mat.diffuse_color = c
ob.data.materials.append(mat)
# Установка игровых настроек для пола
fset = floor.game
fset.physics_type = 'STATIC'
# Установка игровых настроек для объектов
for n in range(NObjects):
addMonkeyGameSettings(objects[n])
# Установка игровых настроек для сцены
scn = bpy.context.scene
addSceneGameSettings(scn)
scn.frame_start = 1
Поделиться:
Популярные книги
Архил...? 4
4. Архил...?
Фантастика:
фэнтези
попаданцы
альтернативная история
5.50
рейтинг книги
Мятежник
4. Стеллар
Фантастика:
боевая фантастика
7.39
рейтинг книги
Дурашка в столичной академии
Фантастика:
фэнтези
7.80
рейтинг книги
Котенок. Книга 3
3. Котенок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Аристократ из прошлого тысячелетия
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Печать мастера
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Господин следователь. Книга 3
3. Господин следователь
Детективы:
исторические детективы
5.00
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Командир Красной Армии
1. Командир Красной Армии
Фантастика:
попаданцы
8.72
рейтинг книги
Рота Его Величества
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Босс Мэн
Любовные романы:
современные любовные романы
8.97
рейтинг книги
Два лика Ирэн
Любовные романы:
любовно-фантастические романы
6.08
рейтинг книги
Не грози Дубровскому! Том III
3. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 27
27. Лекарь
Фантастика:
аниме
фэнтези
5.00