FOnline Engine
Current 2026.1.118-dev GitHub
Документация Docs/ru/reference/image-format/fofrm.md

Справочник descriptor FOFRM

Сгенерированный справочник. Не редактируйте его напрямую. Обновите BuildTools/ImageFormatInterface.json, затем выполните python BuildTools/docs_image_format.py --write.

Индекс Форматы FOFRM Параметры Запекание Runtime Проверка Канонический JSON Руководство

FOFRM является авторским слоем композиции статических изображений, анимаций, наборов направлений и импортированных legacy-источников. Ссылки задаются относительно каталога descriptor.

Стабильный ID Поле/правило Требование Причина Источник
image-format.field.fps Fps Корневой положительный uint32 Fps заменяет умолчания таймлайна; полное время равно floor(1000*final_count/Fps) и должно давать минимум одну миллисекунду на кадр. Frame/Frames по умолчанию использует10fps; Source сохраняет импортированный покадровый тайминг без явного переопределения. Fps ноль и конфликт с Duration/FrameDurations в секции запрещены. Положительные равномерные границы вычисляются после окончательного выбора кадров; runtime использует полученные покадровые длительности. Source/Tools/ImageBaker-Fofrm.cpp
image-format.field.count Вычисляемое число ссылок Count не является авторским ключом. Каждое направление вычисляет1..65535 итоговых кадров после grid, разворачивания и FrameIndices; число может различаться. Source считается одной входной ссылкой для массивов преобразований. Каждый источник по ссылке сам может содержать несколько кадров. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tools/ImageRecipe.cpp
image-format.field.sequence-offset Offset Offset требует ровно два знаковых целых; пропущенные пары переносятся из корня или предыдущего направления. Неверные пары и значения вне диапазона запрещены. Парсер переносит текущую пару смещений между направлениями. Source/Tools/ImageBaker-Fofrm.cpp
image-format.field.effect Effect Effect удалён и отклоняется до разрешения источников, включая пустое значение и отсутствующий эффект. Render effect выбирает потребитель GUI/map/model/script; бейкер не сериализует эффекты ресурса. Отказ отмечен FO_TEMPORARY_COMPAT(FofrmRetiredEffect, “2026-12-31”). Распознанный ключ должен действовать либо явно отклоняться; неработающего EffectName больше нет. Source/Tools/ImageRecipe.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.direction-section HexDir / SquareDir Безымянный корень всегда задаёт направление 0. Используйте HexDir 1..5 или SquareDir 1..7 с каноническими десятичными индексами, а не градусами. Именованный ноль и старые формы Dir отклоняются до разрешения Source. Отсутствие второй последовательности и индексной секции означает один ракурс; секция без кадров запрещена. SpriteSheet принимает ровно одно направление или GameSettings::MAP_DIR_COUNT направлений. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tools/ImageRecipe.cpp, Source/Client/DefaultSprites.cpp, Source/Tests/Test_ImageBaker.cpp
image-format.field.frame-reference Frame и Frames Используйте только Frame или Frames. Frame содержит один полный относительный путь; Frames — непустой упорядоченный массив String парсера AnyData. Пути с пробелами берите в кавычки; пишите одну ссылку на продолженную строку, сохраняйте повторы. Ссылки объединяются с каталогом descriptor и затем диспетчеризируются по расширению ресурса. Source/Tools/ImageRecipe.cpp, Source/Tools/ImageBaker-Fofrm.cpp
image-format.field.frame-offsets FrameOffsets FrameOffsets задаёт локальную пару int32 X Y на исходную ссылку до разворачивания; без поля нулевые пары. Offset и покадровое размещение складываются без накопления и изменения движения. Пустые/неверные значения, число пар и выход за диапазон запрещены. Source считается одной ссылкой, включая именованные переопределения. Размещение картинки задаётся отдельным авторским ключом и хранится отдельно от импортированных root-motion дельт; пропущенные пары нулевые и не переносятся между направлениями. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tools/ImageImport.h, Source/Tools/ImageBaker.cpp, Source/Tests/Test_ImageBaker.cpp
image-format.field.size Size Size требует ровно два строгих целочисленных токена массива String парсера AnyData в 1..65535 и задаёт точный размер холста в пикселях для каждой ссылки. Корневое значение служит умолчанием всем направлениям; именованный Size локален и не переносится дальше. Size и FrameSizes в одном разделе запрещены. Физическое изменение пикселей отделено от размещения и масштаба при отрисовке. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tests/Test_ImageBaker.cpp
image-format.field.frame-sizes FrameSizes FrameSizes задаёт локальную AnyData-пару целых W H в1..65535 на исходную ссылку до разворачивания. Размер применяется каждому дочернему кадру и заменяет корневой Size; список не наследуется. Пустые/неверные значения, число пар и отсутствие ссылок запрещены. Source считается одной ссылкой, включая именованные переопределения. Число пар соответствует ссылкам, а не развёрнутым кадрам анимации. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tests/Test_ImageBaker.cpp
image-format.field.flattening Flattening вложенной последовательности Frame/Frames добавляют выбранную Main sequence по умолчанию либо InputDir, сохраняя покадровое размещение и движение, но отбрасывая привязку последовательности и другие направления ребёнка. Crop/grid/преобразования выполняются по ссылкам до разворачивания; FrameIndices выбирает итоговую последовательность. Source сохраняет целую коллекцию и покадровое время. Число кадров и длительность независимы по направлениям. Каждое итоговое направление владеет таблицей кадров и таймлайном; привязка дочерней последовательности исключается только при композиции Frame/Frames. Source/Tools/ImageBaker-Fofrm.cpp
image-format.field.timing Timing всей последовательности FOFRM Кадры используют положительную timespan Duration. Файлы требуют целые uint32 мс на кадр и направление. Frame/Frames по умолчанию задают 100 мс на итоговый кадр; Source наследует выбранные длительности, включая повторы/grid. Локальные FrameDurations или Duration заменяют корневые Duration/Fps. Корневой FrameDurations относится только к направлению 0. Границы floor(i*Duration/count) сохраняют общую длительность без нулевых кадров. Обёртка коллекции не теряет тайминг; разворачивание анимированных ссылок сохраняет заданный стандартный темп. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tools/ImageImport.cpp
image-format.field.source Целая коллекция Source Корневой Source переносит целую бинарную или FOFRM-коллекцию с направлениями, смещениями последовательностей/кадров, движением и таймингом. Source и Frame/Frames взаимоисключающие. Корневые преобразования служат умолчанием существующим направлениям; именованные секции переопределяют их без повторения ссылок. Авторский Offset прибавляется к унаследованной привязке последовательности. Явный корневой Fps заменяет тайминг источника. Alias отклоняется с датированным отказом. Наследование целой коллекции и сборка выбранных Main-последовательностей имеют явные отдельные правила размещения и тайминга. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tools/ImageRecipe.cpp
image-format.field.input-dir Параметр InputDir Выбрать существующее направление до преобразования пикселей. Явный корневой InputDir в Source оставляет одну последовательность с её привязкой. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-input-dirs Параметр FrameInputDirs Один индекс входного направления на ссылку до разворачивания. В одной секции исключает InputDir. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-indices Параметр FrameIndices Непустой AnyData-массив целых после grid и разворачивания: порядок и повторы разрешены, индексы вне диапазона запрещены. Корневой список Source действует на все направления, локальный заменяет его. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.crop Параметр Crop Обрезать каждый входной кадр до grid: неотрицательное начало, положительный размер, область целиком внутри исходника. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-crops Параметр FrameCrops Один прямоугольник на ссылку до разворачивания; заменяет унаследованный Crop и исключает локальный Crop. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.grid Параметр Grid Нарезать каждый обрезанный кадр слева направо, затем сверху вниз. Положительные размеры клетки должны делить изображение без остатка; молчаливое обрезание запрещено. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.flip Параметр Flip Отразить каждую клетку до поворота; числовые значения размещения и движения не меняются. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-flips Параметр FrameFlips Один токен отражения на исходную ссылку до grid/разворачивания; исключает локальный Flip. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.rotate Параметр Rotate Повернуть по часовой стрелке после отражения и до resize. Четверть оборота меняет оси изображения, сохраняя векторы размещения и движения. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-rotations Параметр FrameRotations Один поворот по часовой стрелке на исходную ссылку; исключает локальный Rotate. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.canvas Параметр Canvas После resize поместить изображение на прозрачный холст точного размера uint16. Изображение должно помещаться целиком; пиксели удаляет Crop. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-canvases Параметр FrameCanvases Одна пара размера холста на исходную ссылку; исключает локальный Canvas. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.canvas-offset Параметр CanvasOffset Неотрицательное положение от левого верхнего угла Canvas. Требует действующий Canvas и запрещает обрезание. Не меняет Offset. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-canvas-offsets Параметр FrameCanvasOffsets Одна пара размещения на холсте на исходную ссылку; исключает локальный CanvasOffset. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.move Параметр Motion Явная пара int16 заменяет Motion каждого развёрнутого кадра; отсутствие сохраняет импортированное движение. Независима от Offset/FrameOffsets и преобразований пикселей. Старые ключи Move/FrameMoves отклоняются до разрешения Source с временным маркером FofrmLegacyMotionKeys. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp, Source/Tools/ImageRecipe.cpp
image-format.field.frame-moves Параметр FrameMotions Одна пара движения int16 на ссылку до разворачивания. Исключает локальный Motion; не накапливается как размещение. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.resample Параметр Resample Nearest копирует исходные каналы. Bilinear использует Q16-центры пикселей. Area учитывает точное рациональное покрытие при уменьшении или равном размере; увеличение запрещено. Равный размер сохраняет байты. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.pixel-usage Параметр PixelUsage Color фильтрует с premultiplied alpha. Data независимо фильтрует четыре канала. Normal фильтрует знаковые RGB-векторы, нормализует целочисленным корнем, заменяет ноль на +Z и независимо фильтрует alpha. Nearest и равный размер сохраняют байты. ColorSpace запрещён для Data/Normal. Data/Normal сохраняют все каналы до выхода: alpha mesh/crop отключены, включая владельцев общих пикселей. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.color-space Параметр ColorSpace Фильтрация только Color. Linear декодирует фиксированной таблицей sRGB linear16 до интерполяции premultiplied alpha, затем выбирает ближайшую запись таблицы (равенство вверх). Encoded сохраняет прежние Q16-байты. Порядок преобразований и число исходных ссылок заданы явно. Source/Tools/ImageTransforms.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.duration Параметр Duration Положительное uint32 время всей последовательности; минимум ms на итоговый кадр. Равномерные floor-границы сохраняют сумму. Корневой Duration служит умолчанием; локальные Duration/FrameDurations заменяют его. Конфликты с Fps/FrameDurations в секции запрещены. Размер таймлайна соответствует итоговой логической последовательности. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tests/Test_ImageTransforms.cpp
image-format.field.frame-durations Параметр FrameDurations Положительные uint32 длительности AnyData: ровно одна на итоговый кадр после выбора; сумма uint32. Только локальный список, не по ссылкам и без наследования между направлениями. Исключает Duration/Fps в своей секции. Размер таймлайна соответствует итоговой логической последовательности. Source/Tools/ImageBaker-Fofrm.cpp, Source/Tests/Test_ImageTransforms.cpp
Введите запрос.