Спрайты персонажа (выражения лица и Full-body)

Спрайт – это картинка персонажа для одного настроения, например happy или sad. Marinara показывает ее поверх сцены чата. Спрайты можно загрузить свои или сгенерировать с помощью ИИ, а также очистить им фон и настроить, как они появляются.

Перед началом: назовите каждый файл по настроению, например happy.png, чтобы Marinara могла его выбрать. В чате Roleplay для спрайтов также нужен включенный агент Expression Engine (помощник, который выбирает спрайт). Смотрите Как спрайты появляются в чате.

Спрайты бывают двух видов:

На экране спрайты появляются в режимах Roleplay Mode и Game Mode, но не в чатах Conversation. Загружать их можно в любом режиме, потому что персонаж сохраняет свои спрайты в каждом чате. У персоны есть такая же вкладка Sprites.

Где находится вкладка Sprites

  1. Откройте персонажа (или персону) в редакторе.
  2. Нажмите вкладку Sprites.
  3. Вверху выберите категорию: Facial Expressions, Full-body или Clips (клипы).

Разделы ниже описывают Facial Expressions и Full-body. Clips относится к звонкам. Смотрите Аудио- и видеозвонки в режиме Conversation.

Загрузка своих спрайтов

Загружать можно изображения PNG, JPEG, GIF, WebP, AVIF и SVG. Лучше всего выглядят файлы PNG с прозрачностью: пустая область вокруг персонажа остается прозрачной. Некорректное изображение для замены отклоняется, а сохраненный спрайт остается.

Загрузка одного или нескольких спрайтов

  1. Откройте вкладку Sprites и выберите Facial Expressions или Full-body.
  2. Нажмите Add sprites (добавить спрайты).
  3. Нажмите Upload images (загрузить изображения), откройте свою папку и выберите изображения в ней. Можно выбрать сразу несколько.
  4. В окне Import images (импорт изображений) нажмите Import (импортировать). Cancel (отмена) ничего не добавляет.

Имя каждого файла становится названием спрайта (его подписью). Чтобы позже переименовать спрайт, откройте его. Новые спрайты появляются в сетке вне папок. Вложенные папки не сканируются. Чтобы разложить импортированные спрайты по папкам, используйте кнопку New folder (новая папка).

В редакторе персоны один спрайт загружается через поле названия в блоке Add Sprite (добавить спрайт) и кнопку Upload (загрузить).

Загрузка целой папки

Загрузка целой папки доступна в редакторе персоны. Для персонажей используйте кнопку Upload images, описанную выше, и выберите изображения внутри своей папки.

  1. Откройте вкладку Sprites персоны.
  2. В блоке Add Sprite нажмите Upload Folder (загрузить папку).
  3. Выберите папку, в которой лежат изображения.

Имя каждого файла без расширения становится названием спрайта. Строка прогресса показывает "Uploading X/Y sprites". Вложенные папки становятся необязательными папками спрайтов. Файл catalog.json из экспорта также восстанавливает папки и измененные подписи. О некорректной записи папки приложение сообщает, а пригодные изображения все равно импортируются.

Если не получилось: при неудачном или частичном импорте приложение сообщает об ошибке, а не показывает успех с нулем изображений. Проверьте типы файлов, перечисленные выше.

Варианты названий

Имя файлаЧто означает
happy_01.png, happy_blush.pngДве картинки для happy. Начните оба названия с happy_.
happy_pajamas.pngHappy в пижаме. Сначала идет настроение, затем одежда.
angry_formalwear_soaked_01.pngAngry, в парадной одежде, промокший. Число в конце лишь обозначает еще один вариант той же картинки.

Агент Expression Engine видит и само выражение лица (happy), и полное название (happy_pajamas). Если ни один спрайт не совпадает по всем словам, первым отбрасывается последнее слово: вместо отсутствующего happy_pajamas_wounded используется happy_pajamas, а затем любой спрайт happy.

Как спрайты появляются в чате

Когда и как появляются спрайты, вы выбираете в настройках чата, а не в редакторе персонажа.

Roleplay Mode

В режиме Roleplay спрайтами управляет агент Expression Engine. Агент – это помощник, который работает параллельно с ответами. Смотрите Агенты: помощники ИИ в чатах. Expression Engine определяет настроение каждого сообщения и подбирает подходящий спрайт выражения лица. Добавьте его в чат, а если его у вас нет, установите из Agent Organizer (организатор агентов). Смотрите Справочник агентов для скачивания.

