Введение в написание скриптов на Питоне для Блендера 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++ обратные вызовы реализуются различными способами, и далеко не всегда очевидно, какой из них лучший для конкретной ситуации. В книге рассмотрены теоретические и практические аспекты организации обратных вызовов, проанализированы достоинства и недостатки различных реализаций, выработаны рекомендации по выбору в зависимости от требований к проектируемому ПО.
Хватит тратить время на скучные академические фолианты! Изучение Computer Science может быть веселым и увлекательным занятием. Владстон Феррейра Фило знакомит нас с вычислительным мышлением, позволяющим решать любые сложные задачи. Научиться писать код просто — пара недель на курсах, и вы «программист», но чтобы стать профи, который будет востребован всегда и везде, нужны фундаментальные знания. Здесь вы найдете только самую важную информацию, которая необходима каждому разработчику и программисту каждый день. «Эта книга пригодится и для решения повседневных задач.
В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Книга известного специалиста по программированию (Югославия), содержащая основы языка Пролог и его приложения для решения задач искусственного интеллекта. Изложение отличается методическими достоинствами — книга написана в хорошем стиле, живым языком. Книга дополняет имеющуюся на русском языке литературу по языку Пролог.Для программистов разной квалификации, специалистов по искусственному интеллекту, для всех изучающих программирование.
РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.