Blender Python Bridge for "VS Code"
Описание
Это расширение создаёт программный мост между Blender и VS Code, позволяя Blender работать в режиме прослушивания и обрабатывать как отдельные команды, так и целые скрипты, пакеты или многофайловые аддоны от клиента, где клиентом выступает VS Code. Обмен данными осуществляется через сетевой сокет, обеспечивая эффективное взаимодействие между Blender (как сервером) и VS Code.
Особенности
- Прямая передача кода: Запускайте разрабатываемые скрипты/аддоны напрямую в Blender без необходимости их установки или манипуляции с файлами или архивами.
- Поддержка полного проекта: Работа со скриптами, пакетами и многофайловыми аддонами.
- Интеграция с VS Code: Удобное использование через команды в меню VS Codeгорячие или горячими клавишами.
- Поддержка воркспейсов VS Code: Позволяет работать сразу с несколькими проектами в разным местах диска добавленных в рабочую область.
Установка и настройка расширения в VS Code
- Установите расширение через встроенный MarketPlace;
- Нажмите
Ctrl+Shift+P
, найтите и запустите команду "Select Blender Executable";
- Укажите путь к исполняемому файлу Blender;
- (Опционально) Настройте кодировку терминала для корректного отображения кириллицы (инструкции включены);
- Откройте свой код в Workspace;
- Запустите код (как, смотри ниже);
Как это устроено в общем
Пользователь создаёт скрипт/пакет/аддон в VS Code, далее запускает код и видит результат в Blender.
Shift+F7
- Запуск Blender с сетевым скетом для прослушивания команд;
Shift+F8
- Запуск пакета целиком из текущего воркспейса вне зависимости от того какой открыт скрипт и в какой папке, запускается __init__.py
, эмулируя работу как при полноценной установке аддона;
Shift+F9
- Запуск конкретного, открытого в данный момент скрипта.
Код передаётся в Blender, и запускается так как если бы вы его запаковали в zip архив и установили через Blender интерфейс. Разница лишь в том, что это всё происходит на лету без фактической установки и работы с файлами на диске. Blender получает пути к проекту и выполняет регистрацию классов из фактического расположения проекта на жестком диске в вашей папке проекта.
При перезапуске кода, все классы и модули сначала разрегистрируются и удаляются из памяти чтобы очистить прошлый результат работы, после старта нового кода не будет пересечений с прошлым результатом работы.
После выключения Blender ваш скрипт/пакет/аддон полностью вычищается из памяти так как он не был установлен, а использовался на лету.
Пространство имен поддерживается аналогично структуре Blender, что позволяет упаковать ваше творение в zip и установить на постоянной основе или передать кому либо не боясь проблем с абсолютными и относительными путями в импортах, (поймут те кто сталкивался с работой через IDE).
Доступные команды
pathExecSel
: Выбрать исполняемый файл Blender
pathExecClean
: Очистить путь к Blender
pathExecShow
: Показать путь к Blender
showPathsProject
: Показать пути проекта
startBlender
: Запустить Blender с сокет сервером Shift+F7
runEntirePackage
: Запустить весь пакет в Blender Shift+F8
runCurrScript
: Запустить текущий скрипт в Blender Shift+F9
Зависимости
Прямых зависимостей у расширения нет. Расширение требует указать путь до исполняемого файла Blender.
Будьте уверены в том, что код будет работать, так как использует встроенный в Blender интерпретатор.
Установка Python в VS Code является опциональной и не влияет на работу расширения, а лишь на ваше удобство, подсветку синтаксиса и разработку своих личных проектов не связанных с Blender.
Настройка кодировок в терминале (Опционально)
(для GNU/Linux) кодировка в большей части репозиториев должна быть изначально правильной;
(для вендузятников) В Windows, системный терминал использует кодировку 866, что не позволяет отображать кирилицу в терминале, при получении сообщений от Blender в терминал (не от python интерпретатора в терминал. а именно ошибки самой программы). Кирилица на уровне VS Code и в скриптах поддерживается без проблем так как происходит декодирование вывода в UTF-8 расширением.
CMD
Чтобы переключить системный "CMD" терминал на UTF-8 на постоянной основе, нужно в реестре перейти в
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor"
Создать там "Строковый параметр" с именем Autorun в значении которого ввести
@chcp 65001>nul
PowerShell
Создайте папку с файлом, если её еще нет по пути
C:\Users\a_zhitkov\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Внутри файла одна строка с конфигом на переключение терминала
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Это позволит автоматически выполнять команду смены кодировки перед запуском терминала на уровне системы. Оставляю эту задачу на плечах пользователя так как не хочу вносить системные изменения за пользователя.
Для разработчиков
Подготовка среды разработки
- Установите
Node.js
в систему
- Запустите в проекте
npm install
, чтобы установились все зависимости в папку node_modules, если её нет она появится
- Проверьте работает ли команда
npm run watch
- Если всё работает, то проверьте расширение в режиме отладки, нажмите
F5
Должно запуститься новое окно VS Code с запущенным кодом расширения, где можно протестировать логику проекта включая команды.
Билд *.vsix расширения для установки в VS Code
В терминале проекта VS Code, выполните установку утилиты паковки vsce
npm install -g @vscode/vsce
Запакуйте проект в расширение формата *.vsix
vsce package
Получится файл вида blendpybridge-2401.21.1.vsix
готовый к установке в VS Code или пубикации в маркетплейсе.
Публикация в маркетплейсе через терминал происходит командой
vsce publish
Предварительно нужно оформиться на площадке и залогиниться через терминал под своим ID
vsce login <publisher_id>
Да пребудет в вашей разработке Biggus Dickus