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

    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):

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

    amt = bpy.data.armatures.new('MyRigData')

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

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

Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT