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

Шрифт
Интервал

>    # Base.rotz = z*z - 3*y, где y = Driver.locy и z = Driver.rotz

>    fcurve = rig.pose.bones["Base"].driver_add('rotation_quaternion', 3)

>    drv = fcurve.driver

>    drv.type = 'SCRIPTED'

>    drv.expression = 'z*z - 3*y'

>    drv.show_debug_info = True


>    var1 = drv.variables.new()

>    var1.name = 'y'

>    var1.type = 'TRANSFORMS'


>    targ1 = var1.targets[0]

>    targ1.id = rig

>    targ1.transform_type = 'LOC_Y'

>    targ1.bone_target = 'Driver'

>    targ1.use_local_space_transform = True


>    var2 = drv.variables.new()

>    var2.name = 'z'

>    var2.type = 'TRANSFORMS'


>    targ2 = var2.targets[0]

>    targ2.id = rig

>    targ2.transform_type = 'ROT_Z'

>    targ2.bone_target = 'Driver'

>    targ2.use_local_space_transform = True


>    return 


>if __name__ == "__main__":

>    run((0,0,0))




Другие типы данных

Текст

Эта программа добавляет текстовый объект в 3D-пространство и устанавливает некоторые атрибуты. Заметьте, что тип данных здесь используется TextCurve; тип Text применяется для текста в текстовом редакторе.



>#----------------------------------------------------------

># File text.py

>#----------------------------------------------------------

>import bpy

>import math from math

>import pi  


>def run(origin):

>    # Создание и именование объекта TextCurve

>    bpy.ops.object.text_add(

>        location=origin,

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

>    ob = bpy.context.object

>    ob.name = 'HelloWorldText'

>    tcu = ob.data

>    tcu.name = 'HelloWorldData'


>    # Атрибуты TextCurve

>    tcu.body = "Hello, world"

>    tcu.font = bpy.data.fonts[0]

>    tcu.offset_x = -9

>    tcu.offset_y = -0.25

>    tcu.shear = 0.5

>    tcu.size = 3

>    tcu.space_character = 2

>    tcu.space_word = 4


>    # Унаследованные атрибуты Curve (Кривая)

>    tcu.extrude = 0.2

>    tcu.use_fill_back = True

>    tcu.use_fill_deform = True

>    tcu.use_fill_front = True  


>if __name__ == "__main__":

>    run((0,0,0))


Слои

Эта программа иллюстрирует три метода установки объекта на новом слое:

1. Создать его на правильном слое.

2. Создать его в слое 1, и изменить Object.layer.

3. Создать его в слое 1, и использовать оператор для его перемещения.

Также показано, как изменять видимость слоёв.



>#----------------------------------------------------------

># File layers.py

>#----------------------------------------------------------

>import bpy 


>def createOnLayer(mat):

>    for n in range(3, 8):

>    # Создание n-угольника в слое n+11

>        layers = 20*[False]

>        layers[n+11] = True


>        bpy.ops.mesh.primitive_circle_add(

>            vertices=n,

>            radius=0.5,

>            fill=True,

>            view_align=True,

>            layers=layers,

>            location=(n-3,0,0)

>        )

>        bpy.context.object.data.materials.append(mat)

>    return 


>def changeLayerData(mat):

>    for n in range(3, 8):

>        # Создание n-угольника в слое 1

>        bpy.ops.mesh.primitive_circle_add(

>            vertices=n,

>            radius=0.5,

>            fill=True,

>            view_align=True,

>            location=(n-3,1,0)

>        )

>        bpy.context.object.data.materials.append(mat)


>        # Затем перемещение его на новый слой

>        ob = bpy.context.object

>        ob.layers[n+11] = True


>        # Удаление его из других слоев.

>        layers = 20*[False]

>        layers[n+11] = True

>        for m in range(20):

>            ob.layers[m] = layers[m]

>    return 


>def moveLayerOperator(mat):

>    for n in range(3, 8):

>        # Создание n-угольника в слое 1

>        bpy.ops.mesh.primitive_circle_add(

>            vertices=n,

>            radius=0.5,

>            fill=True,

>            view_align=True,

>            location=(n-3,2,0)

>        )

>        bpy.context.object.data.materials.append(mat)


>        # Затем перемещение его на новый слой

>        layers = 20*[False]

>        layers[n+11] = True

>        bpy.ops.object.move_to_layer(layers=layers)

>    return  


>def run():

>    # Создание нескольких материалов

>    red = bpy.data.materials.new('Red')

>    red.diffuse_color = (1,0,0)

>    green = bpy.data.materials.new('Green')

>    green.diffuse_color = (0,1,0)

>    blue = bpy.data.materials.new('Blue')

>    blue.diffuse_color = (0,0,1)


>    # Три метода перемещения объектов в новый слой

>    createOnLayer(red)

>    changeLayerData(green)

>    moveLayerOperator(blue)


>    # Выбор слоёв 14 - 20

>    scn = bpy.context.scene

>    bpy.ops.object.select_all(action='SELECT')

>    for n in range(13,19):

>        scn.layers[n] = True


>    # Отмена выбора слоёв 1 - 13, но только впоследствии.

>    # Похоже, по крайней мере один слой должен быть выбран всегда.

>    for n in range(0,13):

>        scn.layers[n] = False


>    # Отмена выбора слоя 16

>    scn.layers[15] = False

>    return


>if __name__ == "__main__":

>    run()


Группы

Эта программа показывает, как создавать группы, добавлять объекты в группы, и пустышки, которые дублируют группы. Мы добавляем четыре группы, четыре меш-объекта назначаются каждый в две группы, и четыре текстовых объекта назначаются каждый в единственную группу. Затем мы добавляем четыре пустышки, которые будут дубликатами (dupli-group) четырёх групп. Наконец пустышки перемещаются, так что каждая колонка содержит элементы в этой группе.



>#----------------------------------------------------------


Рекомендуем почитать
Обратные вызовы в C++

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


Теоретический минимум по Computer Science

Хватит тратить время на скучные академические фолианты! Изучение Computer Science может быть веселым и увлекательным занятием. Владстон Феррейра Фило знакомит нас с вычислительным мышлением, позволяющим решать любые сложные задачи. Научиться писать код просто — пара недель на курсах, и вы «программист», но чтобы стать профи, который будет востребован всегда и везде, нужны фундаментальные знания. Здесь вы найдете только самую важную информацию, которая необходима каждому разработчику и программисту каждый день. «Эта книга пригодится и для решения повседневных задач.


Язык PL/SQL

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.


Перевод в электронный формат, кодированные наборы шрифтов и система Оптического Распознавания Символов для многошрифтовых информационных ресурсов на примере “Летописи журнальных статей”

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


Программирование на языке Пролог для искусственного интеллекта

Книга известного специалиста по программированию (Югославия), содержащая основы языка Пролог и его приложения для решения задач искусственного интеллекта. Изложение отличается методическими достоинствами — книга написана в хорошем стиле, живым языком. Книга дополняет имеющуюся на русском языке литературу по языку Пролог.Для программистов разной квалификации, специалистов по искусственному интеллекту, для всех изучающих программирование.


Программирование на Visual C++. Архив рассылки

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.