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


Авторские права

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

Здесь можно скачать бесплатно "Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Рейтинг:
Название:
Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Автор:
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

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

Описание и краткое содержание "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" читать бесплатно онлайн.



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






    bl_region_type = "WINDOW" bl_context = "object" 


    def draw(self, context):

self.layout.operator("hello.hello", text='Bonjour').country = "France"  


#

# Меню в районе окна Properties, контекст материалов

#

class MaterialPanel(bpy.types.Panel):

    bl_label = "Hello from Material context"

    bl_space_type = "PROPERTIES"

    bl_region_type = "WINDOW" bl_context = "material" 


    def draw(self, context):

    self.layout.operator("hello.hello", text='Ciao').country = "Italy"  


#

# Кнопка Hello выводит сообщение в консоли

#

class OBJECT_OT_HelloButton(bpy.types.Operator):

    bl_idname = "hello.hello"

    bl_label = "Say Hello"

    country = bpy.props.StringProperty()  


    def execute(self, context):

        if self.country == '':

            print("Hello world!")

        else:

            print("Hello world from %s!" % self.country)

        return{'FINISHED'}  


#

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

# Все панели и операторы должны быть зарегистрированы в Блендере; в противном

# случае они не появятся. Самый простой путь зарегистрировать всё в файле -

# с помощью вызова bpy.utils.register_module(__name__).


bpy.utils.register_module(__name__)


Планировка панели и несколько аргументов

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



Сценарий также показывает один метод отсылания нескольких аргументов оператору. Класс OBJECT_OT_Button имеет два свойства, number (номер) и row (строка) и печатает величины этих свойств в окне терминала. Будучи целочисленными свойствами, они оба возвращают 0 по-умолчанию, если не заданы. Таким образом, если мы нажимаем кнопки 7, 8 и 23, скрипт выведет

Row 0 button 7

Row 3 button 0

Row 0 button 0

Но что, если мы хотим задать свойства как number, так и row, то есть вызвать оператор с двумя аргументами? Это нельзя сделать непосредственно, но мы можем создать третье свойство loc, которое является строкой, и которое анализируется оператором, если не нуль. Если мы нажимаем кнопку 13, скрипт выведет

Row 4 button 13

Этот метод можно также использовать, чтобы посылать более сложные структуры данных оператору. Кроме того, мы можем использовать глобальные переменные с этой целью, смотрите подраздел A popup dialog


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

# File layout.py

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

import bpy 


# Планировка панели

class LayoutPanel(bpy.types.Panel):

    bl_label = "Panel with funny layout"

    bl_space_type = "VIEW_3D"

    bl_region_type = "TOOL_PROPS" 


    def draw(self, context):

    layout = self.layout


    layout.label("First row")

    row = layout.row(align=True)

    row.alignment = 'EXPAND'

    row.operator("my.button", text="1").number=1

    row.operator("my.button", text="2", icon='MESH_DATA').number=2

    row.operator("my.button", icon='LAMP_DATA').number=3


    row = layout.row(align=False)

    row.alignment = 'LEFT'

    row.operator("my.button", text="4").number=4

    row.operator("my.button", text="", icon='MATERIAL').number=5

    row.operator("my.button", text="6", icon='BLENDER').number=6

    row.operator("my.button", text="7", icon='WORLD').number=7


    layout.label("Third row", icon='TEXT')

    row = layout.row()

    row.alignment = 'RIGHT'

    row.operator("my.button", text="8").row=3

    row.operator("my.button", text="9", icon='SCENE').row=3

    row.operator("my.button", text="10", icon='BRUSH_INFLATE').row=3


    layout.label("Fourth row", icon='ACTION')

    row = layout.row() box = row.box()

    box.operator("my.button", text="11", emboss=False).loc="4 11"

    box.operator("my.button", text="12", emboss=False).loc="4 12"

    col = row.column() subrow = col.row()

    subrow.operator("my.button", text="13").loc="4 13"

    subrow.operator("my.button", text="14").loc="4 14"

    subrow = col.row(align=True)

    subrow.operator("my.button", text="15").loc="4 15"

    subrow.operator("my.button", text="16").loc="4 16"

    box = row.box() box.operator("my.button", text="17").number=17

    box.separator()

    box.operator("my.button", text="18")

    box.operator("my.button", text="19")


    layout.label("Fifth row")

    row = layout.row() split = row.split(percentage=0.25)

    col = split.column()

    col.operator("my.button", text="21").loc="5 21"

    col.operator("my.button", text="22")

    split = split.split(percentage=0.3)

    col = split.column()

    col.operator("my.button", text="23")

    split = split.split(percentage=0.5)

    col = split.column()

    col.operator("my.button", text="24")

    col.operator("my.button", text="25")


# Кнопка

class OBJECT_OT_Button(bpy.types.Operator):

    bl_idname = "my.button"

    bl_label = "Button" number = bpy.props.IntProperty()

    row = bpy.props.IntProperty()

    loc = bpy.props.StringProperty()  


    def execute(self, context):

        if self.loc:

            words = self.loc.split()

            self.row = int(words[0])

            self.number = int(words[1])

        print("Row %d button %d" % (self.row, self.number))

        return{'FINISHED'}


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

bpy.utils.register_module(__name__)


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

Свойства обсуждались в разделе Свойства, но мы не объяснили, как отображать заказные свойства на панели. Этот скрипт как раз делает это. RNA-свойство отображается синтаксисом

layout.prop(ob, 'myRnaInt')

ID-свойства отображаются с помощью

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

Заметьте, что панель регистрируется явно с помощью bpy.utils.register_class(MyPropPanel) вместо использования register_module, который регистрирует всё. Какой метод использовать, не имеет значения в этом примере, поскольку MyPropPanel - единственное, что нужно зарегистрировать.



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

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


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

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

Книги похожие на "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Thomas Larsson

Thomas Larsson - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

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

Отзывы читателей о книге "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.