Скрипты в Blender. А давайте отвлечемся?

За корпением над изучением всей структуры объектов, сцен и т.д. можно провести не один день и ночь. Давайте на время отвлечемся от "бытовухи" и узнаем об элементах интерфейса и их создании в Blender. Ведь скрипты штука полезная, а визуальные формы с элементами управления их неотъемлемая часть.
Для первого знакомства нам понадобится:
1. Запустить Блендер
2. Выбрать для одного из окон (можно главное) тип - Text Editor
3. Создайте новый файл через меню Text.

Начнем?
В первых строках напишем
import Blender
from Blender import Draw, BGL,Window
то есть мы импортировали модуль Blender и его подмодули Draw, BGL и Window
Теперь нам понадобятся две функции - одна будет просто пустышка, а вторая поможет нам завершать работу скрипта по кнопке ESC. Вот они (пишите без комментариев):

def event(evt, val): # функция обработки сообщений событий
if evt == Draw.ESCKEY:
Draw.Exit() # выйти при нажатии ESC
return

def gui():
pass

Теперь в скрипте после этих функций напишите строчку
Draw.Register(gui,event)
Это главная функция, запускающая весь процесс.
А теперь нажмите Alt+P или выбирете в меню пункт Run Python Script.
Перед нами возникло пустое серое (в общем случае) окно. Это результат работы скрипта, так как мы пока ничего и не выводили на наш экран.
Чтобы закончить работу скрипта нажмите ESC и вы попадете обратно в текстовый редактор.
Давайте изменим цвет фона?
Для этого нам надо будет задать изначальный, то есть "нулевой" или цвет по-умолчанию.
Это делается с помощью функции glClearColor(). Параметры ее - составляющие цвета, красный, зеленый, синий, а также прозрачность (alfa). После того как мы зададим эти цвета, нам надо "сбросить" или как бы отчистить наш экран
Изменим нашу функцию-пустышку на следующую.

def gui():
BGL.glClearColor(0.4,0.4,1,1)
BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)

и запустим наш скрипт (Alt+P). Теперь мы видим, что наш фон стал светло-голубым.
Нажмите ESC, чтобы выйти из скрипта.

Попробуем что-либо написать в центре экрана. Для того чтобы узнать центр нам надо знать текущие ширину и высоту экрана.
Получить их можно с помощью функции GetAreaSize() модуля Window.
Когда мы узнаем ширину и высоту, центр будет ровно их половина. А для вывода текста в нужном месте сначала нам надо определить цвет выводимого текста.
Мы можем сделать это с помощью функции glColor3f(1,0,0) модуля BGL. Параметры функции - также составляющие компоненты красный, зеленый и синий (значения от 0 до 1). Например BGL.glColor3f(1,0,0) установит красный цвет для будущих "рисований"
Когда нам известны координаты, мы установили нужный цвет нам осталось только вывести текст в нужную нам позицию. Текущую позицию для вывода можно установить функцией glRasterPos2i() модуля BGL. А вывести текст с помощью функции Text() модуля Draw.
Что у нас получается:

def gui():
BGL.glClearColor(0.4,0.4,1,1)
BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
awidth,aheight = Window.GetAreaSize()
BGL.glColor3f(1,0,0)
BGL.glRasterPos2i(awidth/2, aheight/2)
Draw.Text("Hello World!!!")

замените вашу функцию gui() на эту и нажмите запуск скрипта (Alt+P)
Что мы видим? Правильно - в центре голубого экрана красными буквами написано Hello World!!!

Ну вот и развлеклись немного. Позже научимся добавлять элементы управления и взаимодействовать с ними.
P.S. При записи примеров не забывайте о правилах отступа в Python!
Скрипты в Blender. А давайте отвлечемся? Автор: Maks Zinchenko дата: 14:26 Оценка: 5

4 комментария:

  1. И всё это ни хрена не работает в версиях блендера, начиная где-то с 2.6
    Потому что вместо "import Blender ..." надо уже писать "import bpy ...", а дальше вообще сплошные загадки - весь синтаксис поломали к чертям собачьим, доки по изменениям не найти...

    ОтветитьУдалить
  2. 9 лет прошло, однако :)
    Материалов по скриптам вроде видел, не на русском, конечно..

    ОтветитьУдалить
    Ответы
    1. Материалов по скриптам полно, но про переход между версиями - ничего не видно. Приходится вести обработку этим скриптом на старой версии блендера, в которой глюков выше крыши...

      Удалить
    2. Кажется, модуль Blender использовался до конца 2.49, дальше перешли на bpy.
      Api вроде есть, https://docs.blender.org/api/
      Немного тут https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Python_Scripting
      Разобраться можно, если уделить время и Python не вызывает проблем.

      Удалить

Все права защищены BlenderTech © 2008 - 2015
Поддержка BloggerSweetheme
Автор изображений для темы: friztin. Технологии Blogger.