Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - [9]
> for n in range(26):
> pbase.keyframe_insert(
> 'rotation_euler',
> index=0,
> frame=n,
> group='Base')
> ptip.keyframe_insert(
> 'rotation_euler',
> index=2,
> frame=n,
> group='Tip')
> # Получение FCurves из вновь созданного действия
> action = ob.animation_data.action
> fcus = {}
> for fcu in action.fcurves:
> bone = fcu.data_path.split('"')[1]
> fcus[(bone, fcu.array_index)] = fcu
> # Модификация ключевых точек
> 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)
Эта программа добавляет арматуру с одной управляющей костью и двумя управляемыми костями. Вращение Конца (tip) по Z управляется позицией по X управляющей кости. Вращение Базы (base) по Z управляется как позицией по Y, так и вращением по Z управляющей кости.
>#----------------------------------------------------------
># File driver.py
>#----------------------------------------------------------
>import bpy
>def run(origin):
> # Создание арматуры и объекта
> amt = bpy.data.armatures.new('MyRigData')
> rig = bpy.data.objects.new('MyRig', amt)
> rig.location = origin
> amt.show_names = True
> # Привязка объекта к сцене
> scn = bpy.context.scene
> scn.objects.link(rig)
> scn.objects.active = rig
> scn.update()
> # Создание костей
> bpy.ops.object.mode_set(mode='EDIT')
> base = amt.edit_bones.new('Base')
> base.head = (0,0,0)
> base.tail = (0,0,1)
> tip = amt.edit_bones.new('Tip')
> tip.head = (0,0,1)
> tip.tail = (0,0,2)
> tip.parent = base
> tip.use_connect = True
> driver = amt.edit_bones.new('Driver')
> driver.head = (2,0,0)
> driver.tail = (2,0,1)
> bpy.ops.object.mode_set(mode='POSE')
> # Добавление управляющего элемента для вращения по Z кости Tip
> # Tip.rotz = 1.0 - 1.0*x, где x = Driver.locx
> fcurve = rig.pose.bones["Tip"].driver_add('rotation_quaternion', 3)
> drv = fcurve.driver
> drv.type = 'AVERAGE'
> drv.show_debug_info = True
> var = drv.variables.new()
> var.name = 'x'
> var.type = 'TRANSFORMS'
> targ = var.targets[0]
> targ.id = rig
> targ.transform_type = 'LOC_X'
> targ.bone_target = 'Driver'
> targ.use_local_space_transform = True
> fmod = fcurve.modifiers[0]
> fmod.mode = 'POLYNOMIAL'
> fmod.poly_order = 1
> fmod.coefficients = (1.0, -1.0)
> # Добавление управляющего элемента для вращения по Z кости Base
В этой книге автор, сам прошедший путь от разработчика до менеджера в сфере IT, рассказывает неочевидные моменты, которые являются критически важными для правильного управления. Почему разработчики увольняются после повышения зарплаты? Как делать FixedPrice проекты? Почему Scrum не упрощает менеджмент? Книга содержит ответ на эти и многие другие вопросы. В книге есть много баек, которые показывают тяжёлую, но интересную жизнь менеджера в разработке. Иллюстратор обложки: Ксения Ерощенко. Иллюстрации в тексте книги авторские.
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Вниманию читателей предлагается справочник по JavaScript.Справочник предназначается для людей, уже освоивших азы программирования в JavaScript.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.Дата выхода данной версии справочника: 12:33, 21 марта 2007.
Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.