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

import bpy

import mathutils

from mathutils import Vector 

def run(origin):

    # Добавление материала

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

    red.diffuse_color = (1,0,0)

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

    blue.diffuse_color = (0,0,1)  

    # Добавление конуса

    bpy.ops.mesh.primitive_cone_add(

        vertices=4,

        radius=1.5,

        cap_end=True)

    ob1 = bpy.context.object

    me1 = ob1.data

    bpy.ops.object.mode_set(mode='EDIT')

    bpy.ops.mesh.subdivide(number_cuts=5, smoothness=1, fractal=1)

    bpy.ops.object.mode_set(mode='OBJECT')  

    # Странно, нужен новый меш, который является копией

    verts = []

    faces = []

    for v in me1.vertices:

        verts.append(v.co)

    for f in me1.faces:

        faces.append(f.vertices)

    me2 = bpy.data.meshes.new('Drop')

    me2.from_pydata(verts, [], faces)

    me2.update(calc_edges=True)  

    # Установка гладкости граням (smooth)

    for f in me2.faces: f.use_smooth = True 

    # Добавление нового объекта и его активация

    ob2 = bpy.data.objects.new('Drop', me2)

    scn = bpy.context.scene

    scn.objects.link(ob2)

    scn.objects.unlink(ob1)

    scn.objects.active = ob2 

    # Добавление групп вершин

    top = ob2.vertex_groups.new('Top')

    bottom = ob2.vertex_groups.new('Bottom')

    for v in me2.vertices:

        w = v.co[2] - 0.2

        if w < 0:

            if w < -1:

               w = -1

            bottom.add([v.index], -w, 'REPLACE')

        elif w > 0:

            if w > 1:

                w = 1

            top.add([v.index], w, 'REPLACE')

    bpy.ops.object.mode_set(mode='OBJECT')

    ob2.location = origin

    me2.materials.append(blue)  

    # Добавление модификатора softbody

    mod = ob2.modifiers.new(name='SoftBody', type='SOFT_BODY')

    sbset = mod.settings 

    # Мягкое тело

    sbset.friction = 0.6

    sbset.speed = 0.4

    sbset.mass = 8.1 

    # Цель

    sbset.goal_default = 0.7

    sbset.goal_spring = 0.3

    sbset.goal_friction = 0.0

    sbset.vertex_group_goal = 'Top'  

    # Края мягкого тела

    sbset.pull = 0.6

    sbset.push = 0.1

    sbset.bend = 0.1

    sbset.aerodynamics_type = 'LIFT_FORCE'

    sbset.aero = 0.5 

    # Добавление вихря

    bpy.ops.object.effector_add(

        type='VORTEX',

        location=origin+Vector((0,0,-4)))

    vortex = bpy.context.object

    fset = vortex.field

    fset.strength = 4.5

    fset.shape = 'PLANE'

    fset.apply_to_location = False

    fset.apply_to_rotation = True

    fset.falloff_type = 'TUBE'  

    # Добавление плоскости столкновения

    # Предупреждение. Столкновение объектов делает симуляцию очень медленной!

    bpy.ops.mesh.primitive_plane_add(

        location=origin-Vector((0,0,1.7)))

    bpy.ops.transform.resize(value=(4, 4, 4))

    plane = bpy.context.object

    plane.data.materials.append(red)

     mod = plane.modifiers.new(name='Collision', type='COLLISION')

   return 

if __name__ == "__main__":

    bpy.context.scene.frame_end = 600

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

    bpy.ops.object.delete()

    run(Vector((0,0,6)))

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

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

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

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

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

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

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

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

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