-
Notifications
You must be signed in to change notification settings - Fork 8
exporting data (ru)
Плагин экспортирует данные из каждого источника в один свой общий внутренний формат. Он состоит из изображения, на котором размещены все кадры анимации (атлас), списка спрайтов (координаты и размеры регионов этого изображения) и списка анимаций, состоящих из кадров, где каждый кадр - это спрайт и длительность его показа.
Основных вариантов раскладки всего два: табличный и упакованный. Но табличный еще разделяется на строчный и столбцовый.
Табличная раскладка атласа удобна, если:
- вам важно, чтобы спрайт не менял свои размеры во время анимации
- вы собираетесь импортировать данные просто как Sprite sheet (изображение атласа и ресурс JSON без хранимого текста, но с полной информацией о спрайтах и анимации в свойстве
data
), которую будете использовать для самостоятельного создания анимаций на ее основе. Например, вы собираетесь анимировать свойствоframe
илиframe_coords
у узлаSprite2D
, потому что плагин их не поддерживает.
Упакованная раскладка выгодна с точки зрения экономии памяти, потому что спрайты в ней обрезаны и расположены компактно.
На границах текстур при рендеринге иногда возникают артефакты - заметные границы, которые бывают двух видов:
-
Последствия неточного масштабирования и расположения спрайтов относительно друг друга, что приводит к появлению мерцающих зазоров, например, между тайлами на тайловых картах. Так же от этого могут попадать в кадр даже ближайшие соседствующие с регионом спрайта пикселы. Это можно наблюдать даже при фильтрации текстур методом ближайшего соседа ("Nearest Neighbor"). Частично от этого помогает настройка "Project Settings -> General -> Rendering -> 2D -> Snapping -> Use GPU Pixel Snap". Но даже она не поможет при нецелочисленном масштабировании.
-
Последствия взаимного влияния крайних пикселов спрайта и соседствующих с ними внешних пикселов атласа при линейном ("Linear") методе фильтрации текстур. Они появляются по причине того, что графический процессор фильтрует не атлас, и не спрайт, а экранные пиксели. И для каждого из них он смешивает цвета ближайших пикселов атласа в пропорциях удалённости. Таким образом, на цвет экранного пиксела рядом с границей спрайта влияет цвет пикселов атласа, находящихся за границей спрайта. Это порождает 2 проблемы:
- Резкие кромки на границах спрайта при общей его сглаженности.
- Проникновение цвета соседних со спрайтом пикселов атласа в регион спрайта.
Здесь нет "серебрянной пули", которая решит все проблемы, но есть несколько способов, каждый из которых хорош при определённом виде применения спрайта.
Спрайты в атласа плотно прилегают друг к другу. Этот способ подойдёт в следующих случаях:
- Текстуры фильтруются методом ближайшего соседа, и не используется дробное масштабирование объектов.
- Текстуры фильтруются линейным методом, но, раскладка атласа табличная, спрайты не обрезаны, и в исходной анимации рисунок никогда не касается границ изображения.
В остальных случаях этот метод будет порождать артефакты.
Этот метод совместим с анимацией узла Sprite2D
с помощью свойств frame
и frame_coord
, если используется табличная раскладка атласа.
Прозрачное разделение добавляет зазор в 1 пиксел, залитый прозрачным цветом между всеми спрайтами атласа. Этот метод убирает влияние цветных пикселов соседних спрайтов по периметру текущего спрайта. Но при этом остается резкая кромка спрайта при линейной фильтрации. Этот метод подойдёт, если:
- Текстуры фильтруются методом ближайшего соседа, и применяется дробное масштабирование. В этом случае цвет соседних пикселов не проникнет в спрайт. Но это не защитит от возникающих иногда зазоров между тайлами, если маппинг региона атласа на канву произойдет неточно (последствия вычислений на числах с плавающей точкой).
- Текстуры фильтруются линейным методом, и это порождает резкую кромку. Но иногда резкая кромка нужна для чёткой состыковки тайлов и некоторых других визуальных объектов.
При этом добавляется зазор в 1 пиксел, залитый указанным цветом между всеми спрайтами атласа а так же между спрайтами и краями атласа. Этот метод может помочь, если используется линейная фильтрация текстур, раскладка атласа табличная, а ваша анимация должна быть вписана в прямоугольную ячейку, вокруг которой всё залито указанным цветом. Это создаст плавный переход от резких границ ячейки к вашему изображению.
Этот метод хорошо защищает от мерцающих зазоров между тайлами при дробном масштабировании, при фильтрации методом ближайшего соседа, так как при смещении отрисовываемого региона атласа на очень маленькое число, из внешней области в него проникнет не соседний спрайт, и не прозрачная обводка, а точно такой же цвет, как и у крайних пикселов спрайта.
Однако для линейной фильтрации этот способ не подходит, потому что создает рваные резкие границы на краях.
При этом способе каждый спрайт расширяется во все стороны на 1 пиксел прозрачного цвета. Это защищает от резких кромок при линейной фильтрации.
Этот метод совместим с анимацией узла Sprite2D
с помощью свойств frame
и frame_coord
, если используется табличная раскладка атласа.
Контент подвала