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

ЖАНРЫ

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

Larsson Thomas

Шрифт:

for ob in bpy.data.objects:

if ob.type not in ['CAMERA', 'LAMP', 'EMPTY']:

sum += ob.location

n += 1

if n == 0:

return sum

else:

return sum/n

def addTrackToConstraint(ob, name, target):

# Добавление ограничения TrackTo

cns = ob.constraints.new('TRACK_TO')

cns.name = name

cns.target = target

cns.track_axis = 'TRACK_NEGATIVE_Z'

cns.up_axis = 'UP_Y'

cns.owner_space = 'WORLD'

cns.target_space = 'WORLD'

return

def createLamp(name, lamptype, loc):

#
Создание источника освещения

bpy.ops.object.add(

type='LAMP',

location=loc)

ob = bpy.context.object

ob.name = name

lamp = ob.data

lamp.name = 'Lamp'+name

lamp.type = lamptype

return ob

def createLamps(origin, target):

deg2rad = 2*pi/360

sun = createLamp('sun', 'SUN', origin+Vector((0,20,50)))

lamp = sun.data

lamp.type = 'SUN'

addTrackToConstraint(sun, 'TrackMiddle', target)

for ob in bpy.context.scene.objects:

if ob.type == 'MESH':

spot = createLamp(ob.name+'Spot', 'SPOT', ob.location+Vector((0,2,1)))

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

lamp = spot.data

# Лампа

lamp.type = 'SPOT'

lamp.color = (0.5,0.5,0)

lamp.energy = 0.9

lamp.falloff_type = 'INVERSE_LINEAR'

lamp.distance = 7.5

# Форма луча прожектора

lamp.spot_size = 30*deg2rad

lamp.spot_blend = 0.3

# Тени

lamp.shadow_method = 'BUFFER_SHADOW'

lamp.use_shadow_layer = True

lamp.shadow_buffer_type = 'REGULAR'

lamp.shadow_color = (0,0,1)

addTrackToConstraint(spot, 'Track'+ob.name, ob)

return

def createCamera(origin, target):

#
Создание объекта и камеры

bpy.ops.object.add(

type='CAMERA',

location=origin,

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

ob = bpy.context.object

ob.name = 'MyCamOb'

cam = ob.data

cam.name = 'MyCam'

addTrackToConstraint(ob, 'TrackMiddle', target)

# Объектив

cam.type = 'PERSP'

cam.lens = 75

cam.lens_unit = 'MILLIMETERS'

cam.shift_x = -0.05

cam.shift_y = 0.1

cam.clip_start = 10.0

cam.clip_end = 250.0

empty = bpy.data.objects.new('DofEmpty', None)

empty.location = origin+Vector((0,10,0))

cam.dof_object = empty

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

cam.show_title_safe = True

cam.show_name = True

# Делаем её текущей камерой

scn = bpy.context.scene

scn.camera = ob

return ob

def run(origin):

# Удаление всех камер и ламп

scn = bpy.context.scene

for ob in scn.objects:

if ob.type == 'CAMERA' or ob.type == 'LAMP':

scn.objects.unlink(ob)

# Добавление пустышки в середине всех визуализируемых объектов

midpoint = findMidPoint

bpy.ops.object.add(

type='EMPTY',

location=midpoint),

target = bpy.context.object

target.name = 'Target'

createCamera(origin+Vector((50,90,50)), target)

createLamps(origin, target)

return

if __name__ == "__main__":

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

Мир, вид и рендер

Мир

Эта программа модифицирует настройки Мира. Изображение является рендером куба по-умолчанию со встроенной камерой и освещением.

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