» » » Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода


Авторские права

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

Здесь можно скачать бесплатно "Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Рейтинг:
Название:
Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Автор:
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода"

Описание и краткое содержание "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" читать бесплатно онлайн.



Третье издание, расширенное и обновлённое для Blender 2.57






    ob = bpy.data.objects.new(name, me)

    ob.location = origin

    ob.show_name = True

    # Привязка объекта к сцене

    bpy.context.scene.objects.link(ob)


    # Создание меша из передаваемых списков вершин, рёбер, граней.

# Или рёбра или грани должны быть [], иначе Вам нужны проблемы

    me.from_pydata(verts, edges, faces)


    # Обновляет меш с новыми данными

    me.update(calc_edges=True)

    return ob


def run(origin):

    (x,y,z) = (0.707107, 0.258819, 0.965926)

    verts1 = ((x,x,-1), (x,-x,-1), (-x,-x,-1), (-x,x,-1), (0,0,1))

    faces1 = ((1,0,4), (4,2,1), (4,3,2), (4,0,3), (0,1,2,3))

    ob1 = createMesh('Solid', origin, verts1, [], faces1)

    verts2 = ((x,x,0), (y,-z,0), (-z,y,0))

    edges2 = ((1,0), (1,2), (2,0))

    ob2 = createMesh('Edgy', origin, verts2, edges2, [])


    # Сдвигает второй объект с дороги

    ob1.select = False

    ob2.select = True

    bpy.ops.transform.translate(value=(0,2,0))


return if __name__ == "__main__":

    run((0,0,0))


Группы вершин и ключи формы

Эта программа добавляет UV-сферу с двумя группами вершин (Left И Right) и четырьмя ключами формы.



#----------------------------------------------------------

# File shapekey.py

#----------------------------------------------------------

import bpy, random


def run(origin):

    # Добавление UV-сферы

    bpy.ops.mesh.primitive_uv_sphere_add(

        segments=6, ring_count=5, size=1, location=origin)

    ob = bpy.context.object

    ob.name = 'ShapeKeyObject'

    ob.show_name = True


    # Создаёт левую (Left) и правую (Right) группы вершин

    left = ob.vertex_groups.new('Left')

    right = ob.vertex_groups.new('Right')

    for v in ob.data.vertices:

        if v.co[0] > 0.001:

            left.add([v.index], 1.0, 'REPLACE')

        elif v.co[0] < -0.001:

            right.add([v.index], 1.0, 'REPLACE')

        else:

            left.add([v.index], 0.5, 'REPLACE')

            right.add([v.index], 0.5, 'REPLACE')


    # Добавление ключа Basis (базовый)

    bpy.ops.object.shape_key_add(None)

    basis = ob.active_shape_key


    # Добавление ключа FrontForward:

    # передние вершины сдвигаются на единицу вперёд

    # Пределы изменения (Slider) от -1.0 до +2.0

    bpy.ops.object.shape_key_add(None)

    frontFwd = ob.active_shape_key

    frontFwd.name = 'FrontForward'

    frontFwd.slider_min = -1.0 frontFwd.slider_max = 2.0

    for v in [19, 20, 23, 24]:

        pt = frontFwd.data[v].co

        pt[1] = pt[1] - 1


    # Добавление ключей TopUp: верхние вершины перемещаются на единицу вверх.

    # TopUp_L и TopUp_R влияют только на левые и правые половины, соответственно

    keylist = [(None, ''), ('Left', '_L'), ('Right', '_R')]

    for (vgrp, suffix) in keylist:

        bpy.ops.object.shape_key_add(None)

        topUp = ob.active_shape_key

        topUp.name = 'TopUp' + suffix

        if vgrp:

            topUp.vertex_group = vgrp

        for v in [0, 1, 9, 10, 17, 18, 25]:

            pt = topUp.data[v].co

            pt[2] = pt[2] + 1


    # Установка позы ключам формы

    for shape in ob.data.shape_keys.key_blocks:

        shape.value = random.random()

    return


if __name__ == "__main__":

    # Создание пяти объектов с произвольными ключами формы

    for j in range(5):

        run((3*j,0,0))


Применение модификатора массива (array)

Эта программа создает цепь из десяти звеньев. Звено является простым тором, масштабированным вдоль оси x. Мы добавляем звену модификатор массива, где смещение управляется пустышкой (empty). Наконец, модификатор массива применяется (apply), создавая из цепи единственный меш.



#----------------------------------------------------------

# File chain.py

# Creates an array modifier and applies it# Update to API rev. 36523

#----------------------------------------------------------

