-
Notifications
You must be signed in to change notification settings - Fork 11
exporting data from krita (ru)
Krita - это мощное приложение для рисования растровой графики и анимации, ретуши и различных преобразований изображений. Так же у него есть некоторые функции векторной графики. Оно построено на базе фреймворка Qt и является частью KDE. Оно поддерживает установку различных плагинов и ресурсов, таких как кисти и эффекты. У него есть API для сценариев на Python и небольшой CLI (интерфейс командной строки) для экспорта или преобразования файлов.
Для работы с анимацией в Krita есть докеры (паркующиеся окна):
- Animation Timeline, на котором расположена таблица слоёв и ключевых кадров и органы управления воспроизведением;
- Storyboard, на котором можно выделить несколько диапазонов времени для разных анимаций;
- Onion Skins, так называемая "луковая шелуха", на котором можно задать степень видимости предыдущих и последующих кадров для облегчения рисования движений
Выбор диапазона кадров для воспроизведения сделан не самым удобным образом: для этого нужно нажать кнопку меню настроек анимации (Animation settings menu) и явно указать номера начального и конечного кадров. Для облегчения этого выбора я сделал специальный плагин Storyboard timeline selector, который автоматически выбирает кадры, входящие в историю при нажатии на неё левой кнопкой мыши.
Krita сохраняет свои проекты в файлах с расширением *.kra
. Это обычные ZIP-архивы, в которых находятся метаданные в виде XML-файлов и растровые данные в виде PNG-файлов. Так же в них есть PNG-файл миниатюры с именем preview.png
и файл с полноразмерным сведённым изображением с именем mergedimage.png
. Таким образом для импорта .kra
-файла в движок Godot в виде обычного изображения не нужно никаких дополнительных инструментов. Плагину достаточно открыть архив и извлечь из него файл mergedimage.png
. Но с экспортом последовательности кадров всё обстоит сложнее.
Во-первых, для экспорта последоваетельности кадров не удастся обойтись без самой Krita, потому что только она может правильно свести все данные, хранящиеся в файле и применить к результатам разные преобразования и эффекты. Во-вторых, невозможно запустить второй экземпляр Krita в то время, как первый уже запущен.
Krita в монопольном режиме использует базу данных SQLite для работы со своими ресурсами в своей папке в профиле текущего пользователя. Krita позволяет создать несколько окон, но они все управляются одним и тем же экземпляром приложения. По этому консольная команда Krita на экспорт кадров заблокируется в ожидании, пока не будут закрыты все окна Krita.
Но что же делать, если вы нарисовали еще несколько кадров, сохранили файл, и переключаетесь в окно Godot, чтобы сразу увидеть обновлённый ресурс? Импорт зависнет до тех пор, пока вы не закроете Krita! К счастью, выход есть, хоть он и не самый удобный: сделать так, чтобы Godot запускал команду Krita от имени другого пользователя. Для этого в разных операционных системах есть разные инструменты:
Windows:
- runas от Microsoft
- Start-Process от Microsoft - командлет среды PowerShell
- PsExec от Mark Russinovich
- gsudo от Gerardo Grignoli
- MiniRunAs от Christian d'Heureuse
- runAs от JetBrains
- ... и множество других
Linux:
- runuser
- su - substitute user (подмена пользователя)
- sudo - super user do (выполняется суперпользователем)
- chpst - changed process state (запуск приложения с изменённым состоянием процесса)
Mac OS:
Создайте в своей операционной системе специальную учётную запись для запуска Krita. Теперь у вас будет 2 варианта работы:
- Запускать Krita для рисования от имени дополнительного пользователя, а в Godot работать от имени основного. Тогда для экспорта плагин будет запускать команду Krita от имени основного пользователя (наиболее простой вариант, но Krita будет сохранять данные своих сессий в профиле дополнительного пользователя).
- Запускать Krita и Godot из-под основного пользователя, но создать специальную команду или сценарий оболочки командной строки, который будет запускать Krita для экспорта из-под дополнительного пользователя (более сложный и более опасный вариант, потому что возможно вам придется в файле сценария указать пароль для дополнительного пользователя).
Скрипт PowerShell для запуска команды от имени другого пользователя с сохранёнными учётными данными
Контент подвала