В этом уроке я покажу Вам, как написать простой скрипт, с помощью которого можно создать собственное меню на панели инструментов. Данный скрипт состоит всего из 30 строк (включая отступы). Для его создания и редактирования не обязательны знания языка программирования Python.
Видеоурок
Исходный код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | bl_info = { "name": "My First Addon", "category": "3D View" } #Содержит мета-данные аддона, такие как: название, версия, автор... import bpy class MyPanel(bpy.types.Panel): #Создается класс с типом меню Panel bl_label = "My Panel" #Название меню bl_space_type = 'VIEW_3D' #Окно расположения bl_region_type = 'TOOLS' #Панель расположения def draw(self, context): #Функция отображающая содержимое нашего меню layout = self.layout #Переменной layout присваивается выражение self.layout layout.label(text="Add mesh:") #С помощью label выводится любой текст split = layout.split() #Переменной split присваивается выражение layout.split() col = split.column(align=True) #Переменной col присваивается выражение split.column(align=True) col.operator("mesh.primitive_cube_add", text="Cube", icon="MESH_CUBE") #Выводится кнопка создания куба с текстом и иконкой col.operator("mesh.primitive_monkey_add", text="Monkey", icon="MESH_MONKEY") #Выводится кнопка создания Сюзанны с текстом и иконкой def register(): #Функция загружает скрипт при включении аддона bpy.utils.register_class(MyPanel) def unregister(): #Функция выгружает скрипт при отключении аддона bpy.utils.unregister_class(MyPanel) if __name__ == "__main__": register() #Функция позволяет запускать скрипт непосредственно из редактора |
Должен же был кто то написать коммент ;D
Ага!
Все стесняются или сидят сейчас и шаманят свою менюшку (:smile:)
Рашен текст можно использовать в надписях?
Я знал что прозвучит данный вопрос (:smile:)
Попробуйте написать и узнаете!
Написать — то получается, но не скажется ли это не дальнейшей работе, ведь питон «недолюбливает» кириллицу
Правильно говорите! Лучше НИКОГДА не использовать кириллицу!
Сделайте побольше уроков про Python!(:smile:)(:smile:)
через какую прогу надо писать
Ты издеваешься?!
всё простите за глупый вопрос теперь знаю
А свою иконку как сделать?
Посмотрите исходный код аддона с иконками. Должно натолкнуть на мысль.
Отличный урок, Большое спасибо!
Блин, только сейчас понял !!! Так нормальную русификацию можно сделать -(:joy:)-
Артем, а вы в контакте есть?
А как добовлять свои модели?
Артём, спасибо вам за полезный урок! Сейчас ознакамливаюсь с Питоном через программу от Solo Learn (на android). Довольно доступно обьясняеться материал. Поэтому, тем кто не знаком вообще с программированием, рекомендую :)
Артем а вы могли бы написать шаблон под game logic sensor. Просто мои попытки вообще не увенчались успехом (
как вызывать не встроеную функцию кнопкой?
Артём, маленькое уточнение. Как надо модифицировать текст, чтобы куб добавлялся не в место 3Д курсора, а в координаты, заданные непосредственно в тексте аддона? Например, в начало координат? Всё уже перепробовал. Как только добавляю координаты в mesh.primitive_cube_add, кнопка добавления куба пропадает — вероятно, блендер перестаёт понимать эту строку
Я не уверен на 100%, но никак. Новые объекты всегда добавляются в местоположение 3D-курсора.
Поэтому ты можешь изменить его положение на центр оси в коде, добавить объект и вернуть курсор туда, где он был до этого.
фокус в том, что в документации на сайте блендера команда добавления куба содержит кучу параметров, в том числе — координаты центра (скопировал оттуда):
bpy.ops.mesh.primitive_cube_add(radius=1.0, calc_uvs=False, view_align=False, enter_editmode=False, location=(0.0, 0.0, 0.0), rotation=(0.0, 0.0, 0.0), layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
но вот как эти координаты запихнуть в команду? или это вообще «не о том?»
Что происходит, если в location стоят не 0-ли?
ну… картина такая: если туда попытаться засунуть оператор в том виде, в котором он приводится в хелпе (то есть, со всеми параметрами), то блендер сначала долго тужится в попытке понять написанное, потом вылетает с ошибкой. а если пытаться сократить параметры (только до локейшена) кнопка просто тупо пропадает. я просто думал, что там есть какая-то хитрость в указании параметров
Нашёл. Вдруг кому будет полезно:
бла_бла_бла.operator(«mesh.primitive_cube_add», text=»Cube», icon=»MESH_CUBE»).location=(5,5,5)
то есть, локейшен вводится не в скобках, а после точки. Правда, тут возникает следующий вопрос: а как вводить несколько параметров? :)
Цикл?
Хороший урок, самое то для программиста
Артем, подскажи, пожалуйста, где можно узнать, как и где в коде блендера пишутся ноды. Именно сам их вид, пины, выпадающие списки, ниточки, логика работы и т.д. Может быть, есть пособия (хоть на английском), где об этом говорится подробно?
Blender — это Open Source :)
Что значит где и как? Если знаешь C++ и Python, то в вопросе нет смысла. Если не знаешь, то тоже.
>> Что значит где и как?
Я имел в виду, как найти путь к коду нодов. Где-то в корне они имеют как внешнее представление, так и внутреннюю логику, взаимосвязи. У меня есть идея написать нод, хотелось бы посмотреть, как реализованы другие.
Языки знаю, но на любительском уровне. Учусь.
C:Program FilesBlender FoundationBlender2.79scriptsaddonscycles