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

Здесь есть возможность читать онлайн «Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода — читать онлайн бесплатно полную книгу (весь текст) целиком

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

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

# Создание незатеняемого материала и MTex

mat = bpy.data.materials.new('TexMat')

mat.use_shadeless = True

mtex = mat.texture_slots.add()

mtex.texture = tex

mtex.texture_coords = 'UV'

mtex.use_map_color_diffuse = True

return mat

def run(origin):

ob = createMesh(origin)

mat = createMaterial()

ob.data.materials.append(mat)

return

if __name__ == "__main__":

run((0,0,0))

Действия (Actions) и управляющие элементы (drivers)

Действие объекта

Прыгающий мяч.

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

# File ob_action.py

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

import bpy import math

def run(origin):

# Установка начала и конца анимации

scn = bpy.context.scene

scn.frame_start = 11

scn.frame_end = 200

# Создание ico-сферы

bpy.ops.mesh.primitive_ico_sphere_add(location=origin)

ob = bpy.context.object

# Вставка ключевых кадров с operator code (кодом оператора ???)

# Объект должен быть выбранным автоматически

z = 10

t = 1

for n in range(5):

t += 10

bpy.ops.anim.change_frame(frame = t)

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

bpy.ops.anim.keyframe_insert_menu(type='Location')

t += 10

bpy.ops.anim.change_frame(frame = t)

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

bpy.ops.anim.keyframe_insert_menu(type='Location')

z *= 0.67

action = ob.animation_data.action

# Создание словаря с графиком FCurves типа location (позиция)

fcus = {}

for fcu in action.fcurves:

if fcu.data_path == 'location':

fcus[fcu.array_index] = fcu

print(fcus.items())

# Добавление новых ключевых точек к x и z

kpts_x = fcus[0].keyframe_points

kpts_z = fcus[2].keyframe_points

(x0,y0,z0) = origin

omega = 2*math.pi/20

z *= 0.67

for t in range(101, 201):

xt = 20 + 0.2*(t-101)

zt = z*(1-math.cos(omega*(t - 101)))

z *= 0.98

kpts_z.insert(t, zt+z0, options={'FAST'})

kpts_x.insert(t, xt+x0)

# Изменение типа экстраполяции и интерполяции

# для кривой X на линейный

fcus[0].extrapolation = 'LINEAR'

for kp in kpts_x:

kp.interpolation = 'LINEAR'

# Позиция Y - константа и может быть удалена

action.fcurves.remove(fcus[1])

bpy.ops.object.paths_calculate()

return

if __name__ == "__main__":

run((0,0,10))

bpy.ops.screen.animation_play(reverse=False, sync=False)

Действие позирования костей

Эта программа создает арматуру с двумя костями, которые вращаются по некоторым сложным кривым.

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

# File pose_action.py

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

import bpy

import math

def run(origin):

# Установка начала и конца анимации

scn = bpy.context.scene

scn.frame_start = 1

scn.frame_end = 250

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

bpy.ops.object.armature_add()

ob = bpy.context.object

amt = ob.data

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

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

base = amt.edit_bones['Bone']

base.name = 'Base'

tip = amt.edit_bones.new('Tip')

tip.head = (0,0,1)

tip.tail = (0,0,2)

tip.parent = base

tip.use_connect = True

# Установка позиции объекта в режиме объектов

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

ob.location=origin

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

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

pbase = ob.pose.bones['Base']

pbase.rotation_mode = 'ZYX'

ptip = ob.pose.bones['Tip']

ptip.rotation_mode = 'ZYX'

# Вставка 26 ключевых кадров для двух вращений FCurves

# Последний ключевой кадр будет вовне дипазона анимации

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)

Присвоение отношений родитель-потомок

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x