import bpy

import math

from math import pi


def run(origin):

# Добавление единственного звена цепи к сцене

    bpy.ops.mesh.primitive_torus_add(

        #major_radius=1,

        #minor_radius=0.25,

        major_segments=12,

        minor_segments=8,

        use_abso=True,

        abso_major_rad=1,

        abso_minor_rad=0.6,

        location=(0,0,0),

        rotation=(0,0,0))


    # Масштабирование тора вдоль оси x

    ob = bpy.context.object

    ob.scale = (0.7, 1, 1)

    bpy.ops.object.transform_apply(scale=True)


    # Создание пустышки

    bpy.ops.object.add(

        type='EMPTY',

        location=(0,1.2,0.2),

        rotation=(pi/2, pi/4, pi/2))

    empty = bpy.context.object


    # Звено цепи снова делается активным

    scn = bpy.context.scene

    scn.objects.active = ob


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

    mod = ob.modifiers.new('Chain', 'ARRAY')

    mod.fit_type = 'FIXED_COUNT'

    mod.count = 10

    mod.use_relative_offset = 0

    mod.use_object_offset = True

    mod.offset_object = empty


    # Применение модификатора

    bpy.ops.object.visual_transform_apply()

    bpy.ops.object.modifier_apply(apply_as='DATA', modifier='Chain')


    # Перемещение цепи на место

    bpy.ops.transform.translate(value=origin)


    # Пустышка больше не нужна

    scn.objects.unlink(empty)

    del(empty)


    return


if __name__ == "__main__":

    run((0,3,0))


Арматуры

Арматура

Эта программа создаёт арматуру.



#---------------------------------------------------

# File armature.py

#---------------------------------------------------

import bpy, math

from mathutils import Vector, Matrix


def createRig(name, origin, boneTable):

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

    bpy.ops.object.add(

        type='ARMATURE',

        enter_editmode=True,

        location=origin)

    ob = bpy.context.object

    ob.show_x_ray = True

    ob.name = name

    amt = ob.data

    amt.name = name+'Amt'

    amt.show_axes = True


    # Создание костей

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

    for (bname, pname, vector) in boneTable:

        bone = amt.edit_bones.new(bname)

        if pname:

            parent = amt.edit_bones[pname]

            bone.parent = parent

            bone.head = parent.tail

            bone.use_connect = False

            (trans, rot, scale) = parent.matrix.decompose()

        else:

            bone.head = (0,0,0)

            rot = Matrix.Translation((0,0,0)) # Матрица идентичности

        bone.tail = Vector(vector) * rot + bone.head

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

    return ob


def poseRig(ob, poseTable):

    bpy.context.scene.objects.active = ob

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

    deg2rad = 2*math.pi/360


    for (bname, axis, angle) in poseTable:

        pbone = ob.pose.bones[bname]

        # Установка режима вращения в Euler XYZ (Эйлерово),

        # легче для понимания, чем кватернионы по-умолчанию

        pbone.rotation_mode = 'XYZ'

        # Косяк в документации: Euler.rotate(angle,axis):

        # оси в ['x','y','z'] а не ['X','Y','Z']

        pbone.rotation_euler.rotate_axis(axis, angle*deg2rad)

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

    return


def run(origo):

    origin = Vector(origo)

    # Таблица костей в форме (кость, родитель, вектор)

    # Вектор дан в локальных координатах

    boneTable1 = [

        ('Base', None, (1,0,0)),

        ('Mid', 'Base', (1,0,0)),

        ('Tip', 'Mid', (0,0,1))

    ]

    bent = createRig('Bent', origin, boneTable1)


    # Вторая оснастка является прямой линией, то есть кости проходят вдоль локальной оси Y

    boneTable2 = [

        ('Base', None, (1,0,0)),

        ('Mid', 'Base', (0,0.5,0)),

        ('Mid2', 'Mid', (0,0.5,0)),

        ('Tip', 'Mid2', (0,1,0))

    ]

    straight = createRig('Straight', origin+Vector((0,2,0)), boneTable2)


    # Поза второй остнастки

    poseTable2 = [

        ('Base', 'X', 90),

        ('Mid2', 'Z', 45),

        ('Tip', 'Y', -45)

    ]

    poseRig(straight, poseTable2)


    # Поза первой остнастки

    poseTable1 = [

        ('Tip', 'Y', 45),

        ('Mid', 'Y', 45),

        ('Base', 'Y', 45)

    ]


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода"

Книги похожие на "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Thomas Larsson

Thomas Larsson - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода"

Отзывы читателей о книге "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.