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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

setSwatches()

return{'FINISHED'}

# Удаление кнопки

class OBJECT_OT_DeleteButton(bpy.types.Operator):

bl_idname = "swatches.delete"

bl_label = "Delete swatch"

def execute(self, context):

global theSwatches

n = findSwatch(context.object.my_swatch)

theSwatches.pop(n)

setSwatches()

return{'FINISHED'}

# Регистрация

bpy.utils.register_module(__name__)

Объявление оператора и добавление его в меню

Операторы, которые нам до сих пор попадались, были простыми кнопками. В этой программе мы делаем более сложный оператор, который создаёт искривленный цилиндр.

Для вызова оператора нажмите Пробел и наберите "Add twisted cylinder"; Блендер предлагает сопоставляемые имена операторов во время набора. Цилиндр имеет несколько опций, которые появятся в области Tool props (ниже секции Tools), сразу после создания цилиндра. Их можно интерактивно модифицировать, и результат немедленно отобразится в 3D-виде.

Последняя часть скрипта регистрирует его. Вместо нажатия клавиши Пробел , теперь можно вызывать скрипт гораздо более удобным образом из подменю Add » Mesh. Если бы мы использовали append (добавить) вместо prepend(предварять) в функции register(), вызов появился бы внизу вместо верхнего меню.

File twistedpy - фото 25

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

# File twisted.py

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

import bpy, math

def addTwistedCylinder(context, r, nseg, vstep, nplanes, twist):

# Функция создания цилиндра

verts = []

faces = []

w = 2*math.pi/nseg

a = 0

da = twist*math.pi/180

for j in range(nplanes+1):

z = j*vstep

a += da

for i in range(nseg):

verts.append((r*math.cos(w*i+a), r*math.sin(w*i+a), z))

if j > 0:

i0 = (j-1)*nseg

i1 = j*nseg

for i in range(1, nseg):

faces.append((i0+i-1, i0+i, i1+i, i1+i-1))

faces.append((i0+nseg-1, i0, i1, i1+nseg-1))

me = bpy.data.meshes.new("TwistedCylinder")

me.from_pydata(verts, [], faces)

ob = bpy.data.objects.new("TwistedCylinder", me)

context.scene.objects.link(ob)

context.scene.objects.active = ob return ob

#

# Интерфейс пользователя

#

from bpy.props import *

class MESH_OT_primitive_twisted_cylinder_add(bpy.types.Operator):

'''Add a twisted cylinder'''

bl_idname = "mesh.primitive_twisted_cylinder_add"

bl_label = "Add twisted cylinder"

bl_options = {'REGISTER', 'UNDO'}

radius = FloatProperty(name="Radius",

default=1.0, min=0.01, max=100.0)

nseg = IntProperty(name="Major Segments",

description="Number of segments for one layer",

default=12, min=3, max=256)

vstep = FloatProperty(name="Vertical step",

description="Distance between subsequent planes",

default=1.0, min=0.01, max=100.0)

nplanes = IntProperty(name="Planes",

description="Number of vertical planes",

default=4, min=2, max=256)

twist = FloatProperty(name="Twist angle",

description="Angle between subsequent planes (degrees)" ,

default=15, min=0, max=90)

location = FloatVectorProperty(name="Location")

rotation = FloatVectorProperty(name="Rotation")

# Заметьте: вращение (Rotation) в радианах!

def execute(self, context):

ob = addTwistedCylinder(context, self.radius, self.nseg, self.vstep,

self.nplanes, self.twist)

ob.location = self.location

ob.rotation_euler = self.rotation

#context.scene.objects.link(ob)

#context.scene.objects.active = ob

return {'FINISHED'}

#

# Регистрация

# Делает возможным иметь доступ к скрипту из меню Add > Mesh

#

def menu_func(self, context):

self.layout.operator("mesh.primitive_twisted_cylinder_add",

text="Twisted cylinder",

icon='MESH_TORUS')

def register():

bpy.utils.register_module(__name__)

bpy.types.INFO_MT_mesh_add.prepend(menu_func)

def unregister():

bpy.utils.unregister_module(__name__)

bpy.types.INFO_MT_mesh_add.remove(menu_func)

if __name__ == "__main__":

register()

Модальный оператор

Следующий пример взят прямо из документации по API, как и последующие несколько примеров.

Модальный оператор определяет функцию Operator.modalкоторая при запуске обрабатывает события, пока не вернёт 'FINISHED'или 'CANCELLED'. Grab (сдвиг), Rotate (вращение), Scale (масштабирование) и Fly-Mode (режим полёта) - примеры модальных операторов. Они особенно полезны для интерактивных инструментов, ваш оператор может иметь собственное состояние, в котором клавиши переключают опции работы оператора.

Когда вызывается оператор в этом примере, он добавляет модального обработчика к себе с помощью вызова context.window_manager.modal_handler_add(self). После этого активный объект продолжает перемещаться по плоскости XY, повторяя перемещения мыши. Для того, чтобы выйти, нажмите кнопку мыши или клавишу Esc .

Модальный метод обрабатывает три типа событий:

1. Перемещение мыши перемещает активный объект.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x