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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Ну, с точки зрения программирования на Питоне действие этого декоратора хорошо объяснили здесь python.su/forum, а вот почему объявленный метод класса с именем poll влияет на поведение элементов интерфейса в Блендере, я так и не понял — прим. пер.

File pollpy - фото 23

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

# File poll.py

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

import bpy, random

#

# Меню в районе UI

#

class ColorPanel(bpy.types.Panel):

bl_label = "Modify colors"

bl_space_type = "VIEW_3D"

bl_region_type = "UI"

@classmethod

def poll(self, context):

if context.object and context.object.type == 'MESH':

return len(context.object.data.materials)

def draw(self, context):

layout = self.layout

scn = context.scene

layout.operator("random.button")

layout.operator("darken_random.button")

layout.operator("invert.button")

#

# Три кнопки

#

class RandomButton(bpy.types.Operator):

bl_idname = "random.button"

bl_label = "Randomize"

def execute(self, context):

mat = context.object.data.materials[0]

for i in range(3):

mat.diffuse_color[i] = random.random()

return{'FINISHED'}

class DarkenRandomButton(bpy.types.Operator):

bl_idname = "darken_random.button"

bl_label = "Darken Randomly"

def execute(self, context):

mat = context.object.data.materials[0]

for i in range(3):

mat.diffuse_color[i] *= random.random()

return{'FINISHED'}

class InvertButton(bpy.types.Operator):

bl_idname = "invert.button"

bl_label = "Invert"

def execute(self, context):

mat = context.object.data.materials[0]

for i in range(3):

mat.diffuse_color[i] = 1 - mat.diffuse_color[i]

return{'FINISHED'}

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

bpy.utils.register_module(__name__)

Динамическое выпадающее меню

Эта программа добавляет панель с выпадающим меню на панели интерфейса пользователя. В начале меню содержит три пункта: красный, зеленый и синий. Есть две кнопки, помеченные Set color (Задать цвет). Верхняя изменяет цвет активного объекта на цвет, выбранный в выпадающем меню, а нижняя устанавливает цвет, определенный тремя движками. Цвета можно добавлять в выпадающее меню и удалять их из него.

Также заметьте, что с тем же успехом работает опрос для кнопок; кнопка Set colorстановится серой, если активный объект не является мешем с по крайней мере одним материалом.

File - фото 24

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

# File swatches.py

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

import bpy

from bpy.props import *

theSwatches = [

("1 0 0" , "Red" , "1 0 0"),

("0 1 0" , "Green" , "0 1 0"),

("0 0 1" , "Blue" , "0 0 1")]

def setSwatches():

global theSwatches

bpy.types.Object.my_swatch = EnumProperty(

items = theSwatches,

name = "Swatch")

setSwatches()

bpy.types.Object.my_red = FloatProperty(

name = "Red", default = 0.5,

min = 0, max = 1)

bpy.types.Object.my_green = FloatProperty(

name = "Green", default = 0.5,

min = 0, max = 1)

bpy.types.Object.my_blue = FloatProperty(

name = "Blue", default = 0.5,

min = 0, max = 1)

def findSwatch(key):

for n,swatch in enumerate(theSwatches):

(key1, name, colors) = swatch

if key == key1:

return n

raise NameError("Unrecognized key %s" % key)

# Панель образцов

class SwatchPanel(bpy.types.Panel):

bl_label = "Swatches"

#bl_idname = "myPanelID"

bl_space_type = "PROPERTIES"

bl_region_type = "WINDOW"

bl_context = "material"

def draw(self , context):

layout = self.layout

ob = context.active_object

layout.prop_menu_enum(ob, "my_swatch")

layout.operator("swatches.set").swatch=True

layout.separator()

layout.prop(ob, "my_red")

layout.prop(ob, "my_green")

layout.prop(ob, "my_blue")

layout.operator("swatches.set").swatch=False

layout.operator("swatches.add")

layout.operator("swatches.delete")

# Установка кнопки

class OBJECT_OT_SetButton(bpy.types.Operator):

bl_idname = "swatches.set"

bl_label = "Set color"

swatch = bpy.props.BoolProperty()

@classmethod

def poll(self, context):

if context.object and context.object.type == 'MESH':

return len(context.object.data.materials)

def execute(self, context):

global theSwatches

ob = context.object

if self.swatch:

n = findSwatch(ob.my_swatch)

(key, name, colors) = theSwatches[n]

words = colors.split()

color = (float(words[0]), float(words[1]), float(words[2]))

else:

color = (ob.my_red, ob.my_green, ob.my_blue)

ob.data.materials[0].diffuse_color = color

return{'FINISHED'}

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

class OBJECT_OT_AddButton(bpy.types.Operator):

bl_idname = "swatches.add"

bl_label = "Add swatch"

def execute(self, context):

global theSwatches

ob = context.object

colors = "%.2f %.2f %.2f" % (ob.my_red, ob.my_green, ob.my_blue)

theSwatches.append((colors, colors, colors))

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

Интервал:

Закладка:

Сделать

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

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


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

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

x