__url__ = ["author's site,
__doc__ = """
A simple script to add a Blender Text object to a scene.
It takes no parameters and initializes the object to
contain the text 'Hello World'
"""
Перевод строки __doc__: Простой скрипт для добавления текстового объекта Блендера в сцену. Он не принимает никаких параметров и инициализирует объект, содержащий текст 'Hello World'
Эти переменные не требуют разъяснений, за исключением переменной __url__,
- она принимает список строк, где каждая строка состоит из короткого описания, запятой, и ссылки. В результате экран помощи будет выглядеть похожим на это:
Теперь все, что нам осталось сделать, это проверить его и поместить этот скрипт в нужном месте. Мы можем протестировать скрипт, нажав Alt + P. Если не столкнулись ни с какими ошибками, результатом будет наш объект Hello World Text3d, добавленный к сцене, но скрипт не будет пока добавлен в меню Add.
Если скрипт должен быть добавлен к меню Add, он должен находиться в каталоге скриптов Блендера. Для того, чтобы сделать это, сначала сохраните скрипт, находящийся в текстовом буфере, в файл со значимым именем. Затем, убедитесь, что этот файл расположен в каталоге скриптов Блендера. Этот каталог называется scripts и является подкаталогом в .blender, каталоге конфигурации Блендера. Он расположен в каталоге установки Блендера или (на Windows) в каталоге Application Data. Простейший способ найти свой - просто посмотреть снова на переменную sys.path, чтобы увидеть, куда указывает каталог, заканчивающийся на .blender\scripts.
Скрипты, расположенные в каталоге скриптов Блендера, автоматически будут выполнены при запуске, так что наш скрипт hello world будет доступен в любое время, когда мы запустим Блендер. Если мы хотим, чтобы Блендер пересмотрел каталог скриптов (чтобы нам не пришлось перезапускать Блендер для появления нашего нового дополнения), мы можем выбрать Scripts | Update Menus в интерактивной консоли.
Не запутайтесь, оставайтесь объективным
Как Вы могли обратить внимание, слово объект используется в двух различных (возможно, запутанно) случаях. В Блендере почти все называется Object. Лампа (Lamp), например - Object, но точно так же им являются Куб (Cube) или Камера (Camera). Объекты - вещи, которыми может манипулировать пользователь, и они имеют, например, позицию и вращение.
Фактически, всё несколько более структурировано (или усложнено, как говорят некоторые): любой объект Блендера содержит ссылку на более специфический объект, называемый блок данных (data block). Когда Вы добавляете объект Куб в пустую сцену, у вас будет общий (generic) объект в некоторой позиции. Этот объект будет назван Cube и будет содержать ссылку на другой объект, Меш (Mesh). Это Меш-объект также будет назван по умолчанию Cube, но это - нормально, так как пространства имён объектов различного типа раздельны.
Это разделение свойств на общие для всех объектов (как например, позиция) и специфические свойства в единственном типе объекта (например, энергия Лампы или вершины Меша) - логичный способ упорядочить наборы свойств. Это также позволяет экземпляру иметь множество копий объекта, не поглощая много памяти; мы можем иметь более, чем один объект, указывающий на один и тот же объект Меша, например. (Способ создать связанный дубликат - использовать Alt + D.) Следующая диаграмма может помочь понять эту концепцию:
Другой путь использования слова объект - в понимании Питона. Здесь мы подразумеваем экземпляр класса. API Блендера объектно-ориентированное и почти каждая возможная часть структурных данных представлена экземпляром объекта класса. Даже довольно абстрактные понятия, как например, Действие (Action) или IPO (абстрактное в смысле, что у них нет позиции где-нибудь на вашей сцене), определены как классы.
На какое значение слова объект мы ссылаемся в данный момент, в понимании Блендера или Питона, в этой книге по большей части будет очевидным из контекста, если иметь в виду это различие. Но если нет, мы будем стремиться писать - в понимании Блендера как Объект (Object) или в понимании Питона объект (object) или экземпляр объекта (object instance).
По-моему, автор сам ввёл лишнюю путаницу в терминологию, называя блоки данных типа Mesh или Lamp объектами. Проще было бы сразу вводить различные термины и применять их всё время: Объекты, Блоки данных, Экземпляры классов. - недоумение пер.