Skip to content

exporting data from krita (ru)

nklbdev edited this page Aug 26, 2023 · 11 revisions

Заметки об экспорте данных из Krita

en ru

Logo

Krita - это мощное приложение для рисования растровой графики и анимации, ретуши и различных преобразований изображений. Так же у него есть некоторые функции векторной графики. Оно построено на базе фреймворка Qt и является частью KDE. Оно поддерживает установку различных плагинов и ресурсов, таких как кисти и эффекты. У него есть API для сценариев на Python и небольшой CLI (интерфейс командной строки) для экспорта или преобразования файлов.

Для работы с анимацией в Krita есть докеры (паркующиеся окна):

  • Animation Timeline, на котором расположена таблица слоёв и ключевых кадров и органы управления воспроизведением;
  • Storyboard, на котором можно выделить несколько диапазонов времени для разных анимаций;
  • Onion Skins, так называемая "луковая шелуха", на котором можно задать степень видимости предыдущих и последующих кадров для облегчения рисования движений

Выбор диапазона кадров для воспроизведения сделан не самым удобным образом: для этого нужно нажать кнопку меню настроек анимации (Animation settings menu) и явно указать номера начального и конечного кадров. Для облегчения этого выбора я сделал специальный плагин Storyboard timeline selector, который автоматически выбирает кадры, входящие в историю при нажатии на неё левой кнопкой мыши.

Krita storyboard timeline selector example

Длительность "истории" (количество кадров, входящих в неё) задаётся не самым удобным образом. Она состоит из количества секунд и количества остаточных кадров. Эти числа напрямую связаны с установленной общей скоростью анимации (количество кадров в секунду).

В 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". При изменении формата импорта движок потребует перезагрузку.

Krita import example

К сожалению, в "историях" нельзя отдельно указать направление проигрывания и количество повторов анимации. По этому для указания этих параметров используйте суффиксы, добавляемые в конце имени "истории":

<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

Krita не считает, что вы отредактировали документ, если вы изменили имя или длительность истории в окне Storyboard. Так же она не считает за изменение документа, если вы измените диапазон проигрываемых кадров и скорость анимации. При нажатии Ctrl+S ничего не произойдёт, и Godot не запустит повторный импорт вашего файла.

Чтобы этого избежать, внесите изменение на холст (например, сделайте мазок кистью) и отмените его. После этого сохранение документа будет доступно.

БОЛЬШАЯ ПРОБЛЕМА Krita

Во-первых, для экспорта последоваетельности кадров не удастся обойтись без самой Krita, потому что только она может правильно свести все данные, хранящиеся в файле и применить к результатам разные преобразования и эффекты. Во-вторых, невозможно запустить второй экземпляр Krita в то время, как первый уже запущен.

Krita в монопольном режиме использует базу данных SQLite для работы со своими ресурсами в своей папке в профиле текущего пользователя. Krita позволяет создать несколько окон, но они все управляются одним и тем же экземпляром приложения. По этому консольная команда Krita на экспорт кадров заблокируется в ожидании, пока не будут закрыты все окна Krita.

Но что же делать, если вы нарисовали еще несколько кадров, сохранили файл, и переключаетесь в окно Godot, чтобы сразу увидеть обновлённый ресурс? Импорт зависнет до тех пор, пока вы не закроете Krita! К счастью, выход есть, хоть он и не самый удобный: сделать так, чтобы Godot запускал команду Krita от имени другого пользователя. Для этого в разных операционных системах есть разные инструменты:

Windows:

Linux:

  • runuser
  • su - substitute user (подмена пользователя)
  • sudo - super user do (выполняется суперпользователем)
  • chpst - changed process state (запуск приложения с изменённым состоянием процесса)

Mac OS:

Готовые решения

Windows:

  1. Создайте в операционной системе учетную запись дополнительного пользователя, например, KritaRunner.
    • Для этого откройте Пуск и наберите на клавиатуре "run" или нажмите Win+R. Откроется приложение для запуска команд.
    • Введите команду netplwiz и нажмите Enter. Откроется окно управления учётными записями пользователей.
    • Добавьте нового пользователя. Откажитесь от создания учётной записи Microsoft, если покажется такое предложение. Выберите создание локальной учётной записи.
    • Введите имя пользователя (лучше на латинице) и пароль.
    • Укажите, что учётная запись создаётся не для администратора, а для обычного пользователя.
  2. Скачайте и настройте Скрипт PowerShell для запуска команды от имени другого пользователя с сохранёнными учётными данными.
    • Для этого в проводнике, в папке, где вы решили расположить этот скрипт, установите курсор в адресную строку и наберите "powershell" и нажмите Enter. Откроется окно интерпретатора среды PowerShell c уже выбранной текущей директорией.
    • Начните набирать имя скрипта (достаточно первых нескольких букв) и нажмите Tab один или несколько раз, пока не подставится полное имя скрипта.
    • Добавьте в конец строки пробел и далее укажите имя файла для сохранения зашифрованных учётных данных, или, если нужно, полный путь к нему, и нажмите Enter
    • Скрипт предложит ввести имя пользователя и пароль. Введите данные только что созданного дополнительного пользователя.
    • Скрипт создаст файл с зашифрованными учётными данными. Теперь окно PowerShell можно закрыть.
  3. Настройте запуск 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, так как он адаптирован для работы из командной строки)
  4. На этом настройка завершена. Теперь Godot сможет запускать Krita от имени дополнительного пользователя и передавать ей нужные параметры для экспорта кадров из исходных файлов.

Settings

Вы очень поможете проекту, если сообщите, как можно улучшить скрипт и способ его интеграции с плагином!

Linux:

Разработка решения запланирована.

Вы очень поможете проекту, если разработаете это решение раньше!

Mac OS:

Разработка решения запланирована.

Вы очень поможете проекту, если разработаете это решение раньше!

Clone this wiki locally