Базовые иконки, использующихся в UI и операторах, прошиты внутри Blender, и поэтому мы не можем отредактировать или добавить новые иконки без полной перекомпиляции Blender. Иконки для панелей инструментов не привязаны сборке Blender, хранятся в отдельных файлах, и мы можем заменять или создавать и добавлять в Blender новые иконки инструментов.
Все иконки для инструментов Blender хранятся в отдельных файлах с расширением .dat в директории:
1 |
ПУТЬ_К_BLENDER/ВЕРСИЯ_BLENDER/datafiles/icons/ |
Для того чтобы добавить новую иконку в набор, нужно создать файл в нужном формате и просто скопировать его в эту директорию.
Создать файл с иконкой можно при помощи самого Blender.
Откроем пустую сцену и создадим в ней меш, изображение которого мы хотим видеть на новой иконке. Для примера просто добавим в сцену “Сюзанну”.
Меш должен быть размещен так, чтобы его лицевая часть смотрела вдоль его локальной оси Z. Перейдем в режим редактирования и повернем точки меша так, чтобы “лицо” смотрело в нужном направлении.
Центр иконки будет в точке ориджина меша. Поэтому геометрию нужно подогнать так, чтобы ориджин меша был в центре.
Иконка будет сгенерирована с размера сцены 2 x 2, поэтому размер меша нужно подогнать так, чтобы все его точки были внутри квадрата 2 на 2.
С геометрией все готово. Но нужно еще добавить нашей иконке цвет.
Цвет иконки определяется произведением цвета, взятого из ее шейдера на цвет покраски вертексов в режиме Vertex Paint.
Для задания базового цвета в шейдере используется всего один нод “RGB”. Никаких других нодов в дерево добавлять не нужно, они все равно будут проигнорированы.
Второй цвет задается покраской меша в режиме Vertex Paint. Можно раскрасить иконку вручную или, для простого придания объема, выполнить операцию Paint – Dirty Vertex Color.
Название файла для иконки берется из имени меша. Переименуем меш в соответствии с правилами, например в “ops.generic.suzanne”.
Учтите, что меши-копии (с именами заканчивающимися на .001, .002 и т.п.) будут проигнорированы.
На этом все необходимые по художественной части шаги выполнены и мы можем сгенерировать иконку из нашего меша.
Для генерации файла с иконкой используется скрипт, предоставленный разработчиками Blender. Я его чуть-чуть дополнил возможностью указывать путь, куда сохранять готовую иконку в самом скрипте, чтобы его было удобно вызывать из текстового редактора Blender.
Скачать мою версию скрипта можно с GitHub: https://github.com/Korchy/blender_create_toolbar_icon
Откройте файл create_toolbar_icon.py и скопируйте его целиком в Blender TextEditor.
Укажите путь, куда вы хотите сохранить готовую иконку в переменной icon_file_path:
1 |
icon_file_path = "c:/temp/" |
Если значение переменной оставить пустым, готовый файл будет сохранен в месте размещения вашего .blend файла (или в системной временной директории, если ваш .blend файл не сохранен).
Нажатием на кнопку со стрелочкой выполните скрипт.
Файл с готовой иконкой, в нашем случае ops.generic.suzanne.dat, будет сохранен в указанном месте.
Теперь мы можем скопировать его в директорию /datafiles/icons/ в Blender и использовать при создании кастомных инструментов, указывая ID иконки в параметре bl_icon:
1 |
bl_icon = 'ops.generic.suzanne' |
Созданная нами иконка теперь отображается в панели инструментов Blender.
Оригинальный скрипт от разработчиков Blender можно скачать с их репозитория: https://svn.blender.org/svnroot/bf-blender/trunk/lib/resources