Чтобы спрайты появились, должны выполняться все условия:

Откройте Chat Settings → Agents (настройки чата → агенты) и найдите карточку Expression Engine:

Game Mode

В режиме Game Mode спрайт во весь рост автоматически появляется у того, кто говорит или сражается. Expression Engine для этого не нужен, достаточно спрайтов во весь рост у этого персонажа. Смотрите Game Mode: начало работы.

Перемещение и изменение размера спрайтов

Как только владелец спрайтов включен, в карточке Expression Engine появляется раздел Sprite Layout (раскладка спрайтов).

  1. Нажмите Arrange (расставить), затем перетащите каждый спрайт на нужное место.
  2. Нажмите Done (готово).

Reset (сбросить) стирает заданные вами позиции и возвращает автоматическую расстановку. Default Side (сторона по умолчанию) – это Left или Right, сначала выбрано Left. Смена стороны переворачивает текущую расстановку. Apply to (применить к) позволяет задать расстановку для всех персонажей или для одного.

Четыре ползунка задают размер и прозрачность. Expression Size и Full-body Size работают в диапазоне от 5% до 200%. Expression Opacity и Full-body Opacity – от 0% до 100%. Размер и непрозрачность изначально равны 100%.

Генерация спрайтов с помощью ИИ

Перед началом: добавьте подключение для генерации изображений. Для анимированных спрайтов также нужно подключение для видео. Смотрите Подключение к провайдеру ИИ.

  1. Откройте Add sprites и нажмите Generate Sprite (создать спрайт). В редакторе персоны эта кнопка находится в блоке Add Sprite. Откроется окно Generate Sprites.
  2. Вверху выберите источник: Expressions (Portrait) или Full-body.
  3. Выберите подключение в поле Image Generation Connection.
  4. При желании добавьте до четырех Reference Images (референсные изображения) или поставьте флажок, чтобы использовать текущий аватар как референс.
  5. Напишите Appearance Description (описание внешности). Это поле обязательное.
  6. При желании включите Transparent sprite background (прозрачный фон спрайта). Marinara делает фон прозрачным. Если сервис этого не умеет, Marinara рисует однотонный зеленый, пурпурный или голубой фон, который отличается от цветов из Appearance Description, а затем убирает его.
  7. Задайте Expression Count (или Pose Count для спрайтов во весь рост) и выберите, какие выражения лица или позы создать.
  8. Нажмите Generate.

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

Если у персонажа уже есть портретные выражения лица, в источнике Full-body поставьте флажок Match existing expression sprites, чтобы создать позы во весь рост под каждое название выражения лица.

Генерация может занять несколько минут, а на медленных сервисах и дольше. Дождитесь результата, а не начинайте заново. На некоторых устройствах, например на части установок Android, генерация спрайтов с помощью ИИ и очистка фона недоступны. Тогда кнопка неактивна, а Marinara показывает причину.

Анимированные портреты

В источнике Expressions (Portrait) параметр Generate animated portraits (создать анимированные портреты) создает короткие движущиеся клипы и превращает каждый в зацикленный спрайт GIF. GIF – это файл изображения, который проигрывает короткую анимацию. Для этого нужно подключение для видео, а не для изображений. Смотрите Анимированные выражения лица.

Очистка фона спрайтов

Спрайт выглядит лучше всего, когда видно только персонажа. Сгенерированные спрайты используют настоящую прозрачность, если сервис ее поддерживает. Иначе Marinara убирает однотонный подобранный цвет фона с мягким краем и вычищает этот цвет из волос, ткани и других полупрозрачных пикселей. Старые спрайты с белым фоном по-прежнему работают.

Очистка одного спрайта вручную

Откройте предпросмотр спрайта персонажа и выберите в нем действие очистки с палочкой или нажмите на картинку спрайта персоны. В редакторе очистки можно стереть фон, вернуть кистью нужные области и проверить результат на темном, светлом и шахматном фоне. Можно отменить действие, вернуться к оригиналу и применить изменения, когда закончите.

