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

Эта программа добавляет источник света "солнце" к сцене, и прожекторы (spot) для каждого объекта рендера на сцене. Каждый прожектор имеет ограничение TrackTo, заставляющее быть направленным на свой объект, тогда как солнце отслеживает центр всех объектов, визуализируемых на сцене.

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

# File camera.py

# Adds one camera and several lights

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

import bpy, mathutils, math

from mathutils import Vector

from math import pi  

def findMidPoint():

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

    sum = Vector((0,0,0))

    n = 0

    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  

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных