Чтение онлайн

на главную - закладки

Жанры

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

Larsson Thomas

Шрифт:

bpy.types.Scene.MyInt = IntProperty(

name = "Integer",

description = "Enter an integer")

scn['MyInt'] = 17

bpy.types.Scene.MyFloat = FloatProperty(

name = "Float",

description = "Enter a float",

default = 33.33,

min = -100,

max = 100)

bpy.types.Scene.MyBool = BoolProperty(

name = "Boolean",

description = "True or False?")

scn['MyBool'] = True

bpy.types.Scene.MyEnum = EnumProperty(

items = [('Eine', 'Un', 'One'),

('Zwei', 'Deux', 'Two'),

('Drei', 'Trois', 'Three')],

name = "Ziffer")

scn['MyEnum'] = 2

bpy.types.Scene.MyString = StringProperty(

name = "String")

scn['MyString'] = "Lorem ipsum dolor sit amet"

return

initSceneProperties(bpy.context.scene)

#

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

#

class UIPanel(bpy.types.Panel):

bl_label = "Property panel"

bl_space_type = "VIEW_3D"

bl_region_type = "UI"

def draw(self, context):

layout = self.layout

scn = context.scene

layout.prop(scn, 'MyInt', icon='BLENDER', toggle=True)

layout.prop(scn, 'MyFloat')

layout.prop(scn, 'MyBool')

layout.prop(scn, 'MyEnum')

layout.prop(scn, 'MyString')

layout.operator("idname_must.be_all_lowercase_and_contain_one_dot")

#

# Кнопка выводит значения свойств в окне консоли.

#

class OBJECT_OT_PrintPropsButton(bpy.types.Operator):

bl_idname = "idname_must.be_all_lowercase_and_contain_one_dot"

bl_label = "Print props"

def execute(self, context):

scn = context.scene printProp("Int: ", 'MyInt', scn)

printProp("Float: ", 'MyFloat', scn)

printProp("Bool: ", 'MyBool', scn)

printProp("Enum: ", 'MyEnum', scn)

printProp("String: ", 'MyString', scn)

return{'FINISHED'}

def printProp(label, key, scn):

try:

val = scn[key]

except:

val = 'Undefined'

print("%s %s" % (key, val))

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

bpy.utils.register_module(__name__)

Опрос (Polling)

Скрипт часто работает только в некоторых конкретных условиях, например, когда активен объект правильного типа. Например, скрипт, который манипулирует вершинами меша, не может делать что-либо значимое, если активный объект — арматура.

Эта программа добавляет панель, которая модифицирует материал активного объекта. Панель находится в секции интерфейса пользователя (открывается с помощью N), но она видима, только если активным объектом является меш по крайней мере с одним материалом. Проверка, сколько материалов имеет активный объект, делается через

poll
. Это не функция, а скорее метод класса, указанный с помощью команды
@classmethod
выше определения. Так в чем же разница между функцией и методом класса? Не спрашивайте меня! Все, что я знаю, что со строкой
@classmethod
код работает, а без неё нет.

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

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

# 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':

Поделиться:
Популярные книги

Долгий путь домой

Русич Антон
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
6.20
рейтинг книги
Долгий путь домой

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Боярышня Евдокия

Меллер Юлия Викторовна
3. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Евдокия

Отдельный танковый

Берг Александр Анатольевич
1. Антиблицкриг
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Отдельный танковый

Русь. Строительство империи

Гросов Виктор
1. Вежа. Русь
Фантастика:
альтернативная история
рпг
5.00
рейтинг книги
Русь. Строительство империи

Легионер (пять книг цикла "Рысь" в одном томе)

Посняков Андрей
Рысь
Фантастика:
фэнтези
7.38
рейтинг книги
Легионер (пять книг цикла Рысь в одном томе)

Попаданка в деле, или Ваш любимый доктор

Марей Соня
1. Попаданка в деле, или Ваш любимый доктор
Фантастика:
фэнтези
5.50
рейтинг книги
Попаданка в деле, или Ваш любимый доктор

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

На распутье

Кронос Александр
2. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На распутье

Мымра!

Фад Диана
1. Мымрики
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Мымра!

Иной мир. Компиляция

Шарипов Никита
Иной мир
Фантастика:
боевая фантастика
фэнтези
5.00
рейтинг книги
Иной мир. Компиляция

Рота Его Величества

Дроздов Анатолий Федорович
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Рота Его Величества

Восемь бусин на тонкой ниточке

Михалкова Елена Ивановна
Настоящий детектив
Детективы:
прочие детективы
9.30
рейтинг книги
Восемь бусин на тонкой ниточке

Имперский Курьер

Бо Вова
1. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Имперский Курьер