Книга: Написание скриптов для Blender 2.49

Первые шаги: Hello world

Первые шаги: Hello world

Традиция требует, чтобы все книги о программировании имели пример "hello world", и почему мы станем обижать людей? Мы осуществим и запустим скрипт, создающий, как иллюстрирующий пример, простой объект, и покажем как интегрировать этот скрипт в меню Блендера. Мы также покажем как, документировать его и сделать запись в справочной системе. Наконец, мы потратим несколько слов на аргументы за и против распространения скриптов в виде .blend-файлов, или в виде скриптов, которые пользователь сам должен устанавливать в каталог со скриптами.

Давайте напишем немного кода! Вы можете набрать следующие строки непосредственно в интерактивную консоль Питона, или Вы можете набрать новый текст в текстовом редакторе Блендера, и затем нажать Alt + P, чтобы запустить скрипт. Это - короткий скрипт, но мы пройдем через него довольно подробно, так как он отобразит множество ключевых аспектов API Питона в Блендере.

#!BPY
import Blender
from Blender import Scene, Text3d, Window
hello = Text3d.New("HelloWorld")
hello.setText("Hello World!")
scn = Scene.GetCurrent()
ob = scn.objects.new(hello)
Window.RedrawAll()

Первая строка идентифицирует этот скрипт как скрипт Блендера. Она необязательна для запуска скрипта, но если мы хотим быть способными сделать этот скрипт частью структуры меню Блендера, нам она нужна, так что лучше мы будем привыкать к этому сразу.

Вы найдете вторую строку (которая выделена) фактически в любом скрипте Блендера, поскольку она дает нам доступ к классам и функциям API Питона в Блендере. Подобно ей, третья строка дает нам доступ к специфическим подмодулям модуля Blender, которые нам нужны в этом скрипте. Конечно, мы могли бы иметь доступ к ним как к членам модуля Blender  (например, Blender.Scene), но явный импорт немного уменьшит количество программного текста и повысит удобочитаемость.

Следующие две строки сначала создают объект Text3d и назначают его переменной hello. Объект Text3d будет иметь в Блендере имя HelloWorld, так что пользователи могут ссылаться на этот объект по этому имени. Также это имя, которое будет видно в окне Outliner, и в левом нижнем углу, если выбрать объект. Если там уже существует объект того же самого типа с этим именем, Блендер добавит цифровой суффикс к имени, чтобы сделать его уникальным. Например, HelloWorld мог бы стать HelloWord.001, если мы запустим этот скрипт дважды.

По умолчанию, вновь созданный объект Text3d будет содержать текст Text, так что мы изменяем его на Hello World! с помощью метода setText().

Вновь созданный в Блендере объект не видим по умолчанию, мы должны соединить его со Сценой, так что несколько следующих строк извлекают ссылку на текущую сцену и добавляют объект Text3d в неё. Объект Text3d не добавляется непосредственно к сцене, но метод scene.objects.new() вставляет объект Text3d в общий (generic) объект Блендера и возвращает ссылку на последний. Общий объект Блендера хранит информацию, общую для всех объектов, такую как позиция, в то время как объект Text3d хранит специфическую информацию, как, например, шрифт текста.

Наконец, мы сообщаем оконному менеджеру обновить все окна, это обновление нужно из-за добавления нового объекта.

Оглавление книги


Генерация: 2.709. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз