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

    baseKptsRotX = fcus[('Base', 0)].keyframe_points

    tipKptsRotZ = fcus[('Tip', 2)].keyframe_points

    omega = 2*math.pi/250

    for n in range(26):

        t = 10*n

        phi = omega*t

        kp = baseKptsRotX[n]

        kp.co = (t+1,phi+0.7*math.sin(phi))

        kp.interpolation = 'LINEAR'

        kp = tipKptsRotZ[n]

        kp.co = (t+1, -3*phi+2.7*math.cos(2*phi))

        kp.interpolation = 'LINEAR'

    # Вычисление путей для поз костей

    bpy.ops.pose.select_all(action='SELECT')

    bpy.ops.pose.paths_calculate()

    return 

if __name__ == "__main__":

    run((10,0,0))

    bpy.ops.screen.animation_play(reverse=False, sync=False)

Присвоение отношений родитель-потомок

Эта программа создает сложное движение, последовательно назначая родителем несколько пустышек от одной к следующей, и назначая простое вращение для каждой из них.

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

# File epicycle.py

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

import bpy

import math from math

import pi  

def createEpiCycle(origin):

    periods = [1, 5, 8, 17]

    radii = [1.0, 0.3, 0.5, 0.1]

    axes = [0, 2, 1, 0]

    phases = [0, pi/4, pi/2, 0]

    # Добавление пустышек

    scn = bpy.context.scene

    empties = []

    nEmpties = len(periods)

    for n in range(nEmpties):

        empty = bpy.data.objects.new('Empty_%d' % n, None)

        scn.objects.link(empty)

        empties.append(empty)

    # Назначение каждой пустышке родителя последовательно

    for n in range(1, nEmpties):

        empties[n].parent = empties[n-1]

        empties[n].location = (0, radii[n-1], 0)

    # Вставка двух ключевых кадров для каждой пустышки

    for n in range(nEmpties):

        empty = empties[n]

        empty.keyframe_insert(

            'rotation_euler',

            index=axes[n],

            frame=0,

            group=empty.name)

        empty.keyframe_insert(

            'rotation_euler',

            index=axes[n],

            frame=periods[n],

            group=empty.name)

        fcu = empty.animation_data.action.fcurves[0]

        print(empty, fcu.data_path, fcu.array_index)

    kp0 = fcu.keyframe_points[0]

    kp0.co = (0, phases[n])

    kp0.interpolation = 'LINEAR'

    kp1 = fcu.keyframe_points[1]

    kp1.co = (250.0/periods[n], 2*pi + phases[n])

    kp1.interpolation = 'LINEAR'

    fcu.extrapolation = 'LINEAR'

    last = empties[nEmpties-1]

    bpy.ops.mesh.primitive_ico_sphere_add(

        size = 0.2,

        location=last.location)

    ob = bpy.context.object

    ob.parent = last

    empties[0].location = origin

    return 

def run(origin):

    createEpiCycle(origin)

    bpy.ops.object.paths_calculate()

    return 

if __name__ == "__main__":

    run((0,0,0))

    bpy.ops.screen.animation_play(reverse=False, sync=False)

Управляющие элементы (Drivers)

Эта программа добавляет арматуру с одной управляющей костью и двумя управляемыми костями. Вращение Конца (tip) по Z управляется позицией по X управляющей кости. Вращение Базы (base) по Z управляется как позицией по Y, так и вращением по Z управляющей кости.

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

# File driver.py

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

import bpy 

def run(origin):

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

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

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

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

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

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

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

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

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