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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать
File - фото 22

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

# File panel_props.py

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

import bpy

from bpy.props import *

# Очистка сцены и создание нескольких объектов

bpy.ops.object.select_by_type(type='MESH')

bpy.ops.object.delete()

bpy.ops.mesh.primitive_cube_add(location=(-3,0,0))

cube = bpy.context.object

bpy.ops.mesh.primitive_cylinder_add(location=(0,0,0))

cyl = bpy.context.object

bpy.ops.mesh.primitive_uv_sphere_add(location=(3,0,0))

sphere = bpy.context.object

# Определение RNA- свойств для каждого объекта

bpy.types.Object.myRnaInt = IntProperty(

name="RNA int",

min = -100, max = 100,

default = 33)

# Определение RNA-свойств для каждого меша

bpy.types.Mesh.myRnaFloat = FloatProperty(

name="RNA float",

default = 12.345)

# Присвоение RNA-свойств кубу

cube.myRnaInt = -99

cube.data.myRnaFloat = -1

# Создание ID-свойств посредством присвоения

cube["MyIdString"] = "I am an ID prop"

cube.data["MyIdBool"] = True

# Панель свойств

class MyPropPanel(bpy.types.Panel):

bl_label = "My properties"

bl_space_type = "VIEW_3D"

bl_region_type = "UI"

def draw(self, context):

ob = context.object

if not ob:

return

layout = self.layout

layout.prop(ob, 'myRnaInt')

try:

ob["MyIdString"]

layout.prop(ob, '["MyIdString"]')

except:

pass

if ob.type == 'MESH':

me = ob.data

layout.prop(me, 'myRnaFloat')

try:

me["MyIdBool"]

layout.prop(me, '["MyIdBool"]')

except:

pass

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

bpy.utils.register_class(MyPropPanel)

Использование свойств сцены для сохранения информации

Эта программа позволяет пользователю ввести информацию различного типа, которая затем посылается на панель кнопкам. Механизм заключается в использовании RNA-свойств, которые можно настроить с помощью панели и читать с помощью кнопки. Все типы данных Блендера могут иметь свойства. Глобальные свойства, которые непосредственно не связаны каким-либо специфическим объектом, может оказаться удобно хранить в текущей сцене. Заметим, однако, что они будут потеряны, если Вы переключитесь на новую сцену.

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

# File scene_props.py

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

import bpy

from bpy.props import *

#

# Сохранение свойств в активной сцене

#

def initSceneProperties(scn):

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код работает, а без неё нет.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x