Очистка нескольких спрайтов сразу

  1. В редакторе персонажа нажмите Select (выбрать) и выберите спрайты. В редакторе персоны кнопка очистки действует на выбранные спрайты, а если ничего не выбрано – на видимую категорию.
  2. Нажмите Clean Backgrounds (очистить фоны).
  3. Выставьте ползунок Cleanup strength (сила очистки): от Soft до Aggressive, от 0 до 100. Изначально значение равно 35. Чем выше значение, тем больше фона удаляется, но тем легче задеть самого персонажа.
  4. Подтвердите действие.

Marinara сохраняет страховочную копию. Строка сообщает "Last cleanup has a restore point", а рядом стоит кнопка Undo Cleanup (отменить очистку). Нажмите ее, чтобы вернуть все затронутые спрайты в прежний вид.

Очистка работает с PNG, JPG, JPEG, WEBP и AVIF. С GIF и SVG она не работает.

Автоматическая очистка сначала изучает изображение. Быстрая встроенная очистка справляется с однотонным цветом и старым белым фоном. Если край изображения неоднородный, Marinara может переключиться на дополнительный инструмент удаления фона на базе ИИ, если он установлен. Для сложной сцены или персонажа, чьи цвета совпадают с фоном, надежнее всего ручной редактор.

Управление спрайтами

Откройте спрайт персонажа, чтобы увидеть его предпросмотр и действия. У спрайтов персоны действия остаются на плитке.

Папки и выделение

Нажмите New folder, чтобы создать свернутую папку с названием unnamed. Дважды щелкните или дважды коснитесь ее названия, чтобы переименовать ее, а стрелка разворачивает папку. У выражений лица и спрайтов во весь рост отдельные папки. Папки располагаются над спрайтами вне папок, и их порядок можно менять перетаскиванием.

Перетаскивайте спрайты в папку, а чтобы убрать спрайт из папки, перетащите его в область вне папок. На телефоне удерживайте плитку, чтобы начать перетаскивание. Обычный свайп по-прежнему прокручивает экран. Папки только упорядочивают спрайты: они никогда не выбирают активный набор и не скрывают изображения от чатов или агентов. При удалении папки ее спрайты остаются вне папок.

Нажмите Select, чтобы показать флажки и Select all sprites (выбрать все спрайты), затем перетащите выбранные спрайты вместе или примените к ним очистку и удаление. Cancel выключает режим выделения. Поиск фильтрует видимые спрайты. Если поиск ничего не нашел, это не значит, что библиотека пуста.

Character Sheet

Строка Character Sheet в редакторе персонажа открывается кнопкой Manage (управлять). Там можно создать или загрузить лист. Включите Use as reference image (использовать как референс), чтобы лист был приоритетным для сходства персонажа.

Экспорт спрайтов

  1. Откройте вкладку Sprites.
  2. Нажмите Export (экспорт) над сеткой персонажа или в блоке Add Sprite персоны.
  3. Выберите Expressions only или Full-body only, чтобы экспортировать текущую категорию, либо All sprites, чтобы экспортировать всё.

Вы получите архив zip с файлами спрайтов и catalog.json с подписями и папками. Экспорт персонажей и персон в собственном формате Marinara и резервные копии профиля тоже сохраняют эти данные.

Смежные руководства

Справка для разработчиков: API спрайтов и ссылки

GET /api/sprites/:ownerId возвращает все спрайты, в папках и вне их. GET /api/sprites/:ownerId/catalog добавляет папки и распределение по ним – для инструментов, которые импортируют по одной папке. У каждого спрайта есть постоянный идентификатор expression, редактируемая подпись label, folderId и URL. Для распределения по папкам используйте ID папок. Массив folders – это сохраненный порядок, который редактор показывает в обратном виде, чтобы новые папки были сверху. Порядок папок не задает приоритет или доступность для агентов.

Обозреватель ресурсов в чате показывает измененные подписи, но вставляет конкретные ссылки card://sprites/<ownerId>/<filename>, которые продолжают работать после переименования. Ссылки в пределах чата, например card://sprites/facial/joy.png, тоже могут разрешать измененную подпись. Существующее совпадающее имя файла имеет приоритет.

Отсутствующие или нечитаемые необязательные метаданные не скрывают пригодные изображения. Если метаданные повреждены, изменения отклоняются, а не заменяют их. Списки только для чтения пропускают недоступные библиотеки, а экспорт и запись отклоняют связанные каталоги владельца.