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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

2. Нажатие ЛКМ для подтверждения и выхода в нормальный режим. Объект оставляется в своей новой позиции.

3. Нажатие ПКМ или клавиши Esc , чтобы отменить и выйти в нормальный режим. Объект возвращается в свою первоначальную позицию.

Важно, чтобы был некоторый способ выходить в нормальный режим. Если функция modal() всегда возвращает 'RUNNING_MODAL', скрипт войдёт в бесконечный цикл, и Вам придётся перезапускать Блендер.

Модальный оператор определяет два специальных метода с именами __init()__и __del()__, которые вызываются, когда модальная операция начинается и прекращается, соответственно.

Запустите скрипт. Активный объект перемещается по плоскости XY при перемещении мыши. Скрипт также создает панель с кнопкой, нажатием на которую Вы также можете выполнить модальный оператор.

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

# File modal.py

# from API documentation

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

import bpy

class MyModalOperator(bpy.types.Operator):

bl_idname = "mine.modal_op"

bl_label = "Move in XY plane"

def __init__(self):

print("Start moving")

def __del__(self):

print("Moved from (%d %d) to (%d %d)" %

(self.init_x, self.init_y, self.x, self.y))

def execute(self, context):

context.object.location.x = self.x / 100.0

context.object.location.y = self.y / 100.0

def modal(self, context, event):

if event.type == 'MOUSEMOVE': # Применение

self.x = event.mouse_x

self.y = event.mouse_y

self.execute(context)

elif event.type == 'LEFTMOUSE': # Подтверждение

return {'FINISHED'}

elif event.type in ('RIGHTMOUSE', 'ESC'): # Отмена

return {'CANCELLED'}

return {'RUNNING_MODAL'}

def invoke(self, context, event):

self.x = event.mouse_x

self.y = event.mouse_y

self.init_x = self.x

self.init_y = self.y

self.execute(context)

print(context.window_manager.modal_handler_add(self))

return {'RUNNING_MODAL'}

#

# Панель в районе tools

#

class MyModalPanel(bpy.types.Panel):

bl_label = "My modal operator"

bl_space_type = "VIEW_3D"

bl_region_type = "TOOLS"

def draw(self, context):

self.layout.operator("mine.modal_op")

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

bpy.utils.register_module(__name__)

# Автоматически перемещает активный объект при запуске

bpy.ops.mine.modal_op('INVOKE_DEFAULT')

Invoke (вызов) против execute (выполнения)

Этот скрипт иллюстрирует разницу между invoke (вызывать) и execute (выполнять). Вызываемое (invoking) событие является аргументом функции Operator.invoke, который устанавливает два свойства целого типа x и y для положения мыши и вызывает функцию Operator.execute. Как альтернатива, мы можем выполнить (execute) оператор и явно установить xи y: bpy.ops.wm.mouse_position(’EXEC_DEFAULT’, x=20, y=66)

Вместо вывода координат мыши в окно терминала, информация отправляется в информационную панель в верхнем правом углу. Это хорошее место для отображения краткого уведомления, так как пользователю не придется искать его в другом окне, тем более, что терминал/DOS-окно отображается не во всех версиях Blender. Однако длинные сообщения трудно вписываются в ограниченное пространство информационной панели.

File invokepy - фото 26

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

# File invoke.py # from API documentation

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

import bpy

class SimpleMouseOperator(bpy.types.Operator):

""" Этот оператор показывает расположение мыши,

эта строка используется для подсказки (tooltip) и документирования API

"""

bl_idname = "wm.mouse_position"

bl_label = "Mouse location"

x = bpy.props.IntProperty()

y = bpy.props.IntProperty()

def execute(self, context):

# Вместо печати в консоли, используется функция report,

# таким образом, появляется сообщение в заголовке

self.report({'INFO'}, "Mouse coords are %d %d" % (self.x, self.y))

return {'FINISHED'}

def invoke(self, context, event):

self.x = event.mouse_x

self.y = event.mouse_y

return self.execute(context)

#

# Панель в районе tools

#

class MousePanel(bpy.types.Panel):

bl_label = "Mouse"

bl_space_type = "VIEW_3D"

bl_region_type = "TOOL_PROPS"

def draw(self, context):

self.layout.operator("wm.mouse_position")

#

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

# Нет действительной необходимости регистрировать класс, потому что

# это происходит автоматически, когда регистрируется модуль.

# С другой стороны, это не повредит.

bpy.utils.register_class(SimpleMouseOperator)

bpy.utils.register_module(__name__)

# Автоматически отображать позицию мыши при запуске

bpy.ops.wm.mouse_position('INVOKE_DEFAULT')

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

Интервал:

Закладка:

Сделать

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

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


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

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

x