-
Notifications
You must be signed in to change notification settings - Fork 8
exporting data from krita (ru)
Krita - это мощное приложение для рисования растровой графики и анимации, ретуши и различных преобразований изображений. Так же у него есть некоторые функции векторной графики. Оно построено на базе фреймворка Qt и является частью KDE. Оно поддерживает установку различных плагинов и ресурсов, таких как кисти и эффекты. У него есть API для сценариев на Python и небольшой CLI (интерфейс командной строки) для экспорта или преобразования файлов.
Для работы с анимацией в Krita есть докеры (паркующиеся окна):
- Animation Timeline, на котором расположена таблица слоёв и ключевых кадров и органы управления воспроизведением;
- Storyboard, на котором можно выделить несколько диапазонов времени для разных анимаций;
- Onion Skins, так называемая "луковая шелуха", на котором можно задать степень видимости предыдущих и последующих кадров для облегчения рисования движений
Выбор диапазона кадров для воспроизведения сделан не самым удобным образом: для этого нужно нажать кнопку меню настроек анимации (Animation settings menu) и явно указать номера начального и конечного кадров. Для облегчения этого выбора я сделал специальный плагин Storyboard timeline selector, который автоматически выбирает кадры, входящие в историю при нажатии на неё левой кнопкой мыши.
Длительность "истории" (количество кадров, входящих в неё) задаётся не самым удобным образом. Она состоит из количества секунд и количества остаточных кадров. Эти числа напрямую связаны с установленной общей скоростью анимации (количество кадров в секунду).
В Krita можно экспортировать анимацию в последовательность файлов изображений через меню File -> Render Animation. Так же можно сделать это из командной строки:
> path/to/krita.com --export-sequence --export-filename <base_file_name>.<format_extension> path/to/source/file.kra
Внимание! Krita нормально экспортирует векторные слои из своего графического интерфейса, но не экспортирует их в командном режиме.
Чтобы не приходилось постоянно вызывать экспорт из Krita вручную и потом настраивать импорт его результатов в проект Godot, можно настроить импорт *.kra
-файлов с помощью Importality. Для этого в настройках проекта в секции "Importality" укажите директорию временных файлов и настройте команду Krita и её параметры одним из приведённых в конце статьи способов. Затем выберите *.kra
-файл в дереве файловой системы Godot, на вкладке "Import" выберите нужный формат импорта, настройте его параметры и нажмите кнопку "Reimport". При изменении формата импорта движок потребует перезагрузку.
К сожалению, в "историях" нельзя отдельно указать направление проигрывания и количество повторов анимации. По этому для указания этих параметров используйте суффиксы, добавляемые в конце имени "истории":
<animation_name> [-d:<direction>] [-r:<repeat_count>]
Где:
-
direction
- направление анимации. Возможные значения:-
f
(forward) - вперёд (по умолчанию) -
r
(reverse) - обратно -
pp
(ping-pong) - вперёд, а затем обратно -
ppr
(ping-pong reverse) - сначала обратно, а затем вперёд
-
-
repeat_count
- количество повторений анимации (по умолчанию 1). Если указано 0, анимация будет зациклена бесконечно
Например:
Idle -r:0
Walk -r:0
Jump -r:1
Crouch -r:1
Hurt -r:1
Die -r:1
Special -d:pp -r:0
Krita сохраняет свои проекты в файлах с расширением *.kra
. Это обычные ZIP-архивы, в которых находятся метаданные в виде XML-файлов и растровые данные в виде PNG-файлов. Так же в них есть PNG-файл миниатюры с именем preview.png
и файл с полноразмерным сведённым изображением с именем mergedimage.png
. Таким образом для импорта .kra
-файла в движок Godot в виде обычного изображения не нужно никаких дополнительных инструментов. Плагину достаточно открыть архив и извлечь из него файл mergedimage.png
. Но с экспортом последовательности кадров всё обстоит сложнее.
Krita не считает, что вы отредактировали документ, если вы изменили имя или длительность истории в окне Storyboard. Так же она не считает за изменение документа, если вы измените диапазон проигрываемых кадров и скорость анимации. При нажатии Ctrl+S
ничего не произойдёт, и Godot не запустит повторный импорт вашего файла.
Чтобы этого избежать, внесите изменение на холст (например, сделайте мазок кистью) и отмените его. После этого сохранение документа будет доступно.
Во-первых, для экспорта последоваетельности кадров не удастся обойтись без самой Krita, потому что только она может правильно свести все данные, хранящиеся в файле и применить к результатам разные преобразования и эффекты. Во-вторых, невозможно запустить второй экземпляр Krita в то время, как первый уже запущен.
Krita в монопольном режиме использует базу данных SQLite для работы со своими ресурсами в своей папке в профиле текущего пользователя. Krita позволяет создать несколько окон, но они все управляются одним и тем же экземпляром приложения. По этому консольная команда Krita на экспорт кадров заблокируется в ожидании, пока не будут закрыты все окна Krita.
Но что же делать, если вы нарисовали еще несколько кадров, сохранили файл, и переключаетесь в окно Godot, чтобы сразу увидеть обновлённый ресурс? Импорт зависнет до тех пор, пока вы не закроете Krita! К счастью, выход есть, хоть он и не самый удобный: сделать так, чтобы Godot запускал команду Krita от имени другого пользователя. Для этого в разных операционных системах есть разные инструменты:
- runas от Microsoft
- Start-Process от Microsoft - командлет среды PowerShell
- PsExec от Mark Russinovich
- gsudo от Gerardo Grignoli
- MiniRunAs от Christian d'Heureuse
- runAs от JetBrains
- ... и множество других
- runuser
- su - substitute user (подмена пользователя)
- sudo - super user do (выполняется суперпользователем)
- chpst - changed process state (запуск приложения с изменённым состоянием процесса)
-
Создайте в операционной системе учетную запись дополнительного пользователя, например, KritaRunner.
- Для этого откройте Пуск и наберите на клавиатуре "run" или нажмите
Win+R
. Откроется приложение для запуска команд. - Введите команду
netplwiz
и нажмитеEnter
. Откроется окно управления учётными записями пользователей. - Добавьте нового пользователя. Откажитесь от создания учётной записи Microsoft, если покажется такое предложение. Выберите создание локальной учётной записи.
- Введите имя пользователя (лучше на латинице) и пароль.
- Укажите, что учётная запись создаётся не для администратора, а для обычного пользователя.
- Для этого откройте Пуск и наберите на клавиатуре "run" или нажмите
-
Скачайте и настройте Скрипт PowerShell для запуска команды от имени другого пользователя с сохранёнными учётными данными.
- Для этого в проводнике, в папке, где вы решили расположить этот скрипт, установите курсор в адресную строку и наберите "powershell" и нажмите
Enter
. Откроется окно интерпретатора среды PowerShell c уже выбранной текущей директорией. - Начните набирать имя скрипта (достаточно первых нескольких букв) и нажмите
Tab
один или несколько раз, пока не подставится полное имя скрипта. - Добавьте в конец строки пробел и далее укажите имя файла для сохранения зашифрованных учётных данных, или, если нужно, полный путь к нему, и нажмите
Enter
- Скрипт предложит ввести имя пользователя и пароль. Введите данные только что созданного дополнительного пользователя.
- Скрипт создаст файл с зашифрованными учётными данными. Теперь окно PowerShell можно закрыть.
- Для этого в проводнике, в папке, где вы решили расположить этот скрипт, установите курсор в адресную строку и наберите "powershell" и нажмите
-
Настройте запуск Krita в Godot с помощью этого скрипта.
- Для этого откройте настройки плагина в настройках проекта (Project Settings -> General -> Advanced Settings -> Importality)
- В качестве команды запуска Krita (Krita Command) введите
powershell
- Раскройте массив аргументов команды Krita (Krita Command Arguments), и увеличьте количество элементов до 4.
- Заполните аргументы (пример на скриншоте ниже):
-
0
:-File
-
1
: полный путь к скрипту -
2
: полный путь к файлу зашифрованных учётных данных дополнительного пользователя -
3
: полный путь к исполняемому файлу Krita (в папке установки Krita, в папкеbin
есть файлыkrita.exe
иkrita.com
. Лучше выбратьkrita.com
, так как он адаптирован для работы из командной строки)
-
- На этом настройка завершена. Теперь Godot сможет запускать Krita от имени дополнительного пользователя и передавать ей нужные параметры для экспорта кадров из исходных файлов.
Вы очень поможете проекту, если сообщите, как можно улучшить скрипт и способ его интеграции с плагином!
Разработка решения запланирована.
Вы очень поможете проекту, если разработаете это решение раньше!
Разработка решения запланирована.
Вы очень поможете проекту, если разработаете это решение раньше!
Контент